用VirtualBox、INetSim和Burp配置一個惡意軟體分析實驗室

在這篇文章中,我們將創建一個與主機操作系統和互聯網隔離的隔離虛擬網路,我們將在其中設置兩個受害虛擬機(Ubuntu和Windows 7)以及分析伺服器,以模擬常見的Internet服務,如HTTP或DNS。然後,我們將能夠記錄和分析任何Linux或Windows惡意軟體的網路通信,不知不覺中連接到我們的伺服器而不是Internet。我們分析了臭名昭著的TeslaCrypt ransomware的流量,ransomware從2015年到2016年中感染了大量的系統。

1.創建虛擬機

這裡有兩個鏈接可用於下載Ubuntu和Windows 7虛擬機鏡像。

Ubuntu(受害機1和分析機):從OsBoxes (直接鏈接)下載Ubuntu 16.10 64位

Windows 7(受害者機器2):從Microsoft開發人員網站下載 (選擇 Win 7(x86)上的IE 11和 VirtualBox)

Ubuntu機器

OsBoxes為我們提供了一個即用的虛擬磁碟,我們可以簡單地插入虛擬機並立即開始使用。首先提取你剛才下載的檔案。

$7za e Ubuntu_16.10_Yakkety-VB-64bit.7z

您將獲得一個代表機器的虛擬磁碟的VDI文件。我們將從設置基本的Ubuntu鏡像開始,然後克隆我們的兩個Ubuntu虛擬機。

在VirtualBox中,創建一個新的機器(新建按鈕),並稱之為Ubuntu 分析。然後,選擇要給它多少RAM。此時,VirtualBox會詢問您是否要創建新的虛擬硬碟或使用已經退出的虛擬硬碟。選擇 使用現有的虛擬硬碟文件,單擊下拉列表右側的目錄圖標,然後選擇VDI文件。然後您可以啟動機器。默認密碼是 osboxes.org

基本設置

默認鍵盤使用QWERTY布局。如果像我一樣,你不熟悉它,首先改變它(設置>文本輸入)。

或者,您也可以使用以下方式更改默認密碼:

$ passwd osboxes

選擇設備>在虛擬機運行的窗口的菜單中插入客戶添加CD映像。然後會詢問您是否要運行安裝程序; 回答是,並輸入默認密碼(默認為 osboxes.org)。安裝完成後,關閉虛擬機電源。

克隆

現在你有一個基本的Ubuntu VM準備好了,克隆它(在VirtualBox主界面> 克隆中右鍵點擊它)。命名克隆Ubuntu的受害者, 並選中該複選框以重新初始化其MAC地址。選擇克隆類型的完整克隆。

Windows 7機器

之前提供的下載鏈接指向包含OVA文件的ZIP存檔。與VDI文件不同,它不僅是虛擬磁碟,而且是對虛擬機(包括其虛擬磁碟)的完整描述,因此,您從中創建虛擬機所需的唯一工作就是選擇「文件」>「導入設備」VirtualBox的主窗口。如果你負擔得起,最好給它至少1024 MB的RAM。

導入過程完成後(可能需要幾分鐘),重命名VM Windows 7受害者並啟動它。

2.設置分析機:INetSim,Burp

INetSim

INetSim是一個非常方便和強大的實用程序,允許在機器上模擬一堆標準Internet服務。默認情況下,它將模擬一個可以輕鬆調整的DNS,HTTP和SMTP。由於我們稍後將受害者機器配置為沒有Internet訪問,因此我們將需要INetSim進行模擬。

$ sudo su$ echo "deb http://www.inetsim.org/debian/ binary/" > /etc/apt/sources.list.d/inetsim.list$ wget -O - http://www.inetsim.org/inetsim-archive-signing-key.asc | apt-key add -$ apt update$ apt install inetsim

為了能夠在分析計算機中複製粘貼這些命令,請選擇設備>共享剪貼板>雙向。

稍後我們將介紹如何使用INetSim。

Burpsuite

INetSim對SSL支持相當有限:它提供了一個單一主機(inetsim.org)的證書,並且不支持即時生成SSL證書。這是一個問題,因為大多數惡意軟體現在通過SSL加密他們的通信。我們將使用Burp作為透明的SSL代理,這將代表受害機器和INetSim進行SSL連接。如果您現在不需要攔截SSL流量,則不一定需要Burp

Burp支持為任何我們的受害者機器生成即時SSL證書,將連接到。它還創建單個根CA證書,我們稍後將在我們的受害者計算機中導入。這樣我們就可以攔截惡意軟體發送的加密通訊。

