Cuckoo惡意軟體自動化分析平臺搭建

wyzsk發表於2020-08-19
作者: kernux · 2015/12/22 10:28

Author:kernux Topsec α-lab

0x00 cuckoo概述


Cuckoo是一款開源的自動化惡意軟體分析系統,目前主要用於分析windows平臺下的惡意軟體,但其框架同時支援Linux和Mac OS。cuckoo能夠自動化獲取如下資訊:

  1. 能夠跟蹤惡意軟體程式及其產生的所有程式的win32 API呼叫記錄;
  2. 能夠檢測惡意軟體的檔案建立、刪除和下載;
  3. 能夠獲取惡意軟體程式的記憶體映象;
  4. 能夠獲取系統全部記憶體映象,方便其他工具進行進一步分析;
  5. 能夠以pacp格式抓取網路資料;
  6. 能夠抓取惡意軟體執行時的截圖。

Cuckoo支援分析多種檔案格式,包括windows可執行檔案,DLL檔案,PDF文件,Office文件,惡意URL,HTML檔案,PHP檔案,CPL檔案,VBS,ZIP壓縮檔案,jar檔案,python程式等。這些完全依賴於他的分析模組。

下圖是cuckoo的架構圖,非常清晰。Cuckoo依賴於下面的虛擬機器進行實際的分析,然後透過虛擬網路將分析結果傳輸給cuckoo host。所以cuckoo的執行至少需要一個虛擬化環境。目前cuckoo能夠支援vmware,virtualbox,kvm,qemu,xen,avd等主流虛擬化平臺。

p1

Cuckoo的架構是高度模組化的,只要我們新增不同的分析模組,cuckoo就能夠完成不同系統平臺下的分析工作。

0x01 環境搭建


測試環境是host:kali 2.0 x64,guest:windows xp sp3 en。

2.1 安裝

獲取cuckoo,我們從github上獲取最新的cuckoo:

#!bash
Git clone https://github.com/cuckoobox/cuckoo.git

安裝cuckoo依賴的python庫:

#!bash
$ sudo apt-get install python python-pip
$ sudo apt-get install mongodb
$ sudo pip install -r requirements.txt

此處安裝可能會出現問題,是系統所安裝的python庫與pip安裝的庫版本不一致導致的,因為系統所安裝的python庫往往比較舊,而pip安裝的庫比較新,且pip安裝的其他庫依賴較新的庫,所以導致問題。解決方法是將系統的python庫解除安裝,不過系統的某些python庫存在依賴,需要用dpkg --purge --force-all 包名來強制解除安裝,然後再用pip來安裝即可解決。

#!bash
$ sudo apt-get install tcpdump
$ sudo apt-get install libcap2-bin

如果想進行記憶體映象分析,需要安裝volatility。

#!bash
$ sudo apt-get install volatility

啟用截圖功能,需要Python Image庫

#!bash
$ sudo pip install PIL

這裡我們採用virtualbox虛擬化平臺,所以需要下載並安裝virtualbox。

2.2 配置

軟體安裝好後,需要先建立一個虛擬機器,可以利用virtualbox圖形介面進行操作。Cuckoo在執行的時候,需要在host上監聽一個地址,用於獲取報告資訊,而這個地址虛擬機器必須能夠訪問的到。這裡採用的網路配置是將虛擬機器網路卡調整為host-only模式,相當於虛擬機器與host之間連線了一根網線。此時,host的網路卡列表中會有一個類似vboxnet0的網路卡,這就是host與虛擬機器之間通訊的網路卡。虛擬機器內部的ip地址可以自己設定,只要跟vboxnet0的地址在一個網段即可。預設情況下vboxnet0是192.168.56.1。虛擬機器可以是192.168.56.101。

為了讓虛擬機器能夠正常的訪問外網,host還需要進行資料轉發,參考官方的命令:

#!bash
iptables -A FORWARD -o eth0 -i vboxnet0 -s 192.168.56.0/24 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A POSTROUTING -t nat -j MASQUERADE
sysctl -w net.ipv4.ip_forward=1

