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

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

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

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

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

最后一步,是運行INetSim:
- $ sudo inetsim

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

我還喜歡在調查惡意軟件時使用Wireshark捕獲數據包來分析pcaps。
在REMnux的終端中打開一個新的窗口,并鍵入$ wireshark。
應用程序打開后,點擊工具欄最左邊的鯊魚鰭圖標,開始捕獲數據包。

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


在深入展開逆向分析之前,“引爆”惡意軟件可以節省很多時間,因為因為這樣可以收集關鍵信息,從而做出一個無偏見的假設。在這個例子中,當我們引爆這個trickbot樣本時,有三個“callout”很顯眼。
這些callout是為了從微軟更新站點獲取文件;獲取這些cab文件的是一個沒有可信證書的自動更新器。證書信任列表是一個由受信任實體簽名的預定義項目列表。這些被請求的cab文件是用來更新和擴展現有的功能,方法是使用證書信任列表將已知不受信任的證書添加到不受信任的證書存儲區。

盡管Trickbot是當今分支最多的惡意軟件之一,并且其callout也更為復雜,但如果您正處于研究的開始階段并且從未遇到過這種二進制文件,那么Trickbot是一個很好的起點。
我已經成功使用該實驗室配置很多年了。早在2016年,當我臨危受命處理一起突發事件時,該實驗室的搭建方法就派上用場了。當時,我沒有時間對二進制文件進行初步分類,因為當時在參加一個電話會議,由調查組負責人做簡要匯報。我立即通過快照啟動了這兩個虛擬機,并在了解事件最新情況的同時引爆了二進制文件。在5分鐘內,我通知了調查負責人有關該二進制文件所呼叫的IP的信息,這足以使威脅獵人邁出重要的一步。結束電話會議之后,我開始對該惡意軟件進行逆向分析,并提取了其他IOC和TTP。
小結
在不同的惡意軟件分析情形下,實驗室環境的搭建和配置會有所不同。分析惡意軟件時,您需要使用不同的工具進行剖析和深入分析。我希望本文介紹的SentinelLabs RevCore Tools和相關配置能夠為您提供幫助,但有時您可能需要分析一些不同的內容,并且可能需要其他工具來對二進制文件進行反匯編處理。逆向分析惡意軟件的過程是一場馬拉松,而不是短跑;我們的目標應該是提高自身的技能,并從分析的每種惡意軟件中學習新的知識和技能。
參考資料:
- 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/