您可以從官方網站下載Burpsuite。下載是一個bash安裝腳本,運行它來安裝Burp:

$ bash?/ Downloads / burpsuite_free_linux_v1_7_23.sh

默認情況下,Burp可執行文件將為 ?/ BurpSuiteFree / BurpSuiteFree。

3.建立隔離的虛擬網路

作為提醒,我們希望建立一個包含三個虛擬機的隔離網路。該網路將無法訪問Internet。此外,我們希望分析機器充當到受害機器的網路網關,以便輕鬆地攔截網路流量並模擬各種服務,如DNS或HTTP。

為了實現這一點,我們將使用VirtualBox內部網路。對於熟悉VirtualBox的用戶,內部網路與主機網路不同,內部網路根本無法訪問主機。

對於每個三個虛擬機,請執行以下操作:

打開其設置

· 轉到網路部分

· 將「附加到」欄位更改為「內部網路」

· 輸入惡意軟體分析網路作為網路名稱

分析機

打開分析計算機,打開終端並運行ifconfig命令。你應該有一個名為enp0s3的界面。如果名稱不同,請按照說明進行調整。

以root身份打開/etc/network/nterfaces文件,最後添加以下內容:

auto enp0s3 iface enp0s3 inet static address 10.0.0.1 netmask 255.255.255.0

這將在我們的虛擬網路上為機器分配靜態IP10.0.0.1。現在我們已經配置了網路介面,我們需要啟動它:

sudo ifup enp0s3

Ubuntu的受害機器

該過程在這裡非常相似,除了我們將它分配給靜態IP10.0.0.2,並指示它使用10.0.0.1作為網關和DNS伺服器。在文件/etc/network/interfaces的末尾附加以下內容:

auto enp0s3 iface enp0s3 inet static address 10.0.0.2 gateway 10.0.0.1 netmask 255.255.255.0 dns-nameservers 10.0.0.1

並運行:

$ sudo ifup enp0s3 $ sudo service networking restart

您現在應該可以ping分析機:

$ ping 10.0.0.1PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=0.480 ms64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=0.526 ms

Windows 7受害機器

右鍵單擊任務欄中的網路圖標(或轉到開始菜單>控制面板>網路和Internet>網路和共享中心),單擊本地連接2>屬性,在Internet協議版本4上選擇,然後單擊屬性按鈕。

我們將靜態IP10.0.0.3分配給機器,其他的配置跟ubnutu受害機類似。

確保驗證設置(單擊 確定,應用等,直到所有設置窗口都消失)。您現在應該可以ping分析機:

ping 10.0.0.1 Pinging 10.0.0.1 with 32 bytes of data: Reply from 10.0.0.1: bytes=32 time<1ms TTL=64 Reply from 10.0.0.1: bytes=32 time<1ms TTL=64

完成設置

4.創建和恢復快照

現在我們的受害者虛擬機已正確配置並處於乾淨狀態(即未被任何惡意軟體感染),我們將對其當前狀態進行快照。這樣,我們就可以在任何時候輕鬆地將它們重置到這個乾淨的狀態。

VirtualBox非常簡單:在虛擬機運行的窗口中,只需選擇「 機器」>「拍攝快照」。 您可以將快照命名為 Clean狀態。 確保做到這一點的都你的Ubuntu和Windows 7受感染計算機。分析機器也不會傷害它。

當您想要將機器重置為乾淨狀態時,只需將其關閉,並選中複選「 當前快照」清除狀態。

5.在分析機上使用INetSim和Burp分析網路流量

INetSim

如前所述,INetSim使我們能夠提供範圍廣泛的標準互聯網服務,包括DNS,HTTP(S),SMTP等。它有一個默認的配置文件 /etc/inetsim/inetsim.conf,這是非常有說明力的。它還附帶一個包含各種默認文件的數據目錄(/ var / lib / inetsim)。

由於您每次進行新的分析時可能需要一個不同的INetSim配置,因此建議您創建一個目錄 "analysis ",該"analysis "將包含每個分析的子目錄。

$ mkdir analysis

為了舉例,我們已經創建了一個子目錄,並在其中複製默認的INetSim配置文件和數據文件夾。

$ mkdir analysis/test-analysis$ cp /etc/inetsim/inetsim.conf analysis/test-analysis$ sudo cp -r /var/lib/inetsim analysis/test-analysis/data$ sudo chmod -R 777 data$ cd analysis/test-analysis

預設情況下,INetSim只偵聽本地介面。要用於虛擬網路的所有計算機,請替換剛剛複製的配置文件中的以下行:

#service_bind_address 10.0.0.1

