惡意程式分析沙箱 – cuckoo Sandbox

作者/郭毅志

前言 我們經常聽到沙箱這個名詞,但是往往都是特定廠商的內部技術,不過其實在開源的世界也有沙箱的專案。『cuckoo』是本次的主角,起源自Google營隊的專案,讓人有興趣的是,在測試惡意程式很有名的Virustotal也有採用它作為分析平台。 Cuckoo Sandbox起於2010年Honeynet其中一個專案,直到2011年realse版才正式釋出,現在的版本為1.1,是一個基於虛擬化環境所建立的惡意程式分析系統,能自動執行並且分析檔案,同時紀錄以下資訊: .追蹤程式Process .程式對於檔案的異動 .Memory dump .程式的網路行為 .程式運作過程中,Windows桌面截圖 可以分析大部份常見的檔案,包含: .Exe 執行檔 .DLL .PDF 文件 .Microsoft Office文件 .URL、HTML .CPL .VBscript .ZIP壓縮檔 .Java JAR .Python檔案 .… 環境介紹 Cuckoo系統主要分成三個部份:Cuckoo host、Analysis Guests、Virtual platform,Virtual platform建置於cuckoo host上,提供Analysis guest虛擬環境紀錄惡意程式的行為,而後在cuckoo host做分析,cuckoo系統管理與執行也是在cuckoo host做操作,本文系統所使用的OS與軟體資訊如下:


安裝 Cuckoo是一個以Python為基礎開發出來的系統,因此請確認所使用的平台已安裝python,同時,官方建議的版本為2.7,而Ubuntu 14.04預載的python即為2.7,所以此部份就無須另外安裝。 根據cuckoo的需要,還必須要載入python的相關套件,在下載套件之前,要先做更新:

Python 必要安裝套件:『SQLAlchemy』、『BSON』

根據所需要的功能,可以選擇性的安裝不同套件:

Python選擇性安裝套件:『Dpkt』、『Jinja2』、『Magic』、『Pydeep』、『Pymongo』、『Yara』、『Libvirt』、『Bottlepy』、『Django』、『Pefile』、『Volatility』、『MAEC Python bindings』、『Charder』。

Yara & Pydeep 參考官方網站安裝步驟 Yara安裝,下載Yara套件:

下載完成後,進行解壓縮與安裝:

安裝Yara以前,必須先安裝『libtool』、『automake』、『libmagic-dev』此三個套件:

安裝Yara:

啟用模組:

Pydeep安裝 由於pydeep是基於ssdeep,因此,必須要先安裝ssdeep:

安裝ssdeep:

下載pydeep:

安裝ssdeep:

此系統支援多種虛擬機,本文是以VirtualBox為虛擬平台:

為了紀錄惡意軟體運作期間的網路行為,cuckoo預設是以tcpdump,監控網路:

此外,由於tcpdump需要使用root權限,如果預定執行cuckoo的帳號,不希望具有root權限,可以針對tcpdump做權限設定:

在執行cuckoo之前,請確認執行cuckoo的使用者,以及建立與運行虛擬機的使用者是相同的,否則會導致無法正常運行cuckoo。

下載cuckoo檔案,解壓縮至任意路徑後,進入『conf』做初步設定,在此需要分別設定三個檔案『auxiliary.conf』、『cuckoo.conf』、『virtualbox.conf』(本文是以VirtualBox作為虛擬平台),下圖為了方便設定上的說明,將會使用到的參數,做初步設定,因此後續將以此圖為例做說明:


此處所說的resultserver即為Cuckoo host,此處的IP用於讓Analysis Guests傳輸資訊,因此須設定Virtual network網段的IP。

vboxnet0為VirtualBox的虛擬網路介面,預設是沒有此介面的,需要手動新增。


在此設定檔中,有幾個參數需要特別做說明,cuckoo允許載入多個Analysis guest,透過參數『machines』可以載入多個Guest的設定(如圖示),以此設定檔為例 [cuckoo1]即為一個Guest的設定(如圖示),cuckoo1為此設定的名稱(須與machines設定的名稱相同),而『label』則是此虛擬機的名稱(如圖示),IP則是Guest的IP address。



準備Guest 本文以Windows 7 作為Analysis guest,在系統設定部份,主要有三個部份需要調整: .關閉自動更新 .關閉防火牆

.關閉UAC 此部份僅針對Windows 7,如果Guest為Windows XP,則無須做此設定。

