[系统安全] 三十一.恶意代码检测(1)恶意代码攻击溯源及恶意样本分析
您可能之前看到過我寫的類似文章,為什么還要重復撰寫呢?只是想更好地幫助初學者了解病毒逆向分析和系統安全,更加成體系且不破壞之前的系列。因此,我重新開設了這個專欄,準備系統整理和深入學習系統安全、逆向分析和惡意代碼檢測,“系統安全”系列文章會更加聚焦,更加系統,更加深入,也是作者的慢慢成長史。換專業確實挺難的,逆向分析也是塊硬骨頭,但我也試試,看看自己未來四年究竟能將它學到什么程度,漫漫長征路,偏向虎山行。享受過程,一起加油~
前文分享了逆向知識,利用Cheat Engine工具逆向分析游戲CS1.6,并實現無限子彈功能。這篇文章將結合作者的《系統安全前沿》作業,論文及綠盟李東宏老師的博客及宋老師的論文,從產業界和學術界分別詳細講解惡意代碼攻擊溯源的相關知識。在學術界方面,用類似于綜述來介紹攻擊追蹤溯源的不同方法;在產業界方面,主要參考李東宏老師從企業惡意樣本分析的角度介紹溯源工作。關于攻擊溯源的博客和論文都比較少,希望這篇文章對您有所幫助,如果文章中存在錯誤、理解不到位或侵權的地方,還請告知作者與海涵。且看且珍惜,加油~
作者作為網絡安全的小白,分享一些自學基礎教程給大家,主要是關于安全工具和實踐操作的在線筆記,希望您們喜歡。同時,更希望您能與我一起操作和進步,后續將深入學習網絡安全和系統安全知識并分享相關實驗。總之,希望該系列文章對博友有所幫助,寫文不易,大神們不喜勿噴,謝謝!如果文章對您有幫助,將是我創作的最大動力,點贊、評論、私聊均可,一起加油喔~
文章目錄
- 一.前言
- 二.惡意代碼攻擊溯源的相關研究
- 1.惡意代碼溯源
- 2.追蹤溯源案例
- 三.學術界惡意代碼溯源
- 1.特征提取
- 2.特征預處理
- 3.相似性計算
- 4.同源判定
- 四.產業界惡意代碼溯源
- 1.惡意攻擊流程及溯源方法
- 2.域名/IP
- 3.入侵日志
- 4.全流量分析
- 5.同源分析
- 6.攻擊模型
- 五.總結
作者的github資源:
- 逆向分析:https://github.com/eastmountyxz/SystemSecurity-ReverseAnalysis
- 網絡安全:https://github.com/eastmountyxz/NetworkSecuritySelf-study
從2019年7月開始,我來到了一個陌生的專業——網絡空間安全。初入安全領域,是非常痛苦和難受的,要學的東西太多、涉及面太廣,但好在自己通過分享100篇“網絡安全自學”系列文章,艱難前行著。感恩這一年相識、相知、相趣的安全大佬和朋友們,如果寫得不好或不足之處,還請大家海涵!
接下來我將開啟新的安全系列,叫“系統安全”,也是免費的100篇文章,作者將更加深入的去研究惡意樣本分析、逆向分析、內網滲透、網絡攻防實戰等,也將通過在線筆記和實踐操作的形式分享與博友們學習,希望能與您一起進步,加油~
- 推薦前文:網絡安全自學篇系列-100篇
前文分析:
- [系統安全] 一.什么是逆向分析、逆向分析基礎及經典掃雷游戲逆向
- [系統安全] 二.如何學好逆向分析及呂布傳游戲逆向案例
- [系統安全] 三.IDA Pro反匯編工具初識及逆向工程解密實戰
- [系統安全] 四.OllyDbg動態分析工具基礎用法及Crakeme逆向
- [系統安全] 五.OllyDbg和Cheat Engine工具逆向分析植物大戰僵尸游戲
- [系統安全] 六.逆向分析之條件語句和循環語句源碼還原及流程控制
- [系統安全] 七.逆向分析之PE病毒原理、C++實現文件加解密及OllyDbg逆向
- [系統安全] 八.Windows漏洞利用之CVE-2019-0708復現及藍屏攻擊
- [系統安全] 九.Windows漏洞利用之MS08-067遠程代碼執行漏洞復現及深度提權
- [系統安全] 十.Windows漏洞利用之SMBv3服務遠程代碼執行漏洞(CVE-2020-0796)復現
- [系統安全] 十一.那些年的熊貓燒香及PE病毒行為機理分析
- [系統安全] 十二.熊貓燒香病毒IDA和OD逆向分析(上)病毒初始化
- [系統安全] 十三.熊貓燒香病毒IDA和OD逆向分析(中)病毒釋放機理
- [系統安全] 十四.熊貓燒香病毒IDA和OD逆向分析–病毒釋放過程(下)
- [系統安全] 十五.Chrome瀏覽器保留密碼功能滲透解析、藍屏漏洞及某音樂軟件漏洞復現
- [系統安全] 十六.PE文件逆向基礎知識(PE解析、PE編輯工具和PE修改)
- [系統安全] 十七.Windows PE病毒概念、分類及感染方式詳解
- [系統安全] 十八.病毒攻防機理及WinRAR惡意劫持漏洞(腳本病毒、自啟動、定時關機、藍屏攻擊)
- [系統安全] 十九.宏病毒之入門基礎、防御措施、自發郵件及APT28宏樣本分析
- [系統安全] 二十.PE數字簽名之(上)什么是數字簽名及Signtool簽名工具詳解
- [系統安全] 二十一.PE數字簽名之(中)Signcode、PEView、010Editor、Asn1View工具用法
- [系統安全] 二十二.PE數字簽名之(下)微軟證書漏洞CVE-2020-0601復現及Windows驗證機制分析
- [系統安全] 二十三.逆向分析之OllyDbg動態調試復習及TraceMe案例分析
- [系統安全] 二十四.逆向分析之OllyDbg調試INT3斷點、反調試、硬件斷點與內存斷點
- [系統安全] 二十五.WannaCry勒索病毒分析 (1)Python復現永恒之藍漏洞實現勒索加密
- [系統安全] 二十六.WannaCry勒索病毒分析 (2)MS17-010漏洞利用及病毒解析
- [系統安全] 二十七.WannaCry勒索病毒分析 (3)蠕蟲傳播機制解析及IDA和OD逆向
- [系統安全] 二十八.WannaCry勒索病毒分析 (4)全網"最"詳細的蠕蟲傳播機制解讀
- [系統安全] 二十九.深信服分享之外部威脅防護和勒索病毒對抗
- [系統安全] 三十.CS逆向分析 (1)你的游戲子彈用完了嗎?Cheat Engine工具入門普及
聲明:本人堅決反對利用教學方法進行犯罪的行為,一切犯罪行為必將受到嚴懲,綠色網絡需要我們共同維護,更推薦大家了解它們背后的原理,更好地進行防護。該樣本不會分享給大家,分析工具會分享。(參考文獻見后)
一.前言
近年來,網絡安全事件和惡意代碼攻擊層出不窮,它們給國家、社會和個人帶來了嚴重的危害,如分布式拒絕服務攻擊(DDoS)、基于僵尸網絡(Botnet)的攻擊、勒索病毒WannaCry、高級可持續威脅(APT)攻擊、利用遠程控制木馬的信息竊取等。
2017年以來,惡意代碼數量依然呈上升的趨勢,尤其是新型惡意代碼,其數量始終呈逐年遞增狀態,這對網絡空間安全造成了極大的威脅。在這些惡意代碼攻擊中, 攻擊者會向目標主機(受害主機),發送特定的攻擊數據包或執行惡意行為。如果能追蹤這些攻擊數據包的來源,定位攻擊者的真實位置,受害主機不但可以采用應對措施,如在合適位置過濾攻擊數據包,而且可以對攻擊者采取法律手段。因此在網絡取證和安全防御領域,網絡攻擊溯源一直是一個熱點問題。
下圖展示了APT組織Lazarus(APT38)的重大攻擊時間線。如果某次攻擊發生時或發生前,我們能夠追蹤溯源到是某個組織發起的,那是不是就能有效避免一次安全攻擊呢?
強推這篇文章:APT組織Lazarus的攻擊歷程 - Freebuf深信服團隊
網絡攻擊追蹤溯源旨在利用各種手段追蹤網絡攻擊的發起者。相關技術提供了定位攻擊源和攻擊路徑,針對性反制或抑制網絡攻擊,以及網絡取證能力,其在網絡安全領域具有非常重要的價值。當前,網絡空間安全形勢日益復雜,入侵者的攻擊手段不斷提升,其躲避追蹤溯源的手段也日益先進,如匿名網絡、網絡跳板、暗網、網絡隱蔽信道、隱寫術等方法在網絡攻擊事件中大量使用,這些都給網絡攻擊行為的追蹤溯源工作帶來了巨大的技術挑戰。
傳統的惡意代碼攻擊溯源方法是通過單個組織的技術力量,獲取局部的攻擊相關信息,無法構建完整的攻擊鏈條,一旦攻擊鏈中斷,往往會使得前期大量的溯源工作變得毫無價值。同時,面對可持續、高威脅、高復雜的大規模網絡攻擊,沒有深入分析攻擊組織之間的關系,缺乏利用深層次惡意代碼的語義知識,后續學術界也提出了一些解決措施。
下圖展示了Lazarus盜竊孟加拉國央行的行動流程,通過Alreay攻擊組件篡改SWIFT軟件,使得黑客能夠操作銀行賬號任意進行轉賬,從而竊取了8100萬美元。同時,在2017年最早版本的WannaCry病毒中,安全廠商發現了其中存在著Lazarus使用過的代碼,從而判斷該病毒是由Lazarus制作的。Lazarus確實是一支非常厲害的APT組織。
為了進一步震懾黑客組織與網絡犯罪活動,目前學術界和產業界均展開了惡意代碼溯源分析與研究工作。其基本思路是:
- 同源分析: 利用惡意樣本間的同源關系發現溯源痕跡,并根據它們出現的前后關系判定變體來源。惡意代碼同源性分析,其目的是判斷不同的惡意代碼是否源自同一套惡意代碼或是否由同一個作者、團隊編寫,其是否具有內在關聯性、相似性。從溯源目標上來看,可分為惡意代碼家族溯源及作者溯源。
- 家族溯源: 家族變體是已有惡意代碼在不斷的對抗或功能進化中生成的新型惡意代碼,針對變體的家族溯源是通過提取其特征數據及代碼片段,分析它們與已知樣本的同源關系,進而推測可疑惡意樣本的家族。例如,Kinable等人提取惡意代碼的系統調用圖,采用圖匹配的方式比較惡意代碼的相似性,識別出同源樣本,進行家族分類。
- 作者溯源: 惡意代碼作者溯源即通過分析和提取惡意代碼的相關特征,定位出惡意代碼作者特征,揭示出樣本間的同源關系,進而溯源到已知的作者或組織。例如,Gostev等通過分析Stuxnet與Duqu所用的驅動文件在編譯平臺、時間、代碼等方面的同源關系,實現了對它們作者的溯源。2015年,針對中國的某APT攻擊采用了至少4種不同的程序形態、不同編碼風格和不同攻擊原理的木馬程序,潛伏3年之久,最終360天眼利用多維度的“大數據”分析技術進行同源性分析,進而溯源到“海蓮花”黑客組織。
由此可見,發現樣本間的同源關系對于惡意代碼家族和作者的溯源,甚至對攻擊組織的溯源以及攻擊場景還原、攻擊防范等均具有重要意義。
二.惡意代碼攻擊溯源的相關研究
1.惡意代碼溯源
在與惡意樣本的的對抗過程中,惡意軟件分析和檢測技術也在不斷發展。基于靜態分析的檢測、基于動態分析的檢測以及基于機器學習的檢測等技術不斷涌現。基于靜態分析的檢測對非混淆樣本更為準確,而基于動態分析的檢測在檢測混淆惡意軟件方面表現更為出色;基于機器學習的檢測是通過對大規模惡意樣本進行特征提取(如 API(application programming interface)、CFG(control flow graph)、關鍵字符串值等),然后采用機器學習算法(例如分類或聚類)訓練樣本,以構建模型判斷軟件的惡意特性。這為安全研究人員提供了良好的輔助功能,有效地提高了大規模惡意軟件的檢測速度。
惡意代碼溯源: 是指通過分析惡意代碼生成、傳播的規律以及惡意代碼之間衍生的關聯性,基于目標惡意代碼的特性實現對惡意代碼源頭的追蹤。了解惡意代碼的演化,有助于更好地把握惡意代碼的發展趨勢,為攻擊追蹤溯源提供相關啟示。文獻[5]從時間維度給出了惡意軟件典型功能演變歷程,并將惡意軟件的演化歷程分為3個階段。
- 第一階段為1971年至1999年,惡意軟件主要以原始程序的形式出現,惡意軟件功能單一,破壞程度小,無對抗行為。
- 第二階段為2000年至2008年,惡意軟件的破壞性增強,惡意軟件及其工具包數量急劇增長,借助網絡感染速率加快,電子郵件類蠕蟲、受損網站、SQL注入攻擊成為主流。
- 第三階段為2000年之后,經濟利益和國家利益的驅使下的惡意軟件存在團隊協作緊密、功能日趨復雜、可持續性強及對抗性強等特點。
PC端惡意軟件的演化及影響詳見下表:
| 1971 | Creeper | 一般程序 | 實驗 | 能夠在計算機之間移動 |
| 1974 | Wabbit | 一般程序 | 致使系統奔潰 | 具有自我復制功能 |
| 1982 | Elk cloner | 病毒 | 克隆 | 具有傳播、自我復制功能 |
| 1986 | PC-Write trojan | 病毒 | 測試公司軟件漏洞 | 可以感染MS-DOS計算機 |
| 1991 | Michelangelo virus | 病毒 | 在3月6日擦除硬盤中信息 | 感染,擦除硬盤信息 |
| 1999 | Melissa virus | 病毒 | 群發郵件 | 感染計算機,獲取其outlook地址薄,群發郵件 |
| 2000 | ILOVEYOU worm | 蠕蟲 | 損害大型企業和政府機構 | 以良性主題發送電子郵件傳播,感染5000萬臺計算機,蔓延至全球. |
| 2001 | Annna Kournikova virus | 病毒 | 傳播惡意軟件,進行破壞 | 將惡意軟件隱藏在吸引人的照片中,通過電子郵件發送進行傳播 |
| 2003 | SQL slammer worm | 蠕蟲 | 感染計算機實施破壞 | 利用漏洞,傳播速度快,感染范圍廣 |
| 2005 | Koobface virus | 病毒 | 針對社交網絡進行攻擊 | 感染PC然后傳播到社交網站 |
| 2008 | ConFicker worm | 蠕蟲 | 造成自Slammer出現以來最嚴重破壞 | 感染并實施破壞 |
| 2010 | Stuxnet worm | 蠕蟲 | 攻擊伊朗的核電站,包括其硬件與軟件功能 | 具有APT團隊開發的復雜性和先進性,具有密集資源信息 |
| 2011 | Zeus trojan | 木馬 | 竊取銀行信息 | 影響范圍廣,通過瀏覽器按鍵記錄和 表單抓取來竊取銀行信息. |
| 2014 | Backoff | 后門 | 盜取信用卡數據 | 破壞POS系統以竊取信用卡數據 |
| 2017 | Wannacry ransomware | 勒索軟件 | 獲取支付贖金 | 利用漏洞,將用戶數據鎖定,致使感染150多個 國家超過23萬臺Windows系統癱瘓 |
網絡攻擊追蹤溯源按照追蹤的深度和精準度可分為:
- 追蹤溯源攻擊主機
- 追蹤溯源攻擊控制主機
- 追蹤溯源攻擊者
- 追蹤溯源攻擊組織機構
常用方法包括域名/IP地址分析、入侵日志監測、全流量分析、同源分析、攻擊模型分析等。為了進一步防御網絡犯罪活動和威懾黑客組織,目前學術界和產業界均展開了惡意代碼溯源分析與研究工作。
下圖展示了網絡追蹤溯源體系結構:
網絡追蹤溯源常用工具包括:磁盤和數據捕獲工具、文件查看器、文件分析工具、注冊表分析工具、互聯網分析工具、電子郵件分析工具、移動設備分析工具、網絡流量取證工具、數據庫取證工具等。
推薦三篇相關工具及技術的文章:
- 惡意軟件分析大合集
- 惡意代碼分析相關工具&漏洞挖掘相關工具
- 探尋APT的化學本質與破解之術
2.追蹤溯源案例
這里分享兩個簡單的案例,一個是鐵人王進喜案例,另一個是Lazarus溯源案例。
(1) 鐵人王進喜案例
中國最著名“照片泄密案”是1964年《中國畫報》封面刊出的一張照片。在這張照片中,中國大慶油田的“鐵人”王進喜頭戴大狗皮帽,身穿厚棉襖,頂著鵝毛大雪,握著鉆機手柄眺望遠方。日本情報專家根據這張照片,解開了中國最大的石油基地大慶油田的秘密,分析出大慶油田及其產油量和規模,從而在同中方談判購買設備時占得先機。
從第一張照片中分析出:大慶可能位于東北省。
根據照片上王進喜的衣著判斷,只有在北緯46度至48度的區域內,冬季才有可能穿這樣的衣服,因此推斷大慶油田位于齊齊哈爾與哈爾濱之間。
從第二張照片中分析出:油井的直接。
從第三張照片中分析出:馬家窯是大慶的中心。
從第四張照片中分析出:馬家窯離火車站不遠。
從第五張照片中分析出:大慶已經大量產油。
從工作報告中分析出:大慶油田的產油量。同時,從王進喜所站的鉆井與背后油田間的距離和井架密度,推斷出油田的大致儲量和產量。
有了如此多的準確情報,日本人迅速設計出適合大慶油田開采用的石油設備。當中國政府向世界各國征求開采大慶油田的設備方案時,日本人一舉中標。慶幸的是,日本當時是出于經濟危機,根據情報分析結果,向我國高價推銷煉油設施,而不是用于其他戰略意圖。看了這個案例,您會想到什么呢?其實這就是安全領域一個非常經典的社會工程學案例。
(2) Lazarus溯源案例
該部分源自:https://www.freebuf.com/articles/system/221008.html
對APT組織進行追蹤需要一定的積累,只有熟悉了該組織的常用攻擊手法(TTPs),才能在新型的攻擊中將其辨識出來。其中,通過樣本共用代碼段進行關聯是最高效的方式,這也突顯了使用yara規則進行樣本分析的好處。
首先,我們需要從已有的樣本中篩選出相同的特征碼,可以使用Bindiff來比較已有樣本相似的代碼片段,如下:找到相似度較高且不是系統API的函數。
然后優先選取Blocks數較多、匹配指令數較多的函數。
可以重點挑選一些加密算法代碼作為特征碼,這樣比較沒那么容易誤報。除此之外,也可以使用一些自動化提取yara規則的工具可以使用,比如yargen:https://github.com/Neo23x0/yarGen。
如下,是提取出來的wannacry的特征碼,可以在VT上進行關聯,來追蹤Lazarus的相似攻擊組件。
在VT搜索框中,輸入:content:”{51 53 55 8B 6C 24 10 56 57 6A 20 8B 45 00 8D 75 04 24 01 0C 01 46 89 45 00 C6 46 FF 03 C6 06 01 46 56 E8}”,就能篩選出所有具有這個代碼片段的樣本,直到今年7月份,都還有相關的樣本活躍。
打開詳細信息,發現這是Lazarus用于攻擊孟加拉國的alreay攻擊組件,那么也就說明,WannaCry和Alreay確實有共用的代碼片段,通過這種方式,就可以關聯出Lazarus所使用的攻擊組件。
將yara規則添加到hunting中,一旦VT捕獲到新的樣本符合這條規則,就會立刻通知我們。
三.學術界惡意代碼溯源
學術界旨在采用靜態或動態的方式獲取惡意代碼的特征信息,通過對惡意代碼的特征學習,建立不同類別惡意代碼的特征模型,通過計算待檢測惡意代碼針對不同特征類別的相似性度量,指導惡意代碼的同源性判定。常見的惡意代碼溯源主要包括4個階段:特征提取、特征預處理、相似性計算、同源判定,各階段間的流程關系如下圖所示。
上圖是將溯源對象Windows平臺的PE惡意文件或Android平臺的APK惡意文件輸入溯源系統,經過特征提取、特征預處理、相似性計算、同源分析獲取溯源結果,最終判定攻擊家族或作者。
1.特征提取
特征提取是溯源分析過程的基礎,具有同源性的惡意代碼是通過它們的共有特征與其他代碼區分開來的。所提取的特征既要反映出惡意代碼的本質和具有同源性惡意代碼之間的相似性,又要滿足提取的有效性。
依據溯源目的,溯源特征提取包括溯源家族的特征提取和溯源作者的特征提取。Faruki等在字節碼級別提取統計性強的序列特征,包括指令、操作碼、字節碼、API代碼序列等。Perdisci R等通過n-gram提取字節碼序列作為特征。Ki Y等提出了捕獲運行過程中的API序列作為特征,利用生物基因序列檢測工具ClustalX對API序列進行相似性分析,得到惡意代碼的同源性判定。DNADroid使用PDG作為特征,DroidSim是一種基于組件的CFG來表示相似性代碼特征,與早期的方法相比,該系統檢測代碼重用更準確。
2.特征預處理
特征提取過程中會遇到不具有代表性、不能量化的原始特征,特征預處理針對這一問題進行解決,以提取出適用于相似性計算的代表性特征。特征預處理一方面對初始特征進行預處理,另一方面為相似性計算提供基礎數據。常見的特征類型包括序列特征和代碼結構特征。
序列特征預處理: 包括信息熵評估、正則表達式轉換、N-grams序列、序列向量化、權重量化法等,序列特征預處理會將初始特征中冗余特征消除、特征語義表達式增強、特征量化等以便于進行相似性計算。L. Wu通過分析惡意軟件敏感API操作以及事件等,將API序列特征轉換為正則表達式,并在發生類似的正則表達式模式時檢測惡意代碼。IBM研究小組先將N-gram方法應用于惡意軟件分析中,使用N-gram的統計屬性預測給定序列中下個子序列,從而進行相似度計算。Kolosnjaji等提出對API調用序列進行N-gram處理獲取子序列,采用N-gram方法將API調用序列轉換為N-gram序列,實現過程下圖所示。
代碼結構特征預處理: 在相似度比較時存在邊、節點等匹配問題即子圖同構算法復雜性,同時代碼結構特征中存在冗余結構,因此除去冗余、保留與惡意操作相關的代碼結構是預處理的主要目的。常見的方法包括API調用圖預處理、CFG圖預處理、PDG圖預處理等。
3.相似性計算
溯源旨在通過分析樣本的同源性定位到家族或作者,樣本的同源性可以通過分析代碼相似性來獲取。相似性計算旨在衡量惡意代碼間相似度,具體為采用一種相似性模型對惡意代碼的特征進行運算。根據預處理特征類型的不同以及溯源需求、效率、準確性等差異,采用不同的相似性運算方法。
目前比較流行的相似性計算方法主要集中在對集合、序列、向量、圖等特征表現形式的處理。Qiao等基于集合計算相似性,在不同惡意樣本API集合的相似性比較中采用了Jaccard系數方法,將為A、B兩個集合的交集在并集中所占的比例作為相似度,比例值越大,證明越相似,如公式所示。
Faruki等提出了采用SDhash相似性散列技術構建樣本的簽名序列,并采用漢明距離法對序列進行相似性計算,從而識別同源性樣本。Suarez-Tangil 等用數據挖掘算法中向量空間模型展示家族的惡意代碼特征形式,將同家族提取出來的具有代表性的CFG元素作為特征中維度,采用余弦算法對不同家族的向量空間模型進行相似度計算,根據余弦值來判斷它們的相似性,從而識別出相似性樣本,進而歸屬到對應的家族。用于比較向量的余弦相似度反映了惡意代碼間的相似性,其具體公式如公式所示。
Cesare等提出了最小距離匹配度量法,比較不同樣本的CFG圖特征的相似性。Kinable等通過靜態分析惡意代碼的系統調用圖,采用圖匹配的方式計算圖相似性得分,該得分近似于圖的編輯距離。利用該得分比較樣本的相似性,采用聚類算法將樣本進行聚類,實現家族分類。
4.同源判定
學術界常見的同源判定方法主要包括基于聚類算法的同源判定、基于神經網絡的同源判定等。Kim等采用DBSCAN算法對基于調用圖聚類,發現類似的惡意軟件。Feizollah等提出采用層聚類算法,構建家族間演化模型,進而發掘家族功能的演化。Niu等提出了層次聚類和密度聚類算法結合的快速聚類算法對操作碼序列特征進行聚類,以識別惡意軟件變體,該方法識別變體效率較高。
神經網絡是一種多層網絡的機器學習算法,可以處理多特征以及復雜特征的同源判定。基本思想為:將樣本特征作為輸入層數據,然后不斷調整神經網絡參數,直到輸出的樣本與該樣本是一種同源關系未為止。它會將惡意代碼特征送輸入層,即可判斷惡意代碼的同源性.。趙炳麟等提出了基于神經網絡的同源判定方法,其整體實現框架如下圖所示。
四.產業界惡意代碼溯源
產業界除了采用與學術界類似的同源判定方法之外,還會通過關聯的方法對惡意代碼進行溯源。產業界的溯源意圖除了溯源出編寫惡意代碼作者、惡意代碼家族之外,還要挖掘出攻擊者及攻擊者背后的真正意圖,從而遏制攻擊者的進一步行動。
產業界與學術界溯源方法的差異主要表現在特征提取和同源判定兩個方面:在特征提取上,產業界更傾向于從代碼結構、攻擊鏈中提取相似性特征;在同源判定上,除了采用與已有的歷史樣本進行相似度聚類分析之外,產業界還會采用一些關聯性分析方法。相比學術界溯源特征,產業界溯源特征更加詳細全面,信息復雜度大。因此,學術界的同源判定方法并不能完全用于產業界各類特征的相似性分析中,常見產業界溯源方法分類如下表所示。
接下來補充綠盟李東宏老師的系統分析:http://blog.nsfocus.net/trace-source/
1.惡意攻擊流程及溯源方法
惡意樣本溯源追蹤主要去了解攻擊者或者團隊的意圖。惡意攻擊的活動大概有如下7步驟:
- Reconnaissance:偵查,充分的社會工程學了解目標。
- Weaponization:定向攻擊工具的制作。常見的工具交付形態是帶有惡意代碼的pdf文件或office文件。
- Delivery:把攻擊工具輸送到目標系統上。APT攻擊者最常用這三種來傳送攻擊工具,包括郵件附件、網站(掛馬)、USB等移動存儲。
- Exploitation:攻擊代碼在目標系統觸發,利用目標系統的應用或操作系統漏洞控制目標。
- Installation:遠程控制程序的安裝。使得攻擊者可以長期潛伏在目標系統中。
- Command and Control (C2) :被攻破的主機一般會與互聯網控制器服務器建立一個C2信道,即與C2服務器建立連接。
- Actions on Objectives:經過前面六個過程,攻擊者后面主要的行為包括:偷取目標系統的信息,破壞信息的完整性及可用性等。進一步以控制的機器為跳轉攻擊其它機器,擴大戰果。
追蹤溯源方法
惡意樣本的追蹤溯源需要以當前的惡意樣本為中心,通過對靜態特征和動態行為的分析,解決如下問題:
- 誰發動的攻擊?
- 攻擊背景是什么?
- 攻擊的意圖是什么?
- 誰編寫的樣本?
- 樣本使用了哪些攻擊技術?
- 攻擊過程中使用了那些攻擊工具?
- 整個攻擊過程路徑是怎樣的?
惡意樣本追蹤溯源可以采取如下方法:
- 全流量分析
- 同源分析
- 入侵日志
- 域名/IP
- 攻擊模型
2.域名/IP
這種溯源方法是最基本的方法,通過對攻擊者使用的域名和IP地址進行分析,挖掘攻擊源頭。查詢域名的whois信息,可以關聯到攻擊者部分信息,如注冊名、注冊郵箱、注冊地址、電話、注冊時間、服務商等。
下面是通過樣本分析對域名進行溯源分析的典型案例:
案例1:
Checkpoint經過細致分析后,最終歸納出一個首要嫌疑犯,即昵稱為“Nexxus Zeta”的一個犯罪分子,原因在于攻擊者在注冊僵尸網絡的某個C&C域名(nexusiotsolutions.net)時,所使用的郵箱地址包含相關信息。
該郵件地址(nexuszeta1337@gmail.com)與C&C域名有一些交集,因此懷疑這個地址并不是一次性郵件地址,可以根據該地址來揭曉攻擊者的真實身份。當搜索Nexus Zeta 1337時,在HackForums上找到了一個活躍的成員,該成員的用戶昵稱為“Nexus Zeta”,自2015年8月起已經是HackForums的一份子。雖然這個人在這種論壇上活躍度很低,但他發表了幾篇帖子,從這些帖子中并沒有發現他的專業水平有多高。不過有趣的是,他最近關注的是如何建立起類似Mirai的IoT僵尸網絡。
“NexusZeta”在社交媒體上也頗為活躍,主要是在Twitter以及Github上,他在這兩個平臺上都公布了自己的IoT僵尸網絡項目。實際上,這個人還將其Github賬戶關聯到前面提到的某個惡意域名(nexusiotsolutions.net)。分析人員也找到了他所使用的Skype以及SoundCloud賬戶,使用人名為Caleb Wilson(caleb.wilson37 / Caleb Wilson 37),然而無法確定這個名字是否就是其真實姓名。
樣本分析及詳細的溯源分析內容可參考鏈接:https://research.checkpoint.com/good-zero-day-skiddie/ 。
案例2:
樣本分析過程中,通過網絡抓包,獲取到攻擊者的控制域名信息:
域名信息關聯后,如下圖所示:
這里點到為止,對上述信息進行進一步分析后,最終可定位到攻擊者本人,并且最終成功接管攻擊控制的域名。
案例3:
通過分析獲取到的樣本,該樣本為downloader程序,主要通過下載惡意軟件之后運行,下載的IP地址如下所示:
對該IP進行滲透測試,最終獲取到主機權限,通過對攻擊者掌握的主機進行深入分析,最終定位到攻擊者相關信息。
3.入侵日志
這種溯源分析方法偏向于主機取證分析,攻擊者在入侵到主機后的行為分析。對攻擊者留下的大量操作日志進行分析后,可以提取相關攻擊者的信息,包括:
- 連接服務器使用VPS信息。
- 登陸主機后,一般為了維持對主機的訪問權限,會嘗試創建自己的賬號及密碼。
- 攻擊者為了偷取數據,使用的ftp或者數據服務器信息。
- 通過對攻擊者的登陸時間進行分析,可以基本定位所在大區域(北半球,南半球)。
- 登陸主機后的操作模型,不同的攻擊者,入侵成功后進行的行為有差異,每個人都有自己的行為指紋特征。
簡單舉個例子,不少攻擊者習慣使用自動化的工具,去提取主機上的敏感信息(網站,郵箱,比特幣,網銀等賬號密碼),入侵成功后(釣魚,社工,水坑攻擊等),會在受害者機器上安裝間諜軟件,進行主機行為監控,并且定時將截獲的敏感信息上傳到服務上。
大多使用三種通信方式竊取敏感信息:ftp、smtp、http。
案例1:
通過分析入侵日志,最終分析其留的監控程序,溯源分析的案例,該樣本中攻擊者使用加密的smtp服務器竊取敏感信息,在樣本分析過程中可以獲取到郵箱的用戶名與密碼:
利用獲取到的登陸憑證可成功登陸攻擊者郵箱:
在郵件內容中,發現了攻擊者的真實郵箱,之后通過進一步溯源分析,定位到了攻擊者。下圖是攻擊者真實的twitter賬號:
案例2:
攻擊者在入侵成功后,留下的啟動腳本中包含了攻擊者的個人網絡id,通過對該網絡ID及QQ號碼進行溯源分析,最終也成功定位到攻擊者。
QQ: 2228668564
ID: icnanker
shadow:
icnanker:$6$EIZwhnAX$m/IclCqhsFOBaZEgT2mVCYFy5bKH75rJ8Rlh/hwGs7De
R5AovmhrLS.V3naL6oizn6FCViwqKn6k9gqmoYNhs0:16866:0:99999:7:::
4.全流量分析
某些攻擊者或者組織的反跟蹤意識非常強,基本上不會留下任何痕跡,在達成入侵目的之后(竊取數據),會完全清除入侵痕跡,或者干脆銷毀主機硬盤。
例如:2015年烏克蘭電廠遭受攻擊之后,攻擊者利用killdisk組件銷毀了全部數據。當然有些也不會留下在主機上的任何操作痕跡,部分勒索軟件也是通過同樣的手段進行痕跡擦除。這類案例也非常多,基本上在受害者機器上找不到任何痕跡,這時進行全流量分析溯源就相當有效了。
例如:以2017年Flareon 4th逆向挑戰賽最后一題為例。
描述了一個APT攻擊場景,需要通過分析數據包及PE文件,還原整個攻擊過程。從網絡下載加密的惡意代碼在本地進行解密:
解密后的內容為一個遠控端,其和主控端的通訊流量通過了全加密,網絡傳輸數據格式如下:
相關的加解密及功能模塊如下:
過流量分析發現攻擊者入侵行為如下:
- 黑客入侵到168.221.91后,先獲取了屏幕截圖(內容包含了一個密碼)。
- 查看c:\work\FlareOn2017\Challenge_10\TODO.txt,發現larry相關提示(根據前期信息收集結果,可以知道johnson主機名)。
- 通過ping命令獲取到內網johnson主機IP地址(192.168.221.105)。
- 使用psexec在johnson的主機上安裝后門srv2.exe(監聽本地16452端口)。
- 之后通過內網代理連接該后門,通過代理插件上傳加密模塊到了johnson的主機上c:\staging\cf.exe。
- 利用加密程序(exe)對lab10的文件進行加密,之后將原始文件刪除,并且通過代理傳到了黑客手里。
該案例中僅通過全流量分析,最終還原整個入侵過程、黑客攻擊行為以及竊取的內容,而在真實的環境中需要結合入侵日志進一步對惡意樣本攻擊進行追蹤溯源。
5.同源分析
該方法主要為在獲取到惡意樣本后,很難第一時間關聯到攻擊者或者惡意樣本提供者的信息,但是可以通過和歷史惡意代碼進行相似度分析,獲得歷史攻擊事件,從而關聯到相應的組織或團體。這種溯源方法多用于定位APT組織或者某些知名的黑客團體(方程式)的行動,需要投入大量的人力,時間去完成溯源跟蹤分析。
APT組織或者知名黑客團隊,一般都有各自的工具定制開發部門,負責各類工具的開發,以及漏洞利用工具的量產(從今年4月份泄露的方程式組織內部的工具以及CIA泄露的部分文檔就可以看出端倪)。其部分劃分組織架構都非常清晰,有專門負責工具開發的部門,例如:遠控開發部門,硬件研究部門,漏洞挖掘部門,漏洞利用工具編寫的部門等。
(1) 設計思路
每個程序員在軟件實現的時候,會使用自己比較熟悉的一套代碼風格和實現算法,每個團伙或者組織在攻擊目標時也會有一套自己特有的攻擊方法,針對惡意樣本可以通過行為日志的相似度、代碼混淆風格以及相關的實現算法進行同源判定。
例如:利用“破殼”漏洞投放的6個Bot具有同源性。
圖片來源:安天
(2) 編碼特征
程序員在開發過程中,經常會復用部分現有代碼(加密算法,功能模塊),以提高開發效率。樣本分析人員通過跟蹤分析某組織的大量攻擊樣本后,對其工具開發人員的編碼風格(函數變量命名習慣,語種信息等),編程習慣有了深入了解。在此基礎上,就能夠通過編碼風格準確溯源到相關組織。
下面是今年5月份爆發的wanncry蠕蟲的溯源分析的案例:
https://blog.comae.io/wannacry-links-to-lazarus-group-dcea72c99d2d
Google研究者Neel Mehta在Twitter率先發布消息稱,早期的WannaCry樣本與Lazarus團伙使用的一款后門程序Contopee存在較高相似度。稍后卡巴斯基和賽門鐵克研究者基于此發布了更多分析結果。并且給出了代碼相似度對比的圖,以證明其推論:
(3) 通訊協議
每個惡意樣本為了和之前的版本通訊協議進行兼容,一般會復用之前的通訊協議代碼,通過跟蹤分析通訊數據的格式特征進行同源判定。
Billgates上線數據格式如下圖所示:
Xitele上線數據包格式如下圖所示:
通過對比上面兩個惡意樣本上線包數據格式特征可以判定其為同源樣本。
(4) 數字證書
數字證書是一個經證書授權中心數字簽名的包含公開密鑰擁有者信息以及公開密鑰的文件。最簡單的證書包含一個公開密鑰、名稱以及證書授權中心的數字簽名。數字證書還有一個重要的特征就是只在特定的時間段內有效。
數字證書是一種權威性的電子文檔,可以由權威公正的第三方機構,即CA中心簽發的證書,也可以由企業級CA系統進行簽發。惡意軟件為了躲避安全軟件的檢測,會使用數字證書對代碼進行簽名,而簽名證書中的頒發給部分包含了軟件的開發商的相關信息。
6.攻擊模型
這種溯源方法主要見于某些專業化程度比較高的個人或者組織,他們有自己的攻擊常規套路,并且長期專注于一個領域的攻擊。
案例1:
之前的一次應急分析過程中遇到一個團伙,主要進行ssh弱口令爆破,該團隊的就主要關注于ssh弱口令爆破,通過對該團隊的溯源分析,了解到其攻擊模型是:
- 掃描全網開放ssh服務端口的主機。
- 根據開放服務端口號,將每個端口號對應的ip保存到一個文件中。
- 并且定時的會對全網全端口進行掃描探測以便及時更新攻擊目標數據。
- 對存在ssh弱口令的主機進行攻擊。
- 利用成功入侵的主機作為節點,繼續進行ssh弱口令爆破。
- 旨在構造一個大型的botnet系統。
除上面該實例外,還遇到不少,利用單一漏洞進行攻擊的案例,如:struts2框架漏洞以及近期發現某團隊利用webloglic WLS漏洞進行入侵挖礦的案例。
案例2:
下面舉一個最有名的例子,2016年10月爆發的Mirai僵尸網絡曾經一度使互聯網產生恐慌,通過溯源分析最終定位到了該僵尸網絡的作者。
Mirai僵尸網絡就是一個很好的例子,攻擊者主要利用物聯網設備默認口令的問題,感染大量設備,之前溝通對其攻擊模型的匹配,可以清楚的了解的組織的活動軌跡,并且通過對每一次活動留下的線索進行關聯分析,最終定位到了攻擊者團伙。
美國司法部最終披露稱,三名男子就創建Mirai惡意軟件并利用Mirai僵尸網絡攻擊多個目標的事實表示認罪。從法庭文檔來看,這三名男子的名字是Paras Jha、Josiah White和Dalton Norman。
案例3:
在一次應急響應中通過取證分析,了解到攻擊使用的攻擊模型如下:
- 注冊域名,根據攻擊目標選擇有意義的域名。
- 在GitHub上注冊一個新賬戶和創建一個開源項目。
- 編譯源碼后捆綁惡意軟件,一般選擇advanced installer作為捆綁打包器(還有AutoIt,NSIS)。
- 發布到搭建的網站上。
- 在互聯網上發布推廣其軟件。
- 竊取用戶敏感數據(賬號密碼)。
- 進行數據直接套現,或者通過信息倒賣平臺間接變現。
之后利用該攻擊模型對樣本庫中的文件進行篩選,定位到另外3套與該模型完全匹配的案例,進一步分析匹配到的樣本后,首先確認了該4套樣本出于同一開發團隊,經過溯源分析準確定位到了攻擊者。
溯源分析旨在通過現象去發掘樣本背后的故事,沒有固定的套路可循,在分析過程中,要像偵探破案一樣,大膽心細,不放過任何細枝末節,是一場人與人之間斗智斗勇的過程。
“天網恢恢疏而不漏“,溯源篇旨在拋磚引玉,將感興趣的讀者帶入這個謎一樣的世界!以上純屬筆者個人的觀點角度,意在拋磚引玉,引發讀者去思考作為一名合格的惡意樣本分析人員應該具備那些技能?仁者見仁智者見智點到為止。
不過有一點可以確認單純掌握樣本分析技能是遠遠不夠的。下面列舉了幾個方向,感興趣的讀者可以去進行深入學習:
- 滲透測試
- 應急響應
- 取證分析
- 數據分析
- 漏洞分析
掌握上述技能后,以守為攻,變換角色,從多個維度去進行樣本分析攻擊溯源,進而輸出高質量的樣本分析報告。
五.總結
嚴峻的網絡安全對抗和博弈形勢,使得對惡意代碼的演化與溯源技術的研究價值凸顯,學術界、產業界近年來分別從攻擊和防護兩個方面展開了深入的研究。前文基于已有的研究總結了惡意代碼的生成過程和編碼特征,并對來自產業界、學術界惡意代碼的溯源機理和溯源對抗方法進行了詳細描述。
目前,學術界和產業界在惡意代碼溯源技術方面取得了較大的進步,在追蹤惡意代碼組織、黑客組織(攻擊者)、發現未知惡意代碼方面取得了部分研究成果,例如海蓮花、白象、方程式組織等典型 APT 攻擊計劃和黑客團隊的不斷曝光,但依然存在不足和挑戰。
寫到這里,這篇基礎性文章就此結束,最后希望這篇基礎性文章對您有所幫助。突然發現,作者已經寫了599篇文章了,非常值得紀念,今后也希望幫到更多的讀者。也覺得自己的技術好淺,要學的知識好多,讀博真心不容易,之前很少遇到睡不著覺,這學期很多次驚醒,希望自己這四年能不斷成長,身體和心理都健康!一定要好好的,有時候只是看著開心陽光,其背后的苦和痛都要去煉化,祝福所有博士戰友們。
(By:Eastmount 2021-06-21 晚上11點寫于武漢 http://blog.csdn.net/eastmount/ )
參考文獻:
- [1]姜建國,王繼志,孔斌,等. 網絡攻擊溯源追蹤技術研究綜述[J]. 信息安全學報, 2018,3(1):111-131.
- [2]劉劍,蘇璞睿,楊珉,等. 軟件與網絡安全研究綜述[J]. 軟件學報, 2018,29(1):42-68.
- [3]赫堯,陳周國,蒲石,黃宸. 多源網絡攻擊追蹤溯源技術研究[J]. 通信技術, 2013,46(12):77-81.
- [4]袁得崳,高見,葉萌熙,王小娟. 基于拓撲擴展的在線社交網絡惡意信息源定位算法[J]. 計算機科學, 2019,46(5): 129-134.
- [5]惡意代碼演化與溯源技術研究[J]. 軟件學報, 2019,30(8): 2229?2267.
- [6]李東宏.惡意樣本分析手冊——溯源篇.2018. http://blog.nsfocus.net/trace-source/.
- [7]錢雨村,彭國軍,王瀅,梁玉. 惡意代碼同源性分析及家族聚類[J]. 計算機工程與應用, 2015, 51(18): 76?81.
- [8]Ge YW, Kang F, Peng XX. Homology analysis of malicious code based on dynamic BP neural network. Journal of Chinese Computer System, 2016,37(11):2527?2531.
- [9]Faruki P, Laxmi V, Bharmal A, Gaur M, Ganmoor V. Androsimilar: Robust signature for detecting variants of android malware. Joural of Information Security and Applications, 2015,22:66?80.
- [10]Perdisci R, Lanzi A, Lee W. Mcboost: Boosting scalability in malware collection and analysis using statistical classification of executables. In: Proc. of the ACSAC. 2008. 301?310.
- [11]Ki Y, Kim E, Kim HK. A novel approach to detect malware based on API call sequence analysis. Int’l Journal of Distributed Sensor Networks, 2015,11(6):No.659101.
- [12]Crussell J, Gibler C, Chen H. Attack of the clones: Detecting cloned applications on android markets. In: Proc. of the European Symp. on Research in Computer Security. Berlin, Heidelberg: Springer-Verlag, 2012. 37?54.
- [13]Sun X, Zhongyang YB, Xin Z, Mao B, Xie L. Detecting code reuse in Android applications using component-based control flow graph. In: Proc. of the ICT. Springer-Verlag, 2014. 142?155.
- [14]Wu L, Ping R, Ke L, Hai D. Behavior-Based malware analysis and detection. In: Proc. of the 2011 1st Int’l Workshop on Complexity and Data Mining (IWCDM). New York: IEEE, 2011. 39?42.
- [15]A biologically inspired immune system for computers. In: Proc. of the Artificial Life IV: 4th Int’l Workshop on the Synthesis and Simulation of Living Systems. MIT Press, 2011. 130?139.
- [16]Kolosnjaji B, Zarras A, Webster G, Eckert C. Deep learning for classification of malware system call sequences. In: Proc. of the Australasian Joint Conf. on Artificial Intelligence. Cham: Springer-Verlag, 2016. 137?149.
- [17]Zhao BL, Meng X, Han J, Wang J, Liu FD. Homology analysis of malware based on graph. Journal on Communications, 2017, 38(Z2):86?93 (in Chinese with English abstract).
- [18]Awad RA, Sayre KD. Automatic clustering of malware variants. In: Proc. of the 2016 IEEE Conf. on Intelligence and Security Informatics (ISI). IEEE, 2016. 298?303.
- [19]Crussell J, Gibler C, Chen H. Andarwin: Scalable detection of semantically similar Android applications. In: Proc. of the European Symp. on Research in Computer Security. Springer, Berlin, Heidelberg, 2013. 182?199.
- [20]Qiao Y, Yun X, Zhang Y. How to automatically identify the homology of different malware. In: Proc. of the 2016 IEEE Trustcom/ BigDataSE/I SPA. IEEE, 2016. 929?936.
- [21]Faruki P, Laxmi V, Bharmal A, Gaur M, Ganmoor V. Androsimilar: Robust signature for detecting variants of android malware. Joural of Information Security and Applications, 2015,22:66?80.
- [22]Suarez-Tangil G, Tapiador JE, Peris-Lopez P, Blasco J. Dendroid: A text mining approach to analyzing and classifying code structures in Android malware families. Expert Systems with Applications, 2014,41(4):1104?1117.
- [23]Cesare S, Xiang Y, Zhou W. Control flow-based malware variant detection. IEEE Trans. on Dependable and Secure Computing, 2014,11(4):307?317.
- [24]Fredrikson M, Jha S, Christodorescu M, Sailer R, Yan X. Synthesizing near-optimal malware specifications from suspicious behaviors. In: Proc. of the 2010 IEEE Symp. on Security and Privacy (Oakland 2010). 2010. 45?60.
- [25]Kim J, Kim TG, Im EG. Structural information based malicious app similarity calculation and clustering. In: Proc. of the 2015 Conf. on Research in Adaptive and Convergent Systems. ACM Press, 2015. 314?318.
- [26]Feizollah A, Anuar NB, Salleh R, Amalina F. Comparative study of k-means and mini batch k-means clustering algorithms in Android malware detection using network traffic analysis. In: Proc. of the 2014 Int’l Symp. on Biometrics and Security Technologies (ISBAST). IEEE, 2014. 193?197.
- [27]Niu Z, Qin Z, Zhang J, Yin H. Malware variants detection using density based spatial clustering with global opcode matrix. In: Proc. of the Int’l Conf. on Security, Privacy and Anonymity in Computation, Communication and Storage. Cham: Springer-Verlag, 2017. 757?766.
- [28]Zhao BL, Meng X, Han J, Wang J, Liu FD. Homology analysis of malware based on graph. Journal on Communications, 2017, 38(Z2):86?93 (in Chinese with English abstract).
總結
以上是生活随笔為你收集整理的[系统安全] 三十一.恶意代码检测(1)恶意代码攻击溯源及恶意样本分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [网络安全提高篇] 一一〇.强网杯CTF
- 下一篇: [Python从零到壹] 十一.数据分析