概述
近日,FireEye開源了一個逆向輔助工具capa,專案地址為:https://github.com/fireeye/capa,其目的是自動化提取樣本的高階靜態特徵,快速地告訴使用者該樣本做了哪些惡意操作,同時該工具還隨同釋出了對應的IDA外掛,方便逆向分析員快速定位惡意程式碼。
工具執行的結果如下,它顯示了當前樣本的惡意行為,以及對應的ATT&CK向量,如:混淆繞過、系統資訊探測、C&C連線、持久化駐留等。
安裝
使用命令:git clone --recurse-submodules https://github.com/fireeye/capa.git下載capa專案,其中包含了capa-rules子專案,該路徑下包含了所有型別的檢測規則。
下載好後,使用命令:pip install -e [path_to_capa]進行安裝,安裝好後,就能開始使用Capa了。
範例演示
下面主要介紹其IDA外掛的使用,IDA開啟樣本後,點選File->Script File載入ida_capa_explorer.py指令碼。
PS:該外掛目前只適配於IDA7.2及以上版本。
本次實驗使用的是BuleHero蠕蟲樣本(0F606E3FC83F7E8B175DDCAA39517CDD),樣本載入成功後,IDA會新增一個capa explorer視窗,該視窗會顯示匹配上的規則,滑鼠移到上面可以看到規則的內容。
雙擊規則的Address的值,IDA會自動跳轉到惡意程式碼相應的位置,如下,透過contain an embedded PE file規則,快速地定位到了樣本中內嵌的PE檔案。
勾上規則後,IDA會高亮顯示對應的惡意程式碼段,從而方便逆向工程師進行分析。
規則的編寫格式如下,第一個紅框meta用於描述該規則的描述資訊,第二個紅框features就是用於匹配的邏輯規則,類似於yara,支援的型別有:api、string、bytes、mnemonic等。
瞭解規則的編寫規範後,試著編寫一個規則進行練手,如下規則僅用於演示。
可以識別出Lazarus組織的Dtrack後門。
將該規則dtrack.yal放到capa/rules目錄下,載入樣本B5AB935D750BE8B5B7C9CF3B87C772CA,外掛就能自動識別出該樣本為Dtrack後門。
capa的大致原理就是,提取樣本的匯入函式、字串、彙編碼,然後迴圈遍歷規則進行匹配,實質上就是將逆向時手工篩選高危惡意程式碼的工作自動化,當然,對於一些高度混淆後的樣本,建議先解混淆後再使用capa進行分析。