安裝Python 由於Cuckoo的運作模式,必須要在Guest放置Agent(由Python撰寫),因此同樣需要安裝Python 2.7。

安裝相關軟體 根據所要偵測的檔案格式,安裝適合的軟體,例如:Adobe Reader、Microsoft Office…等,同時,跟系統一樣都必須關閉更新。 網路設定 由於目前cuckoo不支援DHCP,Guest必須使用固定IP,使用DHCP可能會使得Host無法跟agent連線,導致cuckoo無法正常運作,而Virtual network設定為Host-Only模式,Host方面需要做Forward設定:

將agent資料夾內的agent.py放入Guest內的任意位置,確認Windows已經完全開機後,執行agent(如下圖),以此狀態做snapshot(cuckoo將以此狀態開始做分析,因此請確認agent已經執行再做Snapshot),完成後即可將虛擬機關機。

執行cuckoo 進入cuckoo/資料夾內,執行cuckoo.py:

此處必須要確定,有載入虛擬機:

註:請確認有確實載入machine,如果沒有正確載入,請重新檢查virtualbox.conf設定。 執行Web介面 Cuckoo有提供web模組,執行檔位於/cuckoo/utils/web.py:

開啟Web管理介面


透過『File to upload』上傳樣本檔,『Machine』選擇所要使用的Guest,上傳後,可以在Host上看到cuckoo運作的過程,分析完成後,在『Browse』查看掃描結果,點選『Target』的項目,可以檢視分析報告。


報告中主要分成幾個部份: 1.File Details 2.Signatures 3.Screenshots 4.Static Analysis 5.Dropped Files 6.Network Analysis 7.Behavior Summary 8.Processes 9.Volatility 同時,紀錄該程式的網路行為的部份,可以點選Network下載.pcap:



此外,Cuckoo也可以針對URL做測試,但是目前cuckoo的web套件,僅提供檔案樣本分析,URL必須要透過cuckoo/utils/內的submit.py做傳送與分析:


分析惡意程式 實際以惡意程式樣本做測試,可以從分析結果確認該樣本確實為惡意程式:File Details

展開後,可以從防毒引擎的掃描結果,初步判定,該程式是屬於木馬程式:

而後從該程式置放的檔案,做進一步查詢,發現一個惡意程式『YY.exe』,


以及幾個無法確認的元件(針對此類無法由雜湊值確認的元件,必須要另外手動的方式提取與上傳掃描)。

結論 Cuckoo是透過紀錄程式執行過程中的行為,包含檔案存取、註冊表、網路連線等,但是主要辨識病毒的部份是依靠virustotal的資料庫,而其他的行為(例如:網路連線)主要還是要依靠操作者的判斷。此工具的目的在於將可疑程式的初步分析過程自動化,並且提供相關資訊給操作者相關資訊,但是對於惡意程式的完整分析,最後還是要依靠分析人員來完成。 (作者目前服務於凌群電腦資安技術研發處) 參考資料 ‧Cuckoo [簡介]、[安裝]、[分析惡意程式] http://www.cuckoosandbox.org/about.html http://www.cuckoosandbox.org/download.html http://docs.cuckoosandbox.org/en/latest/introduction/what/ http://docs.cuckoosandbox.org/en/latest/installation/host/ http://docs.cuckoosandbox.org/en/latest/installation/guest/ http://docs.cuckoosandbox.org/en/latest/usage/start/ http://docs.cuckoosandbox.org/en/latest/usage/submit/ http://docs.cuckoosandbox.org/en/latest/usage/web/ http://docs.cuckoosandbox.org/en/latest/usage/packages/ http://qiita.com/knqyf263/items/9354dc229b2b3d548460 ‧Yara [安裝] https://github.com/plusvic/yara https://github.com/plusvic/yara/releases/tag/v3.2.0 http://yara.readthedocs.org/en/v3.2.0/gettingstarted.html ‧Pydeep [安裝] https://pypi.python.org/pypi/pydeep https://github.com/kbandla/pydeep http://ssdeep.sourceforge.net/usage.html#install http://ssdeep.sourceforge.net/usage.html#basic ‧VirtualBox [安裝] https://www.virtualbox.org/wiki/Downloads https://www.virtualbox.org/manual/ch06.html[6.2. Introduction to networking modes] ‧Wireshark [執行cuckoo] https://www.wireshark.org/download.html ‧Virustotal [分析惡意程式] https://www.virustotal.com/