如何量身打造惡意軟件分析環(huán)境(下篇)
對(duì)于每個(gè)惡意軟件研究人員來說,通常首先要做的事情就是搭建得心應(yīng)手的惡意軟件分析環(huán)境。當(dāng)所有的系統(tǒng)配置和軟件安裝完成后,就可以正確地分析和研究惡意軟件了。上一篇文章中,我們?yōu)樽x者介紹了如何安裝配置虛擬機(jī),接下來,我們繼續(xù)為讀者演示如何收集網(wǎng)絡(luò)流量等精彩內(nèi)容。
接上文:《如何量身打造惡意軟件分析環(huán)境(上篇)》
收集網(wǎng)絡(luò)流量
在分析惡意軟件時(shí),最好在受控環(huán)境下運(yùn)行惡意軟件,因?yàn)檫@樣可以使惡意軟件的操作和C2進(jìn)入活躍狀態(tài)。分析網(wǎng)絡(luò)流量,是一個(gè)非常繁瑣的過程,需要在實(shí)時(shí)網(wǎng)絡(luò)流量中檢測(cè)惡意軟件調(diào)用。本節(jié)將幫助大家配置自己的虛擬機(jī),以動(dòng)態(tài)捕獲被測(cè)試的惡意軟件的網(wǎng)絡(luò)流量,除此之外,大家也可以靜態(tài)地單步調(diào)試代碼,這樣也可以手動(dòng)考察當(dāng)前的潛在威脅。
首先必須配置的是MSEdge Windows 10和REMnux之間的虛擬專用網(wǎng)絡(luò)通信。
在Windows 10虛擬機(jī)上,選擇自定義的vmnet2網(wǎng)絡(luò)(Virtual Machine->Network Adapter->Custom (vmnet2))。
在Windows 10虛擬機(jī)上,右鍵單擊任務(wù)欄中的網(wǎng)絡(luò)適配器,然后選擇“Open Network & Internet settings”。
選擇以太網(wǎng)并單擊“Change adapter options”。
右鍵單擊Ethernet0并選擇“Properties”。
雙擊“Internet Protocol Version 4 (TCP/IPv4)”。
通過單選按鈕,選擇“Use the following IP address:”,然后添加IP地址、子網(wǎng)掩碼、默認(rèn)網(wǎng)關(guān)和首選DNS服務(wù)器,具體如下所示:
- IP地址:10.1.2.100
- 子網(wǎng)掩碼:255.255.255.0
- 默認(rèn)網(wǎng)關(guān):10.1.2.1。
- 通過單選按鈕,選擇“Use the following DNS server address:”并添加:
- 首選DNS服務(wù)器: 10.1.2.1
單擊 “OK”按鈕,完成網(wǎng)絡(luò)設(shè)置的配置。
現(xiàn)在,我們已經(jīng)配置好了虛擬專用網(wǎng)絡(luò)的REMnux適配器。
虛擬機(jī)已經(jīng)聯(lián)網(wǎng),也就是說,它們可以相互通信了,因此,現(xiàn)在可以在REMnux虛擬機(jī)上配置一些工具來捕獲流量了。
實(shí)際上,REMnux上已經(jīng)安裝了多種工具,它們都可以用來捕獲網(wǎng)絡(luò)流量。在這里,我們將使用Burp Suite和INetSim。Burp Suite通常用于測(cè)試Web應(yīng)用程序防火墻,但在本例中,我們希望進(jìn)行相應(yīng)的配置,以便當(dāng)Windows 10運(yùn)行惡意軟件時(shí),它將嘗試建立到相關(guān)域名或C2的連接。這些流量有可能使用HTTPS通過Burp Suite,而Burp Suite將綁定到INetSim。INetSim是一個(gè)軟件套件,可以模擬實(shí)驗(yàn)室環(huán)境的常見服務(wù),以幫助分析惡意軟件的網(wǎng)絡(luò)行為。
配置Burp Suite
Burp Suite的設(shè)置很簡(jiǎn)單,但在開始使用之前,我們必須先進(jìn)行相應(yīng)的配置:
打開命令提示符,鍵入命令:$ sudo Burp Suite。
選擇臨時(shí)項(xiàng)目,然后點(diǎn)擊“Next”,再選擇“Start Burp”選項(xiàng)。
選擇Proxy選項(xiàng)卡,然后選擇“Options”選項(xiàng)。在Proxy Listeners下,選擇默認(rèn)接口,然后點(diǎn)擊Edit按鈕。
在Binding選項(xiàng)卡下,將“Bind to address”設(shè)置為Specific address: 10.1.2.1 ,并點(diǎn)擊“OK”按鈕。
重要步驟:
- 返回MSEDGE Windows 10虛擬機(jī),打開Edge瀏覽器。
- 在地址欄中輸入:http://10.1.2.1:8080。這時(shí)應(yīng)該會(huì)看到 "Burp Suite Community Edition"。
- 下載頁(yè)面右上方的CA證書。
- 打開文件所在目錄,雙擊證書文件。
- 選擇“Install Certificate...”。
- 選擇“Current User”作為存儲(chǔ)位置,點(diǎn)擊“Next”按鈕。
- 選擇“Automatically select the certificate store based on the type of certificate”。點(diǎn)擊"Next"按鈕,然后點(diǎn)擊“Finish”按鈕。
進(jìn)入EDGE瀏覽器的設(shè)置步驟,并禁用所有安全功能;這將有助于在下一節(jié)測(cè)試與INetSim的連接。
務(wù)必建立一個(gè)快照。