其中第一條命令中的eth0是你host的上網用的真實網路卡地址,vboxnet0則是虛擬網路卡。

最後一條是開啟核心資料轉發。

裝好虛擬機器系統後,為達到最好的相容效果,需要將windows虛擬機器的防火牆,自動更新關閉,然後需要安裝python2.7環境。並將cuckoo根目錄下agent/agent.py複製到虛擬機器中。agent.py負責虛擬機器到主機的資料傳輸,可以將其新增到startup資料夾下,開機自動啟動,如果不想出現黑視窗,可以修改檔名agent.pyagent.pyw。執行agent.pyw後,此時的虛擬機器環境基本搭建完成了,當然,如果需要分析office或者pdf等,那麼還需要安裝這些軟體。現在可以建立一個純淨的系統快照了,以備後用。

虛擬機器配置完成之後,就是配置cuckoo了。Cuckoo的配置檔案在conf目錄下,該目錄下有很多配置檔案,其中:

  • auxiliary.conf 是輔助配置模組,用於輔助其他功能如sniffer,mitm。這裡可以不用配置。
  • cuckoo.conf是主要配置檔案,最主要的是machinery用於指定我們使用的虛擬機器配置檔案,預設是virtualbox,該檔案同樣位於conf目錄下,名字是virtualbox.conf。當然我們可以自己定義自己的虛擬機器配置檔案,並放在conf目錄下,命名規則是一樣的。另外重要的選項是ip和port,用於指定接收分析結果的伺服器。該地址必須能夠讓虛擬機器訪問到,一般設定為虛擬網路卡的地址,比如上面配置的vboxnet0地址192.168.56.1,埠預設就可以。
  • memory.conf是記憶體映象配置選項,主要用於Volatility分析,這裡可以不用配置。
  • processing.conf是結果處理配置模組,其中的配置選項直接影響最終報告的內容,這裡可以不用配置。
  • <machinery>.conf是指所有的虛擬化配置檔案,包括virtualbox、vmware、kvm等。這些檔案屬於一類檔案,在實際的配置當中,我們根據我們的虛擬化環境,只需要配置其中一個即可,同時採用的這個配置檔案也必須在cuckoo.conf的machinery欄位指定。這裡的配置選項都是針對特定虛擬化平臺的,很多選項只適用於某些平臺。我們採用的是virtualbox.conf,其中mode指定virtualbox的執行模式,path指定VBoxManage的絕對路徑,machines指定我們使用的虛擬機器的名字,platform指定虛擬機器執行的系統平臺,ip指定虛擬機器的ip地址。
  • reporting.conf用於配置報告生成的方式,這裡可以不用配置。

最後我們在配置一下cuckoo的web介面。需要開啟reporting.conf中的mongodb。然後開啟mongodb服務:systemctl enable mongodbsystemctl start mongodb。現在可以啟動web服務web/manage.py runserver。服務執行於127.0.0.1:8000。

2.3 執行

Python cuckoo.py 執行cuckoo分析系統。如下圖:

p2

啟動後cuckoo開始等待分析任務。新增分析任務使用根目錄下的utils/submit.py。具體用法可以看幫助,這裡主要介紹利用web介面來新增任務及檢視報告。

在瀏覽器中開啟127.0.0.1:8000

p3

點選submit新增任務,同時還有一些高階選項,如果需要記憶體分析,請選中Full Memory Dump。提交後,cuckoo就會開始自動分析,期間virtualbox會啟動並執行程式。最終分析結果:

p4

最上面就是cuckoo分析的型別,包括靜態分析,行為分析,網路分析等。

0x02 結束語


本文主要介紹了cuckoo的基本特性和安裝,配置方法。利用cuckoo能夠快速的分析惡意程式的部分行為,提高對惡意程式分析的效率。後續文章會繼續分析cuckoo的程式結構及模組開發。

本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!

相關文章