通過:

service_bind_address 0.0.0.0

現在,我們需要禁用systemd-resolved,這是一個本地DNS伺服器,默認情況下隨Ubuntu一起提供,並且會與INetSim的DNS伺服器衝突。

$ sudo systemctl disable systemd-resolved.service $ sudo service systemd-resolved.service stop

默認情況下,INetSim的DNS伺服器將所有域名解析為127.0.0.1。我們希望任何域名解析為10.0.0.1(分析機器IP); 取消注釋以下行:

#dns_default_ip 10.0.0.1

我之前提到,INetSim的SSL支持不是最佳的,因為它只有單個主機名(inetsim.org)的單一證書,並且不允許即時生成每個主機證書。為了克服這個問題,我們將在埠443上運行Burp作為INetSim前面的透明代理。因此,我們需要將INetSim的HTTPS伺服器綁定到其他埠,例如埠8443.替換以下行:

#https_bind_port 443

通過:

https_bind_port 8443

現在,我們來運行INetSim!

$ sudo inetsim --data data --conf inetsim.confINetSim 1.2.6 (2016-08-29) by Matthias Eckert & Thomas Hungenberg[...]=== INetSim main process started (PID 3605) ===Session ID: 3605Listening on: 0.0.0.0Real Date/Time: 2017-06-04 12:58:07Fake Date/Time: 2017-06-04 12:58:07 (Delta: 0 seconds) Forking services... * dns_53_tcp_udp - started (PID 3621) * irc_6667_tcp - started (PID 3631) * daytime_13_tcp - started (PID 3638) * discard_9_tcp - started (PID 3642) * discard_9_udp - started (PID 3643) * ident_113_tcp - started (PID 3634) * syslog_514_udp - started (PID 3635)[...]

如您所見,INetSim已經推出了一系列網路服務。這些都是可配置的,可以在配置文件中禁用。這個配置文件有很好的記錄,並解釋了INetSim的所有選項; 我建議你花幾分鐘閱讀。

現在,您的受害者VM打開電源,打開Web瀏覽器,並瀏覽到任何地址(例如github.com)。您應該看到以下內容:

(請注意,此默認文件對應於HTML文件數據/ http / fakefiles / sample.html。)

回到分析機上,關閉INetSim(CTRL + C)。

* dns_53_tcp_udp - stopped (PID 3621)* irc_6667_tcp - stopped (PID 3631)* daytime_13_tcp - stopped (PID 3638)[...]Simulation stopped. Report written to /var/log/inetsim/report/report.3877.txt (24 lines)

如您所見,INetSim已經為我們創建了一個總結報告。它包含我們受害機器與INetSim服務的所有互動。

=== Report for session 3877 ===Real start date : 2017-06-04 13:18:27Simulated start date : 2017-06-04 13:18:27Time difference on startup : none2017-06-04 13:18:38 First simulated date in log file2017-06-04 13:18:40 DNS connection, type: A, class: IN, requested name: github.com2017-06-04 13:18:40 HTTP connection, method: GET, URL: http://github.com/, file name: data/http/fakefiles/sample.html2017-06-04 13:18:40 HTTP connection, method: GET, URL: http://github.com/favicon.ico, file name: data/http/fakefiles/sample.html2017-06-04 13:18:40 Last simulated date in log file

竊取SSL攔截

為了能夠分析SSL流量,我們還需要運行Burp。我們將作為INetSim前面的透明代理運行它。當受害者機器將啟動SSL連接時,它將首先進入Burp,然後將其委託給INetSim。此部分不是強制性的:如果您現在不需要攔截SSL流量,請跳到下一部分。

以下是Burp在中間的樣子:

以root身份啟動Burp:

$ sudo /home/osboxes/BurpSuiteFree/BurpSuiteFree

(我們需要以root身份運行,否則將無法綁定埠443,這是一個特權埠,還有其他方法可以做到這一點,但是我們不用在這裡)

創建一個臨時項目(您還沒有任何其他選項與免費版本),然後轉到 代理選項卡,然後到 選項子選項卡。您將看到Burp的默認偵聽器偵聽埠8080。

單擊與默認偵聽器相對應的行,然後編輯它(編輯)按鈕。配置如下:

· 綁定選項卡

綁定到港口:443

綁定地址:所有介面

· 請求處理選項卡:

重定向到主機:localhost

重定向到埠:8443

檢查 支持隱形代理

驗證設置,你應該得到一個類似於:

默認情況下,Burp攔截傳入的請求,並等待您明確地讓它們通過。為了避免這種情況,請轉到「截取」選項卡,然後單擊「截取」按鈕以禁用它。