返回REMnux虛擬機(jī)?,F(xiàn)在,您應(yīng)該仍然在“Burp Suite Proxy”選項(xiàng)卡中,下面開始編輯代理監(jiān)聽器選項(xiàng):
在“Request handling”選項(xiàng)卡下,將“Redirect to host”設(shè)置為localhost,將“Redirect to port”設(shè)置為4443。選中“support for invisible proxying”選項(xiàng)。
現(xiàn)在進(jìn)入“Intercept”選項(xiàng)卡,確保“intercept”選項(xiàng)處于關(guān)閉狀態(tài)。
在“Proxy Listeners”下,選擇默認(rèn)值,然后單擊“Edit”。
在“Binding”選項(xiàng)卡下,選中“Bind to address: Specific address: 10.1.2.1”,但將“Bind”改為443端口。
點(diǎn)擊“Request handling”選項(xiàng)卡,將“Redirect to host”選項(xiàng)設(shè)置為localhost,將“Redirect to port”設(shè)置為4443。
選擇“Support invisible proxying (enable only if needed.)”選項(xiàng),然后單擊“OK”按鈕。

配置INetSim
由于REMnux已經(jīng)預(yù)裝了INetSim,因此,我們可以直接使用自己喜歡的文本編輯器,打開位于/etc/inetsim/目錄中的inetsim.conf文件。按照以下步驟配置INetSim:

小貼士:要注意,惡意軟件有可能通過檢查這個(gè)文件中的所有內(nèi)容是否都被取消注釋來檢測(cè)它是否在虛擬環(huán)境中運(yùn)行。我還沒有遇到過這種情況,但意識(shí)到這種可能性是一件好事。當(dāng)然,您也可以采取更保守的方法,只取消對(duì)打算使用的服務(wù)的注釋。
下一步是在inetsim.conf文件中綁定REMnux網(wǎng)絡(luò)適配器的IP。服務(wù)菜單后的下一部分是service_bind_address。取消#號(hào),將默認(rèn)的IP地址從10.10.10.1改為0.0.0.0。
向下滾動(dòng)到dns_default_ip部分,取消#并將IP地址從10.10.10.1改為10.1.2.1。
最后要做的是綁定HTTPS端口,這樣Burp Suite就可以將流量路由到4443端口。向下滾動(dòng)到https_bind_port部分,取消#字符并將443替換為4443。
保存所有修改,并退出編輯器。

下一步是運(yùn)行下面的命令——注意,這些命令非常重要,必須執(zhí)行,否則INetSim將無法正常工作。Ubuntu提供了一個(gè)處理系統(tǒng)解析的系統(tǒng)服務(wù),它為本地應(yīng)用程序提供網(wǎng)絡(luò)名稱解析。但是,這與INetSim沖突,所以我們需要禁用該服務(wù)。
我們必須禁用system-resolve,并對(duì)其進(jìn)行屏蔽,這樣它就不會(huì)在重啟時(shí)自動(dòng)啟動(dòng)。最后,我們需停止該服務(wù)。
- $ sudo systemctl disable systemd-resolved
- $ sudo systemctl mask systemd-resolved
- $ sudo systemctl stop systemd-resolved

最后一步,是運(yùn)行INetSim:
- $ sudo inetsim

要從Windows 10虛擬機(jī)測(cè)試網(wǎng)絡(luò)連接,請(qǐng)打開命令提示符并輸入ping 10.1.2.1,然后打開Edge瀏覽器并鍵入10.1.2.1。您應(yīng)該看到以下信息:“This is the default HTML page for INetSim HTTP server fake mode.”。
最后一項(xiàng)測(cè)試是確保DNS正常工作,并能為相應(yīng)的請(qǐng)求提供服務(wù)。對(duì)于本例來說,我為此在搜索欄中鍵入了https://www.mymaliciousdomain.com/malwaretrojan.exe。如果一切正常,應(yīng)該看到一個(gè)網(wǎng)頁(yè)警告,指出請(qǐng)求的網(wǎng)站并不安全。

我還喜歡在調(diào)查惡意軟件時(shí)使用Wireshark捕獲數(shù)據(jù)包來分析pcaps。
在REMnux的終端中打開一個(gè)新的窗口,并鍵入$ wireshark。
應(yīng)用程序打開后,點(diǎn)擊工具欄最左邊的鯊魚鰭圖標(biāo),開始捕獲數(shù)據(jù)包。

