從防禦者視角來看APT攻擊

  前言

  APT防禦的重要性毋庸諱言,為了幫助各位師傅在防禦方面建立一個總體認識,本文會將APT防禦方法分為三類,分別是:監控、檢測和緩解技術,並分別進行梳理,介紹分析代表性技術。這一篇分析現有的監控技術。

  APT

  這裡不談APT概念,就是分享兩張最近看到的覺得描述APT非常契合的圖。

  如果我們把APT分成6個攻擊階段的話,一種經典的劃分方式如下

image-20220313215222268.png

 

  或者也可以畫成金字塔

image-20220313215257501.png

 

  這裡我們假設攻擊目標位於金字塔的頂端,側面表示攻擊進化的環境如物理平面、用戶平面、網路平面、應用平面等。金字塔平面依賴於每個組織的細節,並根據記錄事件的環境定義。假設APT組織能夠全面了解目標的所有設施以確定達到目標G的可行平面。那麼為了達到目標G,攻擊者可以探索漏洞並通過從一個或多個平面「爬行」接近目標。因此,最終檢測到的APT就像一棵跨越多個平面的攻擊樹。

  這麼說不形象,我們可以上面這個金字塔展開

image-20220313215447803.png

 

  這個圖就很直觀了,圖中小點代表平面中記錄的事件,而彩色連接的事件代表相關事件,其表示可能的攻擊。path1表示物理平面的相關事件,path2和path3表示涉及多個平面的相關事件。

  監控

  硬碟監控

  這主要針對落地文件而言。

  每個終端都需要通過反病毒、防火牆或必要的內容過濾來監控任何惡意行為。對系統上運行的軟體進行必要的修補程式,可以消除已知的漏洞,從而減少攻擊者的入侵點,否則這些漏洞可能會將惡意軟體傳播到網路中容易受到攻擊的地方。這方面的技術其實比較成熟了,而且並不適用於APT攻擊,這裡就不展開說明了。

  記憶體監控

  現在更加流行的方法是記憶體監控,這主要針對現在流行無文件、不落地攻擊手段而言的,這種攻擊手段一般通過使用一個已經在記憶體中運行的進行來執行惡意功能,由於沒有單獨的進程在後台運行,所以不會留下任何軌跡。比如卡巴斯基發現的Duqu,就是運行在一個已經運行的進程的記憶體中。

  這個領域有很多優秀的工作,這裡簡單介紹幾個。

  1通過分析Stuxnet、Duqu、Flame和Red October使用惡意軟體進行APT攻擊的活動進行檢測,其特點比較如下。

image-20220312223305579.png

 

  他們介紹了APT攻擊者所使用的規避技術,如rootkit功能、負載變化的端點掃描、網路流量加密和混淆、隱寫術、記憶體中惡意軟體的執行和假數字證書等。針對這些攻擊技術,作者建議通過修補程式管理、強大的網路訪問控制和監控、嚴格的互聯網政策、協議感知的安全解決方案、監控DNS查詢、監控異常域的訪問、監控網路連接、蜜罐和蜜網,以及標準的基於主機的入侵防禦系統作為APT的防禦對策。

 

  2提取出了不同類型的惡意軟體的特徵,並提出了一個通用的解決方案用於檢測不同類型的惡意軟體。他們收集惡意軟體和良性樣本作為訓練數據,並從中提取污點圖(taint graph)。然後污點圖轉換成一個特徵向量,在這個特徵向量上應用標準分類演算法來訓練模型。這個模型訓練完成後被用來識別系統上的惡意行為。他們使用了不同惡意軟體鍵盤記錄、密碼竊取、後門等的共同特徵。這些惡意軟體通常表現出的特徵是異常的資訊訪問和處理行為。例如,鍵盤記錄和密碼竊取會攔截擊鍵輸入。在比如說,為了不被發現,後門要麼使用不常見的協議ICMP,要麼創建一個原始套接字,要麼攔截網路堆棧來與遠程攻擊者通訊。基於ICMP的後門訪問ICMP流量,基於原始套接字的後門訪問所有具有相同協議號的報文。例如,TCP原始套接字可以接收到所有的TCP報文,這種後門攔截網路棧的行為類似於網路嗅探器,對網路流量進行竊聽以獲取有價值的資訊。這些特徵都被作者利用來進行檢測。整個系統結構設計如下

