1. 程式人生 > 其它 >20192423 2021-2022-2 《網路與系統攻防技術》實驗四實驗報告

20192423 2021-2022-2 《網路與系統攻防技術》實驗四實驗報告

20192423 2021-2022-2 《網路與系統攻防技術》實驗四實驗報告

1.實驗內容

一、惡意程式碼檔案型別標識、脫殼與字串提取
二、使用IDA Pro靜態或動態分析crackme1.exe與crakeme2.exe,尋找特定輸入,使其能夠輸出成功資訊。
三、分析一個自制惡意程式碼樣本rada,並撰寫報告,回答問題
四、取證分析實踐,分析殭屍網路。

2.實驗過程

一、惡意程式碼檔案型別標識、脫殼與字串提取

(1)使用檔案格式和型別識別工具,給出rada惡意程式碼樣本的檔案格式、執行平臺和加殼工具;

使用file RaDa.exe指令檢視惡意程式碼型別
樣本型別:PE32 executable (GUI) Intel 80386, for MS Windows

 

使用指令strings RaDa.exe 列印其中字串,發現顯示一堆亂碼,所以應該是加了殼。

(2)使用超級巡警脫殼機等脫殼軟體,對rada惡意程式碼樣本進行脫殼處理;

使用軟體peid檢視相關的加殼資訊。可以看到此程式使用upx加殼執行平臺為win32,且有可圖示化介面(GUI)

 

使用超級巡警脫殼軟體進行脫殼:脫殼之後成功輸出為 RaDa_unpacked.exe

 

(3)使用字串提取工具,對脫殼後的rada惡意程式碼樣本進行分析,從中發現rada惡意程式碼的編寫作者是誰?

使用指令strings RaDa_unpacked.exe 列印其字串。

 

開啟pe軟體,並執行我們成功脫殼後的RaDa_unpacked.exe 程式。可以在pe軟體中開啟我們執行的程序,找到rada程序,雙擊檢視相關資料,可以找到這個後門程式的作者及時間

 

二、使用IDA Pro靜態或動態分析crackme1.exe與crakeme2.exe,尋找特定輸入,使其能夠輸出成功資訊。

1.分析crackme1.exe

使用指令file檢視crackme1.exe,檔案型別為PE32 executable (console) Intel 80386, for MS Windows。是32位可執行程式,在windows系統上執行。

 

我們先去嘗試猜測crackme1.exe這個檔案的輸入;
執行crackme1.exe此檔案,直接執行以及輸入一個以上的引數會得到 I think you are missing something ,而輸入一個引數則會得到 Pardon? What did you say?

 ,由得到的結果不同我們猜測輸入引數為1個

 

使用ida開啟程式crackme1.exe後在strings介面我們看到前面有四條語句:

I think you are missing something
I know the secret
Pardon? What did you say?
You konw how to speak to programs,Mr.Reverse-Engineer

 

利用IDA開啟程式crackme1.exe,我們先檢視整個程式的函式呼叫關係圖。點選 ida veiw——veiw——Gragh——Function calls

 

Setunhandledexceptionfilter:異常處理函式
setmode是一種設定開啟檔案方式的函式程式。
getmainargs函式:呼叫命令列解析,並通過傳遞的指標將引數複製到 main()
ExitProcess 結束呼叫的程序及其所有的執行緒

其中sub_401280函式下呼叫了strump函式來對我們所輸入的引數進行比對
用於比較兩個字串並根據比較結果返回整數。基本形式為strcmp(str1,str2)
若str1=str2,則返回零
若str1<str2,則返回負數

若str1>str2,則返回正數

fprintf()函式根據指定的format(格式)傳送資訊(引數)到由stream(流)指定的檔案.因此fprintf()可以使得資訊輸出到指定的檔案。
Printf()函式輸出到螢幕。

 

開啟sub_401280的函式圖可以看到,當我們輸入的參數數量大於等於2時,會將字串I think you are missing something 壓入棧中並輸出。當我們輸入的引數數量為1時則是利用函式strump判斷是否為字串“I know the secret ” 如果匹配成功的話就輸出字串“You konw how to speak to programs, Mr.Reverse-Engineer”,不匹配的話則輸出“Pardon? What did you say? ”

 

開啟命令列輸入crackme1.exe “I know the secret “,發現輸出了字串“You konw how to speak to programs, Mr.Reverse-Engineer”

 

2.分析crackme2.exe

使用指令file檢視crackme2.exe,檔案型別為PE32 executable (console) Intel 80386, for MS Windows。是32位程式,且為命令列形式的程式,在windows系統上執行。

 

推測crackme2.exe的輸入引數個數為一個。

 

