20192406樑健 2021-2022-2 《網路與系統攻防技術》實驗四實驗報告
20192406樑健 2021-2022-2 《網路與系統攻防技術》實驗四實驗報告
1.實驗內容
一、惡意程式碼檔案型別標識、脫殼與字串提取
對提供的rada惡意程式碼樣本,進行檔案型別識別,脫殼與字串提取,以獲得rada惡意程式碼的編寫作者,具體操作如下:
(1)使用檔案格式和型別識別工具,給出rada惡意程式碼樣本的檔案格式、執行平臺和加殼工具;
(2)使用超級巡警脫殼機等脫殼軟體,對rada惡意程式碼樣本進行脫殼處理;
(3)使用字串提取工具,對脫殼後的rada惡意程式碼樣本進行分析,從中發現rada惡意程式碼的編寫作者是誰?
二、使用IDA Pro靜態或動態分析crackme1.exe與crakeme2.exe,尋找特定輸入,使其能夠輸出成功資訊。
三、分析一個自制惡意程式碼樣本rada,並撰寫報告,回答以下問題:
(1)提供對這個二進位制檔案的摘要,包括可以幫助識別同一樣本的基本資訊;
(2)找出並解釋這個二進位制檔案的目的;
(3)識別並說明這個二進位制檔案所具有的不同特性;
(4)識別並解釋這個二進位制檔案中所採用的防止被分析或逆向工程的技術;
(5)對這個惡意程式碼樣本進行分類(病毒、蠕蟲等),並給出你的理由;
(6)給出過去已有的具有相似功能的其他工具;
(7)可能調查處這個二進位制檔案的開發作者嗎?如果可以,在什麼樣的環境和什麼樣的限定條件下?
四、取證分析實踐
Windows 2000系統被攻破並加入殭屍網路
問題: 資料來源是Snort收集的蜜罐主機5天的網路資料來源,並去除了一些不相關的流量,同時IP地址和其他敏感資訊被混淆。回答下列問題:
(1)IRC是什麼?當IRC客戶端申請加入一個IRC網路時將傳送那個訊息?IRC一般使用那些TCP埠?
(2)殭屍網路是什麼?殭屍網路通常用於什麼?
(3)蜜罐主機(IP地址:172.16.134.191)與那些IRC伺服器進行了通訊?
(4)在這段觀察期間,多少不同的主機訪問了以209.196.44.172為伺服器的殭屍網路?
(5)哪些IP地址被用於攻擊蜜罐主機?
(6)攻擊者嘗試攻擊了那些安全漏洞?
(7)那些攻擊成功了?是如何成功的?
2.實驗過程
一、惡意程式碼檔案型別標識、脫殼與字串提取
實踐過程
- 在kali中使用file命令檢視rada.exe。
- 使用Stud_PE工具檢視rada的基本資訊。
- 使用超級巡警工具對檔案進行脫殼,提示存在殼的樣本庫,對程式進行自動脫殼。
- 在kali中使用strings命令檢視脫殼後的程式RaDa_unpacked.exe,可以看到一些字串和亂碼。
- 執行RaDa_unpacked.exe程式,在Win10中使用ProcessExplorer檢視程式的Properties,看到
Copyright (C) 2004 Raul Siles & David Perez
,可知作者是Raul Siles和David Perez。
- 執行RaDa_unpacked.exe程式彈出的視窗不要關閉,關閉程序就結束了。
二、使用IDA Pro靜態或動態分析crackme1.exe與crakeme2.exe,尋找特定輸入,使其能夠輸出成功資訊。
實踐過程
-
在kali中分析crackme1.exe的檔案型別,得到該程式為32PE命令列程式。
-
根據提示可知該程式在命令列攜帶了引數,數量為1個,因為輸入2個和輸入0個的提示資訊一樣。
- 在WinXP中使用IDA pro分析crackme1.exe檔案
- 檢視函式呼叫資訊,操作欄
View->Graphs->Function calls
- 通過分析函式呼叫資訊,可以猜測主要的函式為
sub_401280
,通過jump->jump to function->sub_401280
- 檢視虛擬碼
view->Open subviews->Generate pseudocode
- 分析虛擬碼功能
程式存在兩層判斷,第一層判斷命令列中輸入的引數個數是否為2,第二層判斷第二個引數是否等於字串"I know the secret"
。如果都滿足則輸出"You know how to speak to programs, Mr. Reverse-Engineer\n"
- 使用IDA pro檢視crackme2.exe的虛擬碼
- 分析虛擬碼可知程式使用了三層if語句,第一層判斷為命令列中輸入的引數個數是否為2,第二層判斷第一個引數(即程式名)是否等於字串
"crackmeplease.exe"
,第三層判斷第二個引數是否等於字串"I know the secret"
。如果都滿足則輸出正確結果。
三、分析一個自制惡意程式碼樣本rada
實踐過程
- 使用FileAlyzerPortable檢視RaDa.exe的MD5值
CAAA6985A43225A0B3ADD54F44A0D4C7
- 使用ProcessExplorer檢視RaDa_unpacked.exe的Properties->Strings,有如下行為:
(1)請求網頁http://10.10.10.10/RaDa/RaDa_commands.html
(2)在系統盤(C:)建立C:\RaDa\bin\RaDa.exe
和C:\RaDa\tmp
(3)修改登錄檔將RaDa.exe設為開機自啟動HKLM\Software\Microsoft\Windows\CurrentVersion\Run\RaDa REG_SZ C:\RaDa\bin\RaDa.exe
-
完成上面的任務後,程式開始遠端DDoS攻擊。
-
之後程式執行登錄檔指令
RegWrite RegRead RegDelete
- 程式在後臺執行,它支援一些執行指令
exe put get screenshot sleep
。從上述程式功能可以合理猜測,這是個後門程式,能夠遠端連線,並提供給攻擊者宿主機器支援的指令。
- 使用IDA pro檢視RaDa_unpacked.exe的Strings window,發現該程式支援一系列引數
參考其他部落格整理如下:
引數 | 作用 |
---|---|
--verbose | 顯示Starting DDoS Smurf remote attack |
--visible | 決定在獲取html檔案時,IE視窗是否可見 |
--server | 指定命令檔案控制伺服器的ip地址、訪問協議及目錄等,預設是http://.10/RaDa |
--commands | 指定命令檔案,預設是RaDa_commands.html |
--cgipath | 指定伺服器上cgi檔案的根目錄,預設是cgi-bin |
--cgiget | 指定負責檔案上傳的cgi指令碼,預設是upload.cgi |
--cgiput | 指定負責檔案下載的cgi指令碼,預設是download.cgi |
--tmpdir | 指定臨時資料夾的位置,預設是C:\RaDa\tmp |
--period | 指定兩次向伺服器請求命令檔案的時間間隔,預設是60秒 |
--cycles | 指定多少次向伺服器請求命令檔案後退出,預設是0(沒有限制) |
--help | 輸出版權資訊 |
--gui | 使用該引數會使樣本出現一個GUI視窗 |
--installdir | 指定樣本的安裝路徑,預設是C:\RaDa\bin |
--noinstall | 使用該引數,樣本將不會安裝、也不會添加註冊表 |
--uninstall | 解除安裝樣本 |
--authors | 如果確認不是在VMware的虛擬機器中執行,則顯示樣本的作者;否則顯示引數不存在 |
- 對
--authors
分析,雙擊進入變數的定義位置
- 右鍵變數名選擇跳轉到引用位置
jump to xref to operand..
,經過檢視引用位置,應該選擇sub_40B010+76 push offset aAuthors; "--authors"
位置
-
sub_40B010+76 push offset aAuthors; "--authors"
位置如下
- 此部分程式碼判斷程式是否在Vmware虛擬機器上執行,其結果存在兩種情況,在Vmware虛擬機器上則輸出
Unknown argument: --authors
,不在則輸出Authors:Raul siles&David Perze, 2004
。
- 回答問題:
(1)提供對這個二進位制檔案的摘要,包括可以幫助識別同一樣本的基本資訊;
MD5值CAAA6985A43225A0B3ADD54F44A0D4C7
PE32 executable for MS Windows
(2)找出並解釋這個二進位制檔案的目的;
從程式功能分析可以合理猜測,這是個後門程式,能夠發出http請求,供攻擊者遠端連線,並提供給攻擊者宿主機器支援的指令。
(3)識別並說明這個二進位制檔案所具有的不同特性;
程式執行後將自己複製到系統盤,並將程式自身寫入開機自啟動中。
(4)識別並解釋這個二進位制檔案中所採用的防止被分析或逆向工程的技術;
使用了UPX加殼處理,並且在程式執行時對作者資訊進行了隱藏。
(5)對這個惡意程式碼樣本進行分類(病毒、蠕蟲等),並給出你的理由;
後門程式,該程式不具有自動傳播功能,並且沒有對程式進行偽裝,但該程式可以提供攻擊者遠端連線和遠端操作指令。
(6)給出過去已有的具有相似功能的其他工具;
2004年發現的木馬Bobax,還有特洛伊木馬Setiri及其前輩GatSla
(7)可能調查處這個二進位制檔案的開發作者嗎?如果可以,在什麼樣的環境和什麼樣的限定條件下?
可能,通過--authors
引數可以在非VMware的虛擬機器中執行,並顯示樣本的作者;在VMware的虛擬機器中執行,則顯示引數不存在Unknown argument: --authors
。作者:Raul siles和David Perze。
四、取證分析實踐
實踐過程
(1)IRC是什麼?當IRC客戶端申請加入一個IRC網路時將傳送那個訊息?IRC一般使用那些TCP埠?
IRC:因特網中繼聊天(Internet Relay Chat),一般稱為網際網路中繼聊天。IRC的工作原理非常簡單,您只要在自己的PC上執行客戶端軟體,然後通過因特網以IRC協議連線到一臺IRC伺服器上即可。
它的特點是速度非常之快,聊天時幾乎沒有延遲的現象,並且只佔用很小的頻寬資源。所有使用者可以在一個被稱為"Channel"(頻道)的地方就某一話題進行交談或密談。每個IRC的使用者都有一個Nickname(暱稱)。
申請加入一個IRC網路時會發送伺服器的域名,TCP申請埠和暱稱。
一般埠號為6667,或者6660-6669範圍的埠,該埠為明文傳輸,SSL加密傳輸在6697埠。
(2)殭屍網路是什麼?殭屍網路通常用於什麼?
殭屍網路是指攻擊者(稱為botmaster)出於惡意目的,傳播殭屍程式控制大量主機,並通過一對多的命令與控制通道所組成的網路。
它往往被黑客用來發起大規模的網路攻擊,如分散式拒絕服務攻擊(DDoS)、海量垃圾郵件等,同時黑客控制的這些計算機所儲存的資訊也都可被黑客隨意“取用”。
(3)蜜罐主機(IP地址:172.16.134.191)與那些IRC伺服器進行了通訊?
使用抓包和分析工具Wireshark分析檔案botnet_pcap_file.dat,並且設定相應的過濾條件ip.src == 172.16.134.191 && tcp.dstport == 6667
,過濾源IP為蜜罐主機且tcp目的埠為6667的資料包。通過分析,IRC伺服器IP包括66.33.65.58
、63.241.174.144
、217.199.175.10
、209.196.44.172
、209.126.161.29
。
(4)在這段觀察期間,多少不同的主機訪問了以209.196.44.172為伺服器的殭屍網路?
指令tcpflow -r botnet_pcap_file.dat 'host 209.196.44.172 and port 6667'
,
會生成172.016.134.191.01152-209.196.044.172.06667
,209.196.044.172.06667-172.016.134.191.01152
和report.xml
三個檔案。
report.xml內容如下:
<configuration>
<fileobject>
<filename>209.196.044.172.06667-172.016.134.191.01152</filename>
<filesize>1082018</filesize>
<tcpflow startime='2003-03-06T04:23:18.829879Z' endtime='2003-03-06T08:27:57.736205Z' mac_daddr='00:05:69:00:01:e2' mac_saddr='00:e0:b6:05:ce:0a' family='2' src_ipn='209.196.44.172' dst_ipn='172.16.134.191' srcport='6667' dstport='1152' packets='9798' out_of_order_count='223' len='1630694' />
</fileobject>
<fileobject>
<filename>172.016.134.191.01152-209.196.044.172.06667</filename>
<filesize>1046</filesize>
<tcpflow startime='2003-03-06T04:23:18.775202Z' endtime='2003-03-06T08:27:57.867166Z' mac_daddr='00:e0:b6:05:ce:0a' mac_saddr='00:05:69:00:01:e2' family='2' src_ipn='172.16.134.191' dst_ipn='209.196.44.172' srcport='1152' dstport='6667' packets='8902' len='536112' />
</fileobject>
</configuration>
將得到的209.196.044.172.06667-172.016.134.191.01152
以utf-8的編碼儲存為test.txt
編寫並執行如下程式可計算得到主機數量,數量為3457
(5)哪些IP地址被用於攻擊蜜罐主機?
使用tcpdump
指定IP地址收集被攻擊的埠寫入1.txt,然後執行tcpdump -n -nn -r botnet_pcap_file.dat 'dst host 172.16.134.191' | grep -v 'reply' | cut -d '.' -f 10 | cut -d ':' -f 1 | sort | uniq | more >1.txt; wc -l 1.txt
統計個數為148
通過snort獲取所有可能連結的主機IP地址,將內容輸出到2.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 > 2.txt;wc -l 2.txt
,共計165個
(6)攻擊者嘗試攻擊了那些安全漏洞?
使用sudo snort -r botnet_pcap_file.dat -c /etc/snort/snort.conf -K ascii
指令先查一下網路流分佈情況,根據包的協議情況,進一步篩選出響應的TCP埠和UDP埠
檢視一下TCP響應過的埠,命令如下tcpdump -r botnet.pcap -nn 'src host 172.16.134.191' and tcp[tcpflags]== 0x12 | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq
檢視一下UDP響應過的埠,命令如下tcpdump -r botnet.pcap -nn 'src host 172.16.134.191' and udp | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq
TCP 響應埠為135(rpc),139(netbios-ssn),25(smtp),445(smb),4899(radmin)和80(http)。udp 響應埠137(netbios-ns)。
分析如下不同埠:
- TCP135只是進行了連線,沒有資料內容交換,很有可能是對這個端點進行了connect掃描
- TCP25只是進行了連線,沒有資料內容交換,很有可能是對這個端點進行了connect掃描
- TCP139這裡大部分連線也沒有傳遞具體會話內容,主要是SMB查點
- TCP445 發現一個PSEXESVC.EXE的檔案,這個二進位制檔案主要是一種Dv1dr32蠕蟲,這種蠕蟲通過IRC進行通訊。
該源IP地址與蜜罐主機建立了會話,攻擊成功,這裡Windows的svcctl MSRPC介面用於同SCM(服務控制管理器)通訊,svcctl漏洞允許匿名使用者連線到SCM,然後就可以列舉所安裝的或正在執行的服務。
- TCP4899 4899是遠端控制軟體所開啟的服務端埠,經常被黑客用來控制被自己控制的遠端電腦。
- TCP80 通過該埠使用指令碼攻擊IIS伺服器的漏洞,從而獲取系統許可權。
210.22.204.101訪問了80埠,攻擊者通過緩衝區溢位獲得命令列:
源IP 218.25.147.83,這裡會看到c:\notworm,是一個蠕蟲攻擊:
其餘對80埠攻擊,蜜罐主機均以IIS伺服器的預設頁面作為迴應,這些攻擊均失敗了:
- UDP137 網路基本輸入/輸出系統(NetBIOS) 名稱伺服器(NBNS) 協議是 TCP/IP 上的 NetBIOS (NetBT) 協議族的一部分,它在基於 NetBIOS 名稱訪問的網路上提供主機名和地址對映方法,在區域網中提供計算機的IP地址查詢服務,處於自動開放狀態,所以訪問這個埠肯定就是 NetBIOS 查點了
(7)哪些攻擊成功了?是如何成功的?
綜上所述,SVCCTL服務漏洞攻擊成功,PSEXESVC蠕蟲攻擊成功,緩衝區溢位攻擊成功了。
3.問題及解決方案
- 問題1:忘記使用IDA pro的反編譯功能分析程式功能
- 問題1解決方案:使用IDA快捷鍵F5,快速反編譯,之後分析程式非常簡單。
- 問題2:使用其他同學編寫好的程式碼時,存在引數不存在的情況
- 問題2解決方案:通過合理推測和分析,將得到的
209.196.044.172.06667-172.016.134.191.01152
以utf-8的編碼儲存為test.txt
4.學習感悟、思考等
本次實驗的任務量非常大,在理解與實際動手操作上花費的時間比其他實驗內容要多很多,在分析和研究實驗內容的同時,也發現很懂學習內容並沒有很好的學到,如組合語言等都不是很能理解。在後兩個實驗內容上,體現出我的分析能力和知識水平還有待提高,在學習和實踐中需要多思考,但時間成本又是無法避免的,還是要多花時間在深入學習上,爭取下次實驗能夠做的更好。