image-20220312214532830.png

 

  下圖是一個污點圖的例子,反映了Windows用戶身份驗證的過程。當一個密碼竊取器在後台運行時,它捕捉到密碼並將其保存到它的日誌文件「c: ginallog .log」中。

image-20220312214635738.png

 

  再來看一個用污點圖表示Google Desktop處理傳入的web頁面的例子

image-20220312214806997.png

 

  該方案檢測結果如下

image-20220312214650652.png

 

 

  3提出了利用硬體輔助進行惡意軟體檢測的方案。作者發現,與運行的正常軟體相比,受感染的應用程式運行時會修改控制流/數據結構,而這種行為會反映在它的記憶體訪問模式中。所以可以通過處理器內監視記憶體訪問來檢測,其記憶體訪問會查看虛擬地址以獲得更一致的簽名。他們使用系統調用、函數調用和完整的程式運行來檢測受感染程式的惡意行為。研究表明,不論是對用戶級還是和內核級威脅都是可用的,並且針對內核級rootkit實現高精度的檢測。其設計的框架如下所示

image-20220312222923011.png

 

  上半部分是訓練,下半部分是運行檢測。當使用system call檢測rootkit時,結果如下

image-20220312223053449.png

 

  可以看到,準確率非常的高,而且誤報率很低。

  4通過虛擬記憶體消耗來識別應用程式進程的異常行為,實現對惡意軟體的檢測。因為作者認為相比於網路操作或CPU利用率,記憶體使用的波動性較小,不易受到影響,而且使用的是虛擬記憶體而不是物理記憶體,因為後者不包含交換到硬碟的記憶體量。首先使用進程和psutil收集目標機器的記憶體指紋。然後通過機器學習演算法,基於指紋、閾值和閾值因子為每個應用計算一個模型來檢測異常行為。下面用圖的方式可以幫助大家更好的理解其方案。

  下圖是三個進程的虛擬記憶體的時間序列

image-20220312215302732.png

 

  從時間序列中捕獲的滑動窗口如下所示

image-20220312215355034.png

 

  當窗口大小為25時,6個進程的特徵分布,圖中不同顏色代表不同應用

image-20220312215506826.png

 

  下圖展示了訓練階段的前三個步驟,可視化閾值。初始閾值為零;對於第二個數據點,它擴展到a中間;在第三個點上,它擴展到b

image-20220312215551514.png

 

  流量監控

  APT攻擊最關鍵的部分就是C&C通訊行為,而且通訊並不只發生一次,通常是在系統第一次被攻破後為了數據傳輸而反覆進行。在終端層面監視任何帶有新目的IP的網路數據包、異常payload的數據包以及發送到同一IP的大量數據包等特徵有助於識別來自終端的任何可疑行為。

從流量中可以看到很多關鍵資訊。

  先看最簡單的,從http請求中就可以看出GhosNet發往C2伺服器的請求

  這是php版本的

image-20220312221207278.png

  這是asp版本的

image-20220312221157826.png

 

  還可以從流量中看到challenge資訊,如下所示就是RSA Poisonlvy樣本的256位元組的challenge請求

image-20220312221411165.png

 

  這在一次成功的TCP握手之後,由poisivy生成的網路流量,它從256位元組的看似隨機的數據開始。這些位元組組成一個challenge請求,以查看「客戶端」RAT控制端是否配置了嵌入在「伺服器」即受害者中的密碼。

  同樣一個樣本,還能看到keep-alive請求

image-20220312221521651.png

 

  接下來我們看看這方面一些經典的工作。

  5提出的方案可以從數千個終端中檢測出少數表現出可疑活動的主機。他們通過觀察多個主機間APT的關鍵階段,並將每個主機的分析結果與它們的過去以及所觀察到的網路中的其他主機進行比較,從而生成一個排名前k個的可疑主機列表。由於他們的方案不需要檢測載荷,所以針對加密信道進行檢測也是可行的。其方案的示意圖如下