利用IDA開啟crackme2.exe,得到函式圖以及字串表。

 

由分析crackme1.exe的方法可得到crackme2.exe正確輸出如下:

 

三、分析一個自制惡意程式碼樣本rada

1.檢視檔案資訊分析檔案

首先使用MD5對該惡意程式進行摘要資訊分析
得到md5摘要值為caaa6985a43225a0b3add54f44a0d4c7

 

根據這些字串我們可以看到這個RaDa.exe程式會連線到http://10.10.10.10名為RaDa_commands.html的一個網站
CGI-BIN是一種特殊的目錄,在進行互動式的WWW訪問時,需要伺服器上有相應的程式對訪問者輸入的資訊進行處理。
CGI程式實現檔案的下載和上傳,下載檔案保存於主機中的C:/RaDa/tmp目錄下
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run是控制計算機啟動項的登錄檔資訊,後門程式還激活了自啟動.
程式執行後就開始“DDOS”遠端攻擊,控制該主機來攻擊其他主機遠端後門控制。

其中還可以發現其作者以及建立時間以及一些指令(screeenshot、sleep)

 

利用dependency walker開啟已經脫殼後的rada,我們可以發現不少的惡意程式碼常用匯出函式。

 

  • GetAdaptersInfo
    用來獲取系統上網路介面卡的相關資訊。後門程式有時會呼叫GetAdaptersInfo函式,來取得關於受感染主機的摘要資訊。
  • GetModuleFilename
      返回目前程序裝載某個模組的檔名。惡意程式碼可以使用這個函式,在目前執行程序中修改或者複製檔案。
  • GetSystemDefaultLangId
      返回系統預設語言設定的函式。這可以用來定製顯示與檔名,作為對感染主機摘要資訊的獲取
  • GetSystemDefaultLangId
    返回系統預設語言設定的函式。這可以用來定製顯示與檔名,作為對感染主機摘要資訊的獲取
  • GetVersionEx
      返回目前正在執行的Windows作業系統版本資訊。這可以被用來獲取受害主機的摘要資訊,或是在不同Windows版本中選擇未經文件化結構的一些偏移地址。
  • GetWindowsDirectory
      返回Windows目錄的檔案系統路徑(通常是C:\Windows),惡意程式碼經常使用這個函式來確定將其他惡意程式安裝到哪個目錄。

    等等惡意程式碼函式

執行程式rada.exe並且開啟wireshark進行抓包,發現確實本機向10.10.10.10傳送了大量的TCP資料包,滿足ddos攻擊的特徵。

 

2.回答問題

1.提供對這個二進位制檔案的摘要,包括可以幫助識別同一樣本的基本資訊

MD5摘要資訊:caaa6985a43225a0b3add54f44a0d4c7
是32位在windows系統上執行的有圖形化介面的可執行檔案,使用了加殼軟體upx進行了加殼處理。

2.找出並解釋這個二進位制檔案的目的

該惡意程式會自啟動,該後門程式會讓本機對指定主機發送大量http請求,也就是ddos拒絕服務攻擊,同時攻擊者也能遠端控制主機做一些操作,這應該是一個遠端後門控制程式。

3.識別並說明這個二進位制檔案所具有的不同特性

Rada.exe在c盤某目錄下生成了兩個子目錄:bin和tmp,rada.exe啟用後將木馬檔案釋放到bin中。
Rada.exe在登錄檔的啟動項下建立了其的鍵值,將木馬檔案的路徑添加了進去(自啟動)。

4.識別並解釋這個二進位制檔案中所採用的防止被分析或逆向工程的技術

使用了加殼工具UPX進行了加殼處理

5.對這個惡意程式碼樣本進行分類(病毒、蠕蟲等),並給出你的理由

該檔案是遠端控制主機的程式,不符合病毒和蠕蟲的特徵,猜測有可能是木馬或者基於http協議的殭屍後門程式。

6.給出過去已有的具有相似功能的其他工具。

Bobax——2004。

7.可能調查出這個二進位制檔案的開發作者嗎?如果可以,在什麼樣的環境和什麼樣的限定條件下?

作者是Raul siles和David Perze。建立時間是2004年。

四、取證分析實踐,分析殭屍網路。

(1)IRC是什麼?當IRC客戶端申請加入一個IRC網路時將傳送那個訊息?IRC一般使用那些TCP埠?

IRC的全稱是:Internet Relay Chat。它的意思在中文裡一般稱為網際網路中繼聊天。
註冊完成後,客戶端使用 JOIN 資訊來加入頻道
IRC 通常使用 6667 埠,也會使用 6660—6669 埠。

(2)殭屍網路是什麼?殭屍網路通常用於什麼?