由於Burp Free不允許您保存項目,因此您可以導出我們剛剛創建的設置,以便在下次啟動Burp時導入它們。為此,請使用Burp> Project選項>保存項目選項。

讓我們確保我們的設置正確工作。啟動INetSim,並運行:

$ curl --insecure https//localhost

你應該得到:

<html> <head> <title>INetSim default HTML page</title> </head> <body> <p></p> <p align="center">This is the default HTML page for INetSim HTTP server fake mode.</p> <p align="center">This file is an HTML document.</p> </body></html>

在我們的受害者機器上導入Burp的CA證書

打開Windows 7受影響的計算機電源,並嘗試瀏覽到HTTPS URL(例如https://github.com),您會看到類似於以下內容的警告:

這是因為Burp生成由其自己的CA證書籤署的SSL證書,我們的受害者機器現在不信任。

在Burp中,在埠8080上添加新的代理監聽器,監聽所有介面(選項卡 代理>選項>按鈕 添加):

然後,從受害機器,瀏覽到 http://10.0.0.1:8080。

點擊CA證書的右上角下載打嗝的CA證書。

在Windows 7受影響的計算機上:打開文件,單擊 安裝證書> 下一步>將所有證書放在以下存儲中:受信任的根證書頒發機構 >下一步

在Ubuntu的受害機器上:

將證書轉換為適當的格式(.crt)

$ openssl x509 -in?/ Downloads / cacert.der -inform DER -out burp.cr

複製到/ usr / local / share / ca-certificates

$ sudo cp burp.crt / usr / local / share / ca-certificates / $ sudo update-ca-certificates

默認情況下,Firefox不使用系統的證書存儲。如果您希望SSL連接在Firefox中正常工作,請將Firefox設置轉到「 高級」>「證書」>「導入」。選擇 burp.crt,檢查 信任此CA以識別網站

可以了,好了!

在受影響的計算機中導入Burp的CA證書後,請確保創建新的快照(例如,安裝了Burp的CA證書的Clean狀態)。

6.在分析計算機和主機操作系統之間設置共享文件夾

在某些時候,您顯然會將一些文件傳輸到分析機器或受害機器之一; 我們將設置一個文件共享來實現它。

在運行分析計算機的VirtualBox中,轉到 設備>共享文件夾>共享文件夾設置。創建一個新的共享文件夾,選擇要映射到的主機操作系統的本地文件夾,然後選擇一個名稱。選中該複選框以使其成為永久性。

現在在分析機上安裝共享文件夾:

$ mkdir?/ malware-analysis-share $ sudo mount -t vboxsf -o uid = $ UID,gid = $(id -g)malware-analysis-share?/ malware-analysis-share

你很好去在我的情況下,位於/home/christophetd/malware-analysis-share中的我的主機的所有文件也將在分析機器中的?/ malware-analysis-share中結束。

將文件傳輸到受害計算機

在某些時候,您最有可能需要將一些文件(例如惡意軟體樣本)傳輸到其中一個受害機器。為他們設置文件共享是一個壞主意,因為它意味著受害者機器(並且在一定程度上,您運行的惡意軟體樣本)可以訪問它。

實現文件傳輸到Ubuntu受害者機器的最簡單的方法是使用netcat。這是一個簡單的例子。

# Receiving machine having IP 10.0.0.2$ nc -lvp 4444 > file.exe# Analysis machine (sender)$ cat file_to_transfer.exe | nc 10.0.0.2 4444

對於Window的受害者,我們遺憾的是沒有netcat可用。可能存在替代方案,但是默認情況下它們可能不會運送。一個選擇是使用INetSim將文件提供給受害機器。

# inetsim.conf# Remove the default line: http_fakefile exe sample_gui.exe x-msdos-program# Replace it byhttp_fakefile exe file_to_transfer.exe x-msdos-program# And put file_to_transfer.exe in ./data/http/fakefiles

使用此配置,只需瀏覽以「.exe」結尾的任何URL(例如http://github.com/file.exe)。

7.演示時間:TeslaCrypt ransomware

時間快速演示!我下載了勒索軟體樣本TeslaCrypt,它傳遞給我們的Windows 7受害機器,並執行它。幾秒鐘後,虛擬機的所有文件都已加密,彈出如下窗口。

檢查INetSim的日誌後,我們可以看到ransomware進行了以下DNS查找:

  • 7tno4hib47vlep5o.tor2web.org

  • 7tno4hib47vlep5o.tor2web.blutmagie.de

  • 7tno4hib47vlep5o.tor2web.fi

  • bitcoin.toshi.io

並向這些域發送了多個HTTP請求。

HTTPS connection, method: GET, URL: https://7tno4hib47vlep5o.tor2web.org/state.php?U3ViamVjdD1QaW5nJmtleT0xNUIzOEIxOEFGMjBDMERCMkE3Qzc3MUUwMTQzNjNGMkNCODc4MUIxNTZENTE5Q0M1RjIyMDMzNUQ0NzE0QUEzJmFkZHI9MUxOVUYzQnFMM29iMUNUMmFWcDNjVzROYjh6a2tWaVZ3VCZmaWxlcz0wJnNpemU9MCZ2ZXJzaW9uPTAuMi42YSZkYXRlPTE0OTY2NDg2NzUmT1M9NzYwMSZJRD0xNiZzdWJpZD0wJmdhdGU9RzA=HTTPS connection, method: GET, URL: https://7tno4hib47vlep5o.tor2web.blutmagie.de/state.php?U3ViamVjdD1QaW5nJmtleT0xNUIzOEIxOEFGMjBDMERCMkE3Qzc3MUUwMTQzNjNGMkNCODc4MUIxNTZENTE5Q0M1RjIyMDMzNUQ0NzE0QUEzJmFkZHI9MUxOVUYzQnFMM29iMUNUMmFWcDNjVzROYjh6a2tWaVZ3VCZmaWxlcz0wJnNpemU9MCZ2ZXJzaW9uPTAuMi42YSZkYXRlPTE0OTY2NDg2NzUmT1M9NzYwMSZJRD0xNiZzdWJpZD0wJmdhdGU9RzE=HTTPS connection, method: GET, URL: https://7tno4hib47vlep5o.tor2web.fi/state.php?U3ViamVjdD1QaW5nJmtleT0xNUIzOEIxOEFGMjBDMERCMkE3Qzc3MUUwMTQzNjNGMkNCODc4MUIxNTZENTE5Q0M1RjIyMDMzNUQ0NzE0QUEzJmFkZHI9MUxOVUYzQnFMM29iMUNUMmFWcDNjVzROYjh6a2tWaVZ3VCZmaWxlcz0wJnNpemU9MCZ2ZXJzaW9uPTAuMi42YSZkYXRlPTE0OTY2NDg2NzUmT1M9NzYwMSZJRD0xNiZzdWJpZD0wJmdhdGU9RzI=HTTPS connection, method: GET, URL: https://bitcoin.toshi.io/api/v0/addresses/1LNUF3BqL3ob1CT2aVp3cW4Nb8zkkViVwT

我們看到類似的請求是tor2web.orgtor2web.blutmagie.de和tor2web.fi。這些服務允許訪問Tor網路,而無需安裝Tor瀏覽器或類似的工具。

惡意軟體聯繫到Tor隱藏服務 7tno4hib47vlep5o.onion,這可能是某種C&C伺服器。請求的有效內容是一個base64編碼的字元串,解碼為:

Subject=Ping&key=15B38B18AF20C0DB2A7C771E014363F2CB8781B156D519CC5F220335D4714AA3&addr=1LNUF3BqL3ob1CT2aVp3cW4Nb8zkkViVwT&files=0&size=0&version=0.2.6a&date=1496648675&OS=7601&ID=16&subid=0&gate=G1

它也對bitcoin.toshio.io(不再存在)進行API調用 ,最有可能檢查贖金是否已經支付給比特幣地址 1LNUF3BqL3ob1CT2aVp3cW4Nb8zkkViVwT。似乎惡意軟體為每個受感染的計算機生成唯一的比特幣地址,因為地址沒有收到或發送任何錢。

結論

希望本指南將有所幫助。有有一些惡意軟體會檢測虛擬機行為(例如什麼都不做)。這是MalwareBytes關於這個問題的一篇文章。

另外,請記住,分析惡意軟體的網路流量可能非常有用,只是一種動態分析。其他包括監控註冊表,系統調用,打開/創建的文件等。Open Security Training提供了一個關於該主題的完整實踐課程,免費。

如若轉載,請註明原文地址: 用VirtualBox、INetSim和Burp配置一個惡意軟體分析實驗室 更多內容請關注「嘶吼專業版」——Pro4hou

推薦閱讀:

零日競賽:Google和360如何改變內核漏洞挖掘領域的規矩?
【轉載】關於近期曝光的針對銀行SWIFT系統攻擊事件綜合分析
Linux 防火牆技術
CISSP現在在國內是什麼情況?
中國黑客界發生過什麼事?

TAG:信息安全 | 网络安全 |