image-20220312220007322.png

 

  6重點關注跟蹤各種網路對象如主機、主機組和網路,並確定它們是否存在威脅。他們將網路流量活動從網路流量採集到威脅分析分為五層,從多個不同的網路感測器如網路流、NIDS、蜜罐中收集數據,然後在多個時間段提取和聚合特徵,以創建一個樣本空間。然後使用有監督模型進行識別。分層示意如下所示,大多數技術都是在第一層運行,處理來自感測器的原始數據和事件。而作者的方法首先轉換數據,即第2層,然後在第3層及以上應用分類模型

image-20220312220325246.png

 

  這篇工作的可視化做得很棒,如下所示

image-20220312220447172.png

 

  有三種不同的可視化顯示了UDP行為右上TCP行為左上和所有協議底部。每個點代表一個行為特徵空間中的一個主機,這些圖顯示了主機從「源到sink行為」,接收數據的主機在左邊,向系統發送數據的主機在右邊。

  還對訓練完成的SVM進行了可視化如下所示

image-20220312220722379.png

 

  beacon通訊在超平面的右下角,表明其檢測效果很不錯。

  7是安全產商TrendMicro發布的APT報告,裡面分析了不同的APT活動,如Taidoor、IXESHE、Enfal和Sykipot,這些惡意軟體使用已知的協議HTTPC&C伺服器建立通訊,通常通過三個埠80、443、8080配置。攻擊者通常使用這些埠,因為他們知道通常只有這些埠在防火牆級別是開放的。但是,這裡的關鍵在於,攻擊者可能會使用這些埠來傳遞不匹配的流量類型,例如在80埠發送任何非http流量或在443埠發送任何非https流量。可以通過檢測這一特點實現預警。此外,作者認為,監視網路流量的時間和大小是另一個需要考慮的方面,因為惡意軟體通常會在給定的時間間隔向C&C伺服器發送beacon,因此使用DNS請求或url監視時間間隔可以對此進行檢測。另外,在多數情況下,儘管設計好的惡意軟體是使用HTTP進行C2活動的,但它們通常使用API發送請求,所以可以通過分析HTTP頭資訊將API調用與典型的瀏覽器活動區分開來以實現檢測。

  8利用基於流量的分析來檢測APT,而不是基於網路,基於流量的分析將網路流量聚合在一起,從而減少了需要分析的數據量,之後對APT通訊進行統計建模,成功設計出確定性的檢測特徵。其設計的框架如下所示

image-20220312222609427.png

 

  9則將APT攻擊與內部威脅的結合起來進行分析,將其表述為一個雙層博弈問題,並進一步確定了博弈雙方防禦者與APT攻擊者的最佳對策,並證明存在納什均衡。防禦者、APT攻擊者和內部威脅人員的相互作用表示如下

image-20220312222103146.png

 

  文中給了很多數學公式推導,這裡不再重複了,直接看結果吧

image-20220312222314253.png

 

  圖3表示攻擊者和防禦者在每個時間點的動作。我們可以看到攻擊者的穩定狀態下的動作,即α是0.2,而防禦者的穩定狀態下的動作,即β是1。圖4為系統狀態向穩定狀態的演化過程。穩定狀態為0.1667。

表明最後確實達到了納什均衡。

  程式碼監控

  源程式碼中可能存在的漏洞可以通過靜態分析技術如污點分析和數據流分析等技術來識別。此外,可以在執行期間監視程式碼的性能,並確保程式碼在其範圍內運行,不會訪問未經授權的記憶體區域與其他資源,這樣可以更早地識別出威脅。這一塊是一個非常大的領域,我們實驗室有其他小夥伴在研究,這裡也不展開了,後續有機會的話單獨發文與各位師傅一起學習。

  日誌監控

  有很多日誌都有助於檢測,比如記憶體使用日誌、CPU使用日誌、應用程式執行日誌、系統日誌等。

  日誌種類、數量都很多,不同日誌之間記錄的格式又是不同的,怎麼將其聯繫起來進行分析是非常重要的一個問題。

  10結合了網路日誌和主機日誌來檢測惡意活動。他們從這些日誌中提取了4類特徵,身份特徵,基於網路流量的特徵,基於服務的特徵和基於認證的特徵,然後使用皮爾遜相關係數來減少冗餘,然後刪除那些對聚類沒有貢獻的特徵,接著通過聚類以識別惡意活動。

  下圖是據源IP地址聚合的防火牆數據中所選特徵的經驗累積分布函數