殭屍網路是由感染的計算機網路的惡意軟體在一個攻擊方的控制之下,被稱為“殭屍牧民”。每個在bot-herder控制下的個人機器被稱為機器人。
殭屍網路的應用場景最常見的應該是DDoS分散式拒絕服務。殭屍網路發起的拒絕服務攻擊,瞬間就可以使中小企業的網站癱瘓。

(3)蜜罐主機(IP地址:172.16.134.191)與那些IRC伺服器進行了通訊?

開啟資料檔案

 

設定過濾條件:ip.src == 172.16.134.191 && tcp.dstport == 6667(IRC伺服器明文傳輸通常在6667埠監聽)

 

我們可以看到五個IRC伺服器,分別為:
209.126.161.29
66.33.65.58
63.241.174.144
217.199.175.10
209.196.44.172

(4)在這段觀察期間,多少不同的主機訪問了以209.196.44.172為伺服器的殭屍網路?

使用tcpflow開啟我們資料檔案來進行分析,tcpflow類似於是wireshark的命令列版本。使用指令apt-get install tcpflowtcpflow,然後執行tcpflow -r botnet_pcap_file.dat 'host 209.196.44.172 and port 6667',利用tcpflow開啟botnet_pcap_file.dat檔案,設定過濾條件host以及埠號。如下圖執行完之後會生成三個檔案。

 

執行指令
cat 209.196.044.172.06667-172.016.134.191.01152 | grep "^:irc5.aol.com 353" | sed "s/^:irc5.aol.com 353 rgdiuggac @ #x[^x]*x ://g" | tr ' ' '\n' | tr -d "\15" | grep -v "^$" | sort -u | wc -l
得到3457,故有3457臺主機訪問了。

 

(5)哪些IP地址被用於攻擊蜜罐主機?

使用指令,將攻擊蜜罐主機的ip篩選出輸出至20192423.txt檔案中。
tcpdump -n -nn -r botnet_pcap_file.dat 'dst host 172.16.134.191' | awk -F " " '{print $3}' | cut -d '.' -f 1-4 | sort | uniq | more > 20192423.txt;wc -l 20192423.txt
開啟20192423.txt檔案可以看到有165個IP地址用於攻擊蜜罐主機。

 

(6)攻擊者嘗試了哪些安全漏洞?(7)哪些攻擊成功了?是如何成功的?

通過wireshark協議分級我們可以看到大部分為tcp資料包。

 

使用指令篩選響應的tcp埠:
tcpdump -r botnet_pcap_file.dat -nn 'src host 172.16.134.191 and tcp[tcpflags]== 0x12' | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq

 

TCP 響應埠為
135(rpc),139(netbios-ssn),25(smtp),445(smb),4899(radmin)和80(http)

依次分析這些埠發現在445埠中有61.111.101.78向蜜罐主機發送PSEXESVC.EXE
攻擊者通常會使用PsExec在遠端主機執行命令。在客戶端執行psexec.exe後,如果伺服器認證成功,會將psexesvc.exe上傳到服務端的ADMIN$目錄並作為服務執行,在執行完命令後刪除對應的服務和psexesvc.exe。
 通過對客戶端和服務端的事件日誌、登錄檔、檔案系統進行分析,可以從客戶端主機獲得連線的目的主機,連線時間等資訊;從服務端主機可以獲得連線的客戶端資訊,連線時間等資訊。

 

可以看到有主機的響應,且有\PIPE\ntsvcs,說明此攻擊是成功的。

 

看到210.22.204.101向蜜罐傳送了很多的C,可能在進行緩衝區溢位攻擊

 

如圖218.25.147.83向蜜罐主機發送的http報文帶有蠕蟲(c:\notworm)

 

3.問題及解決方案

問題1:

在win10系統下使用strings命令報錯
是因為strings為linux命令,當然在win下沒法使用啦,安裝CygwinPortable工具並將其檔案所在位置配置好環境變數即可!具體可參考window如何使用Linux命令,如何在windows系統中使用linux的命令

 

問題2:

grep報錯提示“匹配到二進位制檔案(標準輸入)”

 

由命令export LC_COLLATE=C把LC_COLLATE環境變數設定成C可以解決問題。

 

4.學習感悟、思考等

通過此次實驗,掌握了不少分析惡意軟體的方法及軟體(IDA,PE等等),脫殼軟體、加殼軟體UPX、查殼工具PEID等等。不得不說此次實驗對我還是有很大挑戰的,很多方面不知道該從何下手,分析惡意軟體的時候也是詢問了很多同學以及查看了雲班課中的視訊才有點頭緒,因此也是學會了不少。

參考資料