第208期 / February 5, 2015

分享到臉書!分享到維特!分享到噗浪!分享到Google+!分享到微博!轉寄友人友善列印

惡意程式分析沙箱 – cuckoo Sandbox

作者/郭毅志

[發表日期:2015/2/5]

前言
我們經常聽到沙箱這個名詞,但是往往都是特定廠商的內部技術,不過其實在開源的世界也有沙箱的專案。『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/