image-20220313200410545.png

 

  下圖是由源IP地址聚合的系統日誌數據中所選特徵的經驗累積分布函數。

image-20220313200435022.png

 

  在原始的10維空間中進行聚類,使用DBSCAN聚類演算法,對於參數值ε = 0.15和minPts = 21的防火牆數據,投影到前三個主成分用於可視化,效果如下

image-20220313200536662.png

 

  在指定參數後,DBSCAN識別出6個集群和一小組離群點。雖然從圖中看不出來,但在進行聚類的高維空間中,聚類之間的距離實際上相當遠。

  在原始的28維空間中進行聚類。結合防火牆和系統日誌數據的DBSCAN聚類,參數值設ε = 0.25和minPts = 20,投影到前三個主成分PC進行可視化

image-20220313200637740.png

 

  從上圖中可以看到有四個簇和一組離群點。雖然聚類在圖中看起來不是可分離的,但在進行聚類的高維空間中,它們是相當遙遠的。其中簇1代表正常行為,而簇2、3和4被分類為異常行為。為了分析攻擊的異常簇,我們計算每個簇的歸一化平均特徵向量,如下所示

image-20220313201232976.png

 

  每一個小表的橫軸是特徵,特徵1 -18對應於從系統日誌數據中提取的特性,而特徵19 – 28對應於從防火牆日誌中提取的特性。當根據異常簇的正常值對其排序時,我們可以認為簇2最有可能是惡意的,其次是簇4和簇3。由於簇群3隻有唯一的IP地址,所以我們認為它只包含良性主機。

  11分析DNS日誌來識別受感染的內部主機與外部惡意域名之間的的「beacon」活動,他們認為這種行為會在網路流和DNS日誌中留下自己的記錄。作者提出了一種DNS日誌分析和事件關聯的方法,通過考慮低延遲間隔時間,他們假設受感染的主機每天會與C&C伺服器通訊幾次。通過識別受感染的主機,它們將與相同可疑域通訊的其他主機連接起來。首先對DNS日誌進行預處理,過濾不需要的數據,僅從DNS日誌中獲取IPv4地址。然後以圖的方式表示元數據,圖的頂點表示主機IP地址和域名,而每條邊對應於從內部主機到外部機器的一個查詢。

  在Cobalt Strike中的Beacon大概就是如下所示

image-20220313201526084.png

 

  它可以使用SMB協議創建一個beacon,當然也可以使用HTTP或DNS等協議。初始任務是啟動一個beacon偵聽器來使用惡意payload並指定用於傳輸流量的埠號,payload提供兩個通訊通道。以上圖為例,當域列表被提供之後,惡意軟體會檢查任務並通過HTTP或DNS下載它們。之後每次都要通過這些域,必須使用beacon向C2發送訊號。如果一個域失敗或被阻塞,惡意軟體將進入休眠狀態,直到下一個域可用。

  該作者提出的基於DNS A記錄進行迭代檢測的方案流程如下

image-20220313201822435.png

 

 

  12同樣通過DNS日誌分析來檢測APT惡意軟體和C&C通訊活動。他們使用移動設備的DNS日誌,他們的方法簡單來說就是給C2域名和普通域名打分。為了區分正常和異常C&C域,他們根據內部設備發起的DNS請求的數量,選擇正常域,提取15個特徵,分為4大類:基於DNS請求和應答的特徵,基於域的特徵,基於時間的特徵,以及基於whois的特徵,然後通過分數進行識別。流程如下所示

image-20220313202148363.png

 

  所選的基於域名的特徵總結如下表

image-20220313202214514.png

 

  下圖是驗證時,繪製的C&C域與普通域之間的距離差。

image-20220313202320306.png

 

  上圖中x-軸代表不同的測試示例,前60個是C&C域名,後170個是普通域名。我們注意到,幾乎所有C&C域的平均距離都大於0.2。

