用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位
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機器
導入過程完成後(可能需要幾分鐘),重命名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.1
PING 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 ms
64 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
Reply from 10.0.0.1: bytes=32 time
完成設置
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: 3605
Listening on: 0.0.0.0
Real Date/Time: 2017-06-04 12:58:07
Fake 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:27
Simulated start date : 2017-06-04 13:18:27
Time difference on startup : none
2017-06-04 13:18:38 First simulated date in log file
2017-06-04 13:18:40 DNS connection, type: A, class: IN, requested name: github.com
2017-06-04 13:18:40 HTTP connection, method: GET, URL: http://github.com/, file name: data/http/fakefiles/sample.html
2017-06-04 13:18:40 HTTP connection, method: GET, URL: http://github.com/favicon.ico, file name: data/http/fakefiles/sample.html
2017-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
你應該得到:
INetSim default HTML page
This is the default HTML page for INetSim HTTP server fake mode.
This file is an HTML document.
在我們的受害者機器上導入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 by
http_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查找:
並向這些域發送了多個HTTP請求。
結論
希望本指南將有所幫助。有有一些惡意軟體會檢測虛擬機行為(例如什麼都不做)。這是MalwareBytes關於這個問題的一篇文章。
另外,請記住,分析惡意軟體的網路流量可能非常有用,只是一種動態分析。其他包括監控註冊表,系統調用,打開/創建的文件等。Open Security Training提供了一個關於該主題的完整實踐課程,免費。
點擊展開全文
※雲南外國語學校:雲南省基礎教育國際化實驗示範學校
※這款武器中國即將實驗成功,美國:我最忌憚中國的一個項目!
※凍一盒冰塊在家做實驗!酷暑里好玩還能清涼幾度
※值得點贊!建築文化遺產傳承信息技術文化部重點實驗室「別有洞天」
※日本衛星量子通信實驗成功,你怎麼看?
TAG:實驗 |
※三款照片處理軟體橫評:Lightroom、CaptureOne、AfterShot
※頭條:基於WordPress,Joomla和CodeIgniter的數以百計的網站感染ionCube惡意軟體
※BondPath:一個以Google Play為幌子的Android間諜軟體
※Pure Storage收購瑞典文件管理軟體公司Cpmpuverde
※NVIDIA推出Quadro Experience軟體 專業卡更爽了
※RPA軟體之Automation Anywhere研究
※Google Play上的AndroidFoulGoal.A間諜軟體分析
※Electron 軟體框架漏洞影響眾多熱門應用:Skype、Signal、Slack、Twitch……
※LinuxUbuntu的apt軟體包管理
※PostProcess Technologies發布CONNECT3D軟體
※新型惡意軟體Nigelthorn通過Facebook和Chrome插件傳播
※惡意軟體針對Google的DoubleClick
※Lazarus Group在C Hack中部署其首個Mac惡意軟體
※Malwarebytes Labs對SamSam勒索軟體的分析
※勒索軟體Kraken Cryptor RaaS分析
※軟體定義網路項目OpenContrail改名為Tungsten Fabric
※Darling能夠Linux上運行macOS軟體
※軟體定義汽車?Stop Coding&Start Configuring「GGAI佈道」
※基於DNS通信的Powershell惡意軟體DNSMessenger分析
※PCB layout用啥軟體比較好?Cadence or AD?