基於 Viper 的二進位軟體自動分析框架
概述
過去的很長一段時間裡,我了解並使用了一些非常酷的、私有的、模塊化以及非常高級的二進位分析框架。包括Mandiant的靜態分類框架和ReversingLabs等商業產品,以及許多昂貴的商業沙箱解決方案,如FireEye,Cyphort和JoeSandbox。
我認為託管這樣一組靜態和動態分析工具對於加快我的CTF團隊和私人研究來說可能是非常有益的。所以我決定去收集一系列自動化的靜態和動態二進位分析工具去編寫一個開源分析平台,今天我們主要討論的就是它。我所選擇的這些工具可用於惡意軟體分析,CTF二進位分析或去幫助你在逆向工程中逆向二進位文件。我們將在其中設置多個工具,來進行自動化分析任務和實施逆向工程。這些工具包括大量的靜態分析,動態分析和報告工具,我們將在下面的文章中深入討論。我的最終目標是提供一套有用的內部工具,並通過該框架去對逆向工程和構建微型服務架構進行自動化分析這兩個方面去獲得良好的學習經驗。
我將選擇三個主要框架,每一個都被託管在不同的實體上。為了保證我在這個二進位分析集群的第一次可以順利通過,我選擇了:Viper, Cuckoo, 以及MISP。 Viper是用於存儲二進位文件的主要介面和資料庫。它允許我們在導入時自動運行其他python模塊,從而驅動我們所有的自動化分析的核心。這不僅是我們集成的主要原則,而且還驅動了大量的模塊化靜態分析操作,因為這些工具和庫可以方便地位於同一台機器上。我使用了Cuckoo來推動我的動態沙箱分析,讓我們可以運行二進位文件,並且豐富的虛擬機內省,網路流量,甚至清除內存。最後,我們將MISP作為用戶界面,並以編程方式集成威脅情報數據。
MISP可以訂閱Feed並豐富我們的其他工具,如Viper和Duck,從而使我們能夠以可管理的方式整合威脅情報。
伺服器設置
我為每個機器都裝上了一個新的Ubuntu 16映像,並將它們構建在AWS的EC2上。我還為他們設置了各種配置文件中的域名,允許我們打開和關閉它們,只需要更新DNS條目即可。對於開發人員的使用體驗,tmux和zsh已經添加了一些自定義配置。人們可以在tmux會話中協同使用這些伺服器,以便一個人可以使用像radare2這樣的工具進行逆向工程,另一個人可以通過觀看tmux會話來學習。
除此之外,我還安裝了一些額外的工具和配置:tmux,zsh + oh-my-zsh,vim + vim-plug和fzf等。
Viper
Viper是一個非常驚人的二進位分析平台和框架,它是用python編寫的。由於其可擴展,所以就使得集成和編寫新模塊變得非常簡單。
此外,我們可以自動化的將Python工作人員對我們導入的新文件啟動操作進行抽象處理,Viper將保存分析並進行審查。 stock w/ Viper包括:通用散列,模糊散列(pydeep),元數據(exiftool),提取特殊字元串和地址(IPv4 / v6,域名),檢測已知的shellcode模式,發送樣品到 Cuckoo沙盒,啟動反彙編程序(IDA Pro或radare2),在Malwr / Anubis / VirusTotal,XOR搜索,YARA掃描,檢測普通打包程序(PEiD),imphashing,數字簽名分析以及對幾個名字有趣的進行多次編譯。
它還包括大量不可執行文件格式的分析選項,例如HTML操作,提取嵌入式腳本,Java小程序分析,Flash對象分析,圖像分析,pdf分析,多個OLE分析和更多的二進位格式功能。它還包括解析許多Java格式,郵件MIMES和一些防病毒文件的功能。我還添加了ClamAV服務集成,VirusTotal和Malwr集成,用於一些額外的威脅intel,但是在撰寫本文時,Malwrs API似乎是錯誤的,這意味著我必須建立自己的私有沙箱解決方案。
我最興奮的部分之一是使用Viper框架來進行YARA掃描,並根據我一直在使用的自定義YARA規則自動標記我的文件。 這些YARA規則檢測二進位文件的特殊屬性,例如:類型,語言,加密原語,易受攻擊的功能等。 我已經擴展了在這裡使用YARA規則進行二進位分析的想法。
我認為Viper的真正實力在於自動化了許多這些模塊,因為它們已經被內置並且可以配置為在導入時運行。在上圖中,您可以看到許多這些模塊正在導入,以及YARA掃描,將標籤和分析筆記自動添加到二進位文件。此外,我在社區中發現了很多自定義腳本,我甚至可以編寫一些我自己的簡單模塊作為POC。我未來的計劃是將更多的下列工具集成到viper模塊中,這利用任意的python庫是非常容易的。我還設置了許多intel集成的威脅分析,例如VirusTotal,Malwr(雖然這似乎是atm),ShadowServer,XForce和MISP集成,我們將在下面的自己的帖子中討論這些威脅。這些與在conf文件中配置一樣簡單,並確保Viper具有對其他服務的直接防火牆訪問許可權。下面你可以看到我的示例模塊在行動,但一定要查看代碼,看看這些真的會變得很容易。
我主要使用它的API功能來運行Viper伺服器,這樣我可以使用本地腳本將二進位文件提交到平台,並最終將工具(如chatbot或collectors)集成到Viper平台,以驅動其自動化。我們甚至可以使用自定義腳本與API來遠程驅動我們的任何自動化。然後我們有一個二進位文件的私人收藏,這些二進位文件被自動分類,標記,可搜索,我們可以用遠程和可管理的方式與他們進行交互。
最後,我在這個框上安裝了一些其他工具來進行協同倒置,最著名的是Radare2(用於反彙編)和Manticore(用於符號執行)。我的想法是使用Manticore API或r2pipe編寫腳本,以便將這些更深入的靜態分析功能整合到Viper中。我還添加了Kaitai-struct,以引用我們可能遇到的各種二進位文件的語法和協議。原因在於這樣可以檢驗我們二進位結構的語法或協議,所以我們可以看到我們的樣本是否正常。除此之外,我還為 awesome, modular,pythonic數據轉換庫添加了Pure Funky Magic腳本。
Cuckoo
這是我們的動態沙盒二進位文件的主要集群。我對Cuckoo的靈活性和可定製印象非常深刻。我發現它比過去使用的任何專有工具更可自定義。個人分析vm設置特別重要,因為您必須確保安裝了相應的易受攻擊的軟體,代理將在其啟動時進行啟動,虛擬機具有正確的網路配置。一旦我的vms都配置完美,我將它們作為一個OVA導出並將其發送到雲端。在將來,我想使用vmcloak測試設置Cuckoo圖像。我們目前的設置是一個嵌套的基於AWS的Cuckoo,它限制了我們的32bit圖像。這個設置涉及許多經驗教訓,我計劃在不久的將來在ESXI上重新構建這個基礎設施,使用類似於Cuckoo修改的東西。也就是說,如果您發現自己在使用Cuckoo與VirtualBox,以下命令是非常有用的:
vboxmanage import 「your_ova_name」
vboxmanage list vmsvboxmanage list runningvms
vboxheadless --startvm 「your_vm_name」
vboxmanage snapshot "your_vm_name" take "vm_snapshot_name" --pause
vboxmanage controlvm "your_vm_name" poweroff
vboxmanage snapshot "your_vm_name" restorecurrent
vboxmanage snapshot "your_vm_name" list
vboxmanage snapshot 「your_vm_name」 restore 「vm_snapshot_name」
vboxmanage unregistervm 「your_vm_name」 --delete
vboxmanage guestproperty enumerate 「your_vm_name」
vboxmanage modifyvm 「your_vm_name」 --hostonlyadapter1 「vm_network」
vboxmanage modifyvm 「your_vm_name」 --nic1 hostonly
我使用API功能來運行Cuckoo,將其與Viper集成。重要的一點是要注意,默認情況下,API沒有auth,所以我們使用專用網路和適當的防火牆規則來實現簡單而安全的安裝。您還可以編寫自己的Cuckoo分析腳本,並將其集成到MISP實例中,以進行 threat Intel enrichment。
MISP
我們將使用MISP進行信息共享和數據規範化。通過它可以製作,配置和集成到Viper,以便我們可以輕鬆找到新的樣品或分享我們的結果。當然,有了它之後真正的好處是訂閱其他資訊,以獲得相互合作的威脅情報,並將其應用於我們的工具。 有關如何使用MISP和Viper的更多信息,我就不在這裡詳述了。 這是一種以便宜的方式管理私人threat intel,獲取公開資訊以及對我們自己的報告進行分析的好方法。
當然,也會有一些其他的二進位分析框架看起來很有趣,並且我在尋找構建這個開源分析平台時也遇到過不少狀況。但我最終選擇了上面的解決方案,因為它們都是通過Python編寫的並且易於彼此集成。也就是說這其實是比較適合我個人的解決方案,因此為了讓您有更多收穫,我在下面也列出了可能適用於您的解決方案:
Mastiff是一個比較舊的二進位分析框架,它在功能方面看起來很有前途,但現在其開發者方面看起來像是有些放棄了。
FAME是一個很酷的惡意軟體分析框架,但它看起來純粹是為了惡意軟體分析,因此也就缺乏了我對CTF或逆向工程所需求的重要的分析功能。
StoQ看起來非常有希望作為企業規模的二進位分析框架,它具有分布式工作隊列和收集器。 StoQ與Viper有很多重疊,它包含許多付費服務模塊,看起來很好維護,並且很容易具有很高的品質。
LaikaBOSS是一個遞歸和模塊化的文件分析框架。 LaikaBOSS看起來非常有希望,但是其文檔上看起來很複雜並且內容相當少。
CRITS是一個類似於MISP的威脅共享信息平台,但是我選擇了MISP,因為它與我正在使用的其他框架有現有的集成。
本文翻譯自
http://lockboxx.blogspot.com/2017/06/automated-binary-analysis-framework-for.html
點擊展開全文
※WCTF世界黑客大師賽,你看懂了多少?
※烏克蘭多個政府、石油企業及航空公司遭受網路攻擊
※竊取 OAuth 令牌繞過 Airbnb 身份驗證
※Black Hat 2017黑帽大會:8款值得一看的黑客工具
TAG:嘶吼RoarTalk |
※人性化地處理二進位數據:Bitstream
※LoadRunner生成二進位參數的方法
※使用IDAPython自動映射二進位文件替換默認函數名
※Centos 7 二進位安裝配置 MariaDB資料庫
※Delphi TColor和16進位顏色的相互轉換
※演繹inSite先進位造專場觀眾招募
※linux下如何使用docker二進位文件安裝
※如何逆向分析WebAssembly二進位代碼
※Ubuntu要放棄32進位兼容支持造成跑不了WINE遊戲?
※V神:我是CBC Casper的粉絲,並不喜歡重新排列的二進位結構奇怪分片
※走進位於加州的Yeezy工作室 | Mastermind JAPAN x Converse | ACG 2018SS造型示範
※Karta:一款新的二進位文件分析和對比插件
※Linux 上最好的十六進位編輯器
※谷歌推出 K8S 二進位授權、Turbonomic 擴展 K8S 管理範圍、數千商店將引入面部識別防止行竊
※谷歌發布 TensorFlow 1.6.0,針對 CUDA 9.0和cuDNN 7 預構建二進位文件
※谷歌發布 TensorFlow 1.6.0,針對 CUDA 9.0 和 cuDNN 7 預構建二進位文件
※中芯國際出售LFoundry,輕裝上陣征戰先進位程及特色工藝
※MYSQL BINLOG 二進位日誌
※韓國研究人員研發全球首個三進位半導體 或影響AI/自動駕駛汽車等應用
※半導體先進位程發展擴大EUV市場需求,ASML可望持續受惠