下圖則展示了不同閾值的惡意軟體C&C域的檢測性能。檢測性能表明,當參數設置為 0.2時,異常檢測演算法的誤報率和誤報率最低。

image-20220313202436454.png

 

  而針對日誌中冗餘數據、臟數據過多的問題,13提出了從臟日誌中提取資訊和知識的方法。首先通過網路配置對日誌數據進行過濾和規範化,然後將這些標準化數據處理成不同的特徵,最後對這些提取的特徵進行聚類,以確定任何可疑活動。他們使用了web代理日誌、DHCP伺服器日誌、VPN伺服器遠程連接日誌、認證嘗試日誌、防病毒掃描日誌等不同來源的日誌,然後根據目標、主機、策略和流量提取特徵,通過適應性k-means聚類演算法對特徵進行聚類,最後成功找出行為與正常主機有顯著差異的主機,這些主機就是被攻陷的機器。

  參考

  1.N. Virvilis and D. Gritzalis, 「The big four-what we did wrong in advanced persistent threat detection?」 in Availability, Reliability and Security ARES, 2013 Eighth International Conference on. IEEE, 2013, pp. 248–254.

  2.H. Yin, D. Song, M. Egele, C. Kruegel, and E. Kirda, 「Panorama: capturing system-wide information flow for malware detection and analysis,」 in Proceedings of the 14th ACM conference on Computer and communications security. ACM, 2007, pp. 116–127.

  3.Z. Xu, S. Ray, P. Subramanyan, and S. Malik, 「Malware detection using machine learning based analysis of virtual memory access patterns,」 in 2017 Design, Automation & Test in Europe Conference & Exhibition DATE. IEEE, 2017, pp. 169–174.

  4.C. Vaas and J. Happa, 「Detecting disguised processes using application- behavior profiling,」 in Technologies for Homeland Security HST, 2017 IEEE International Symposium on. IEEE, 2017, pp. 1–6.

  5.M. Marchetti, F. Pierazzi, M. Colajanni, and A. Guido, 「Analysis of high volumes of network traffic for advanced persistent threat detection,」 Computer Networks, vol. 109, pp. 127–141, 2016.

  6.O. McCusker, S. Brunza, and D. Dasgupta, 「Deriving behavior primi- tives from aggregate network features using support vector machines,」 in Cyber Conflict CyCon, 2013 5th International Conference on. IEEE, 2013, pp. 1–18.

  7.N. Villeneuve and J. Bennett, 「Detecting apt activity with network traffic analysis,」 Trend Micro Incorporated Research Paper, 2012.

  8.A. Vance, 「Flow based analysis of advanced persistent threats detecting targeted attacks in cloud computing,」 in Problems of Infocommuni- cations Science and Technology, 2014 First International Scientific- Practical Conference. IEEE, 2014, pp. 173–176.

  9.P. Hu, H. Li, H. Fu, D. Cansever, and P. Mohapatra, 「Dynamic defense strategy against advanced persistent threat with insiders,」 in Computer Communications INFOCOM, 2015 IEEE Conference on. IEEE, 2015, pp. 747–755.

  10.A. Bohara, U. Thakore, and W. H. Sanders, 「Intrusion detection in enterprise systems by combining and clustering diverse monitor data,」 in Proceedings of the Symposium and Bootcamp on the Science of Security. ACM, 2016, pp. 7–16.

  11.A. Shalaginov, K. Franke, and X. Huang, 「Malware beaconing detec- tion by mining large-scale dns logs for targeted attack identification,」 in 18th International Conference on Computational Intelligence in Security Information Systems. WASET, 2016.

  12.W. Niu, X. Zhang, G. Yang, J. Zhu, and Z. Ren, 「Identifying apt malware domain based on mobile dns logging,」 Mathematical Problems in Engineering, vol. 2017, 2017.

  13.T.-F. Yen, A. Oprea, K. Onarlioglu, T. Leetham, W. Robertson, A. Juels, and E. Kirda, 「Beehive: Large-scale log analysis for detecting sus- picious activity in enterprise networks,」 in Proceedings of the 29th Annual Computer Security Applications Conference. ACM, 2013, pp. 199–208.

  更多靶場實驗練習、網安學習資料,請點擊這裡>>