“引爆”惡意軟件
當(dāng)惡意軟件被執(zhí)行時(shí),它通常會(huì)向某個(gè)域名或IP地址發(fā)出一些請(qǐng)求。INetSim通過偽造正在等待響應(yīng)的惡意軟件的響應(yīng)來幫助解決這個(gè)問題。一個(gè)例子是,如果惡意軟件被執(zhí)行并連接到一個(gè)域,除非滿足條件(也就是收到響應(yīng)),否則不會(huì)在沒有響應(yīng)的情況下繼續(xù)運(yùn)行后續(xù)惡意操作。如果惡意軟件沒有收到響應(yīng),就會(huì)終止,不會(huì)繼續(xù)其惡意行為。這正是實(shí)時(shí)環(huán)境的用武之地:響應(yīng)惡意軟件的“呼叫”,并捕捉網(wǎng)絡(luò)流量。
作為實(shí)驗(yàn)室環(huán)境設(shè)置的最后一步,我們將“引爆”一個(gè)臭名昭著的二進(jìn)制木馬(或任何您自己選擇的惡意軟件)來測(cè)試配置是否能夠正常工作。
我們將通過二進(jìn)制惡意軟件Trickbot(SHA256:49d95cae096f7f73b3539568b450076227b4ca42c0240044a7588ddc1f1b6985)進(jìn)行測(cè)試。在這里,已經(jīng)打開了Process Explorer和TCPView來監(jiān)控Trickbot這個(gè)變種的執(zhí)行情況。


在深入展開逆向分析之前,“引爆”惡意軟件可以節(jié)省很多時(shí)間,因?yàn)橐驗(yàn)檫@樣可以收集關(guān)鍵信息,從而做出一個(gè)無偏見的假設(shè)。在這個(gè)例子中,當(dāng)我們引爆這個(gè)trickbot樣本時(shí),有三個(gè)“callout”很顯眼。
這些callout是為了從微軟更新站點(diǎn)獲取文件;獲取這些cab文件的是一個(gè)沒有可信證書的自動(dòng)更新器。證書信任列表是一個(gè)由受信任實(shí)體簽名的預(yù)定義項(xiàng)目列表。這些被請(qǐng)求的cab文件是用來更新和擴(kuò)展現(xiàn)有的功能,方法是使用證書信任列表將已知不受信任的證書添加到不受信任的證書存儲(chǔ)區(qū)。

盡管Trickbot是當(dāng)今分支最多的惡意軟件之一,并且其callout也更為復(fù)雜,但如果您正處于研究的開始階段并且從未遇到過這種二進(jìn)制文件,那么Trickbot是一個(gè)很好的起點(diǎn)。
我已經(jīng)成功使用該實(shí)驗(yàn)室配置很多年了。早在2016年,當(dāng)我臨危受命處理一起突發(fā)事件時(shí),該實(shí)驗(yàn)室的搭建方法就派上用場(chǎng)了。當(dāng)時(shí),我沒有時(shí)間對(duì)二進(jìn)制文件進(jìn)行初步分類,因?yàn)楫?dāng)時(shí)在參加一個(gè)電話會(huì)議,由調(diào)查組負(fù)責(zé)人做簡(jiǎn)要匯報(bào)。我立即通過快照啟動(dòng)了這兩個(gè)虛擬機(jī),并在了解事件最新情況的同時(shí)引爆了二進(jìn)制文件。在5分鐘內(nèi),我通知了調(diào)查負(fù)責(zé)人有關(guān)該二進(jìn)制文件所呼叫的IP的信息,這足以使威脅獵人邁出重要的一步。結(jié)束電話會(huì)議之后,我開始對(duì)該惡意軟件進(jìn)行逆向分析,并提取了其他IOC和TTP。
小結(jié)
在不同的惡意軟件分析情形下,實(shí)驗(yàn)室環(huán)境的搭建和配置會(huì)有所不同。分析惡意軟件時(shí),您需要使用不同的工具進(jìn)行剖析和深入分析。我希望本文介紹的SentinelLabs RevCore Tools和相關(guān)配置能夠?yàn)槟峁椭袝r(shí)您可能需要分析一些不同的內(nèi)容,并且可能需要其他工具來對(duì)二進(jìn)制文件進(jìn)行反匯編處理。逆向分析惡意軟件的過程是一場(chǎng)馬拉松,而不是短跑;我們的目標(biāo)應(yīng)該是提高自身的技能,并從分析的每種惡意軟件中學(xué)習(xí)新的知識(shí)和技能。
參考資料:
- https://support.microsoft.com/en-us/help/2677070/an-automatic-updater-of-untrusted-certificates-is-available-for-window
- https://askubuntu.com/questions/191226/dnsmasq-failed-to-create-listening-socket-for-port-53-address-already-in-use
- https://gallery.technet.microsoft.com/scriptcenter/Change-the-Desktop-b5b2141c
- https://gist.github.com/trietptm/b84ccad9db01f459ac7
本文翻譯自:https://labs.sentinelone.com/building-a-custom-malware-analysis-lab-environment/