20222406 2024-2025-1 《網路與系統攻防技術》實驗四實驗報告
1.實驗內容
惡意程式碼分析、IDA Pro 靜態或動態分析可執行檔案、自制惡意程式碼樣本 rada 分析、Windows 2000 系統被攻破後的取證分析。
2.實驗過程
2.1 惡意程式碼檔案型別標識、脫殼與字串提取
對提供的rada惡意程式碼樣本,進行檔案型別識別,脫殼與字串提取,以獲得rada惡意程式碼的編寫作者。
2.1.1 使用檔案格式和型別識別工具,給出rada惡意程式碼樣本的檔案格式、執行平臺和加殼工具
先去學習通下載.rar壓縮包並複製到虛擬機器中,輸入密碼rada將檔案提取出來:
透過命令列檢視檔案型別,輸入file RaDa.exe
檢視檔案資訊:
進入學習通下載peid.rar並解壓,使用.exe檢視加殼型別:
檔案格式:PE32說明該檔案是32位的可執行檔案。
執行平臺:(GUI) Intel 80386, for MS Windows說明能在基於Intel 80386的Windows作業系統系統上執行。
加殼工具:UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo
2.1.2 使用超級巡警脫殼機等脫殼軟體,對rada惡意程式碼樣本進行脫殼處理
在學習通下載脫殼.rar,即超級巡警脫殼軟體,按路徑尋找檔案,選擇剛下載的RaDa.exe,進行脫殼處理:
接下來會出現脫殼後的程式碼檔案:
2.1.3 使用字串提取工具,對脫殼後的rada惡意程式碼樣本進行分析,從中發現rada惡意程式碼的編寫作者是誰
將Windows端的unpacked檔案拖到Kali虛擬機器中,這裡我們使用命令strings RaDa_unpacked.exe
:
從上圖可知作者是Raul Siles && David Perez
2.2 使用IDA Pro靜態或動態分析crackme1.exe與crakeme2.exe,尋找特定輸入,使其能夠輸出成功資訊
2.2.1 檢視crackme1.exe資訊
在學習通下載crackme1.exe和crackme2.exe並拖進kali:
輸入命令file crackme1.exe
檢視資訊:
32位的可執行檔案,能在基於Intel 80386的Windows作業系統系統上執行。
2.2.2 在命令提示符中測試
在windows中的命令提示符中輸入crackme1.exe 2406
和crackme1.exe 2406 wangrui
和crackme1.exe 2406 wr
:
由上圖可以發現,命令列只輸入一個引數時輸出Pardon? What did you say?,輸入超過兩個引數時輸出I think you are missing something.
2.2.3 利用IDA Pro分析檔案
在學習通下載IDA pro.rar,解壓後開啟.exe檔案進行安裝:
隨後在IDA中開啟crackme1.exe即可發現:
可以發現,如果輸入"I know the secret"
的話,就會輸出You know how to speak to programs, Mr. Reverse-Engineer。如果不是I know the secret,就會輸出pardon? what did you say?。引數數量更多就會輸出I think you are missing something.
2.2.4 得到正確結果
輸入"I know the secret"
:
2.2.5 檢視crackme2.exe資訊
輸入file crackme2.exe
:
2.2.6 在命令提示符中測試
在windows中的命令提示符中輸入crackme2.exe 2406
和crackme2.exe 2406 wangrui
和crackme2.exe 2406 wr
:
由上圖可以發現,命令列只輸入一個引數時輸出I have an identity problem.,輸入超過兩個引數時輸出I think you are missing something.
2.2.7 利用IDA Pro分析檔案
經過與2.2.3同樣的步驟後,可以看出,要想得到正確的結果,需要輸入crackmeplease.exe "I know the secret"
,
我們將檔名修改為crackmeplease.exe,即可得到正確的結果:
2.3 分析一個自制惡意程式碼樣本rada,並撰寫報告,回答以下問題
2.3.1 提供對這個二進位制檔案的摘要,包括可以幫助識別同一樣本的基本資訊
在虛擬機器中輸入md5sum RaDa.exe
檢視MD5摘要值:
2.3.2 找出並解釋這個二進位制檔案的目的
在學習通下載ProcessExplorer.rar並解壓開啟:
雙擊執行unpacked的RaDa.exe檔案,注意出現彈窗後不要點確定:
在Process Explorer中雙擊程序,可以看到:
點選String:
可以發現:
該程式使用HTTP協議連線到目標為10.10.10.10\RaDa\RaDa_commands.html的網頁上,下載和上傳某些檔案,
並且在主機C盤中建立一個資料夾C:/RaDa/tmp,並且將檔案RaDa.exe複製到了C:\RaDa\bin中,
新增了一個登錄檔項:HKLM\Software\Microsoft\Windows\CurrentVersion\Run\,啟用了自啟動,
還新增了一個登錄檔項:HKLM\Software\VMware, Inc.\VMware Tools\InstallPath,實現了對入侵主機的遠端控制,
該程式還可以執行DDos攻擊,對登錄檔內容進行更改,還可以執行其他入侵操作,作者是Raul siles和David Perze。
2.3.3 識別並說明這個二進位制檔案所具有的不同特性
1.該二進位制檔案能修改登錄檔,新增了一個登錄檔項:實現了開機自啟動RaDa。
2.自我複製到C盤,將RaDa.exe複製在Rada\bin資料夾中。
3.實現遠端控制。
4.實現入侵系統並操縱主機,如get screenshot sleep操作。
2.3.4 識別並解釋這個二進位制檔案中所採用的防止被分析或逆向工程的技術
upx加殼,在上面的截圖中我們可以看到存在亂碼,這是加殼後的結果。
2.3.5 對這個惡意程式碼樣本進行分類(病毒、蠕蟲等),並給出你的理由
這屬於後門程式。首先它不具備自我複製的機制,沒有實現在計算機中的傳播;其次它沒有偽裝操作,也不存在欺騙下載的操作。而其可以實現操控目標主機、提權的行為,是後門程式的主要特點,所以判定為後門。
2.3.6 給出過去已有的具有相似功能的其他工具
msfvenom
2.3.7 可能調查出這個二進位制檔案的開發作者嗎?如果可以,在什麼樣的環境和什麼樣的限定條件下?
可以,在Windows的命令提示符中,輸入RaDa.exe --authors
即可檢視作者:
2.3.8 給出至少5種檢測該惡意軟體的方法,例如基於特徵碼的方法,需要詳細介紹每種方法
- 基於特徵碼的檢測方法
原理:特徵碼是後門惡意軟體特有的一段程式碼或位元組序列。安全廠商透過對已知的後門程式進行分析,提取出這些獨特的特徵碼。檢測工具在掃描檔案或系統記憶體時,會將目標內容與特徵碼資料庫進行比對,如果發現匹配的特徵碼,則判定存在後門惡意軟體。
舉例:對於著名的 “灰鴿子” 遠端控制後門程式,它有特定的通訊協議特徵碼和程式內部某些關鍵函式的特徵碼。安全軟體可以將這些特徵碼記錄下來,當掃描到新的程式或網路流量中有這些特徵碼時,就會發出警報。 - 行為分析檢測方法
原理:透過監測程式在系統中的行為來判斷是否為後門惡意軟體。例如,觀察程式是否有異常的網路連線行為,是否對系統關鍵檔案或登錄檔進行未經授權的修改,是否有隱藏自身程序或檔案的行為等。
舉例:有些後門程式會在系統啟動時自動執行,並嘗試連線到攻擊者指定的伺服器,接收指令來竊取使用者資料。如果監測到某個程式在啟動時建立了可疑的網路連線,並且沒有合理的業務邏輯解釋,就可能是後門。 - 啟發式檢測方法
原理:基於對程式程式碼結構、邏輯以及執行時特徵的啟發式規則來判斷是否存在惡意行為。這些規則是根據對大量惡意軟體和正常軟體的分析總結出來的。例如,程式程式碼中存在大量加密函式且加密邏輯不明、使用異常的系統呼叫序列、有不合理的動態記憶體分配和釋放模式等。
舉例:如果一個程式在執行過程中頻繁呼叫一些用於隱藏自身或繞過系統安全機制的系統函式,如透過非常規的方式修改記憶體中的程序資訊以達到隱藏目的,啟發式檢測系統就會認為它有較高的惡意可能性。 - 基於沙箱的檢測方法
原理:將可疑程式放置在一個隔離的沙箱環境中執行,這個環境模擬真實的作業系統,但對系統資源和網路訪問有嚴格的監控和限制。透過觀察程式在沙箱中的行為,包括檔案操作、登錄檔訪問、網路連線等,來判斷其是否為後門惡意軟體。
舉例:當檢測到一個來源不明的可執行檔案時,將其放入沙箱中執行。如果它在沙箱中試圖連線到一些可疑的 IP 地址、嘗試突破沙箱限制訪問主機系統資源,就可以判斷為惡意軟體。 - 基於檔案完整性檢查的方法
原理:對系統中的關鍵檔案和重要的可執行檔案計算其雜湊值(如 MD5、SHA - 1、SHA - 256 等),並將這些雜湊值儲存在安全的資料庫中。定期或實時重新計算這些檔案的雜湊值,並與資料庫中的值進行對比。如果雜湊值發生變化,說明檔案可能被後門惡意軟體修改或替換。
舉例:對於系統的關鍵動態連結庫檔案,計算其初始的 SHA - 256 雜湊值。如果有後門程式試圖修改這個檔案來注入惡意程式碼,重新計算雜湊值時就會發現與原始值不同,從而發現異常。
2.4 取證分析實踐
Windows 2000系統被攻破並加入殭屍網路
問題: 資料來源是Snort收集的蜜罐主機5天的網路資料來源,並去除了一些不相關的流量,同時IP地址和其他敏感資訊被混淆。回答下列問題:
2.4.1 IRC是什麼?當IRC客戶端申請加入一個IRC網路時將傳送那個訊息?IRC一般使用哪些TCP埠?
- IRC即網際網路中繼聊天,是一種透過網路進行實時文字通訊的協議。它允許使用者連線到 IRC 伺服器,並在頻道(可以是公開或私人的)中與其他使用者交流。IRC網路由多個IRC伺服器組成,這些伺服器相互連線以傳遞訊息,使得使用者可以在全球範圍內參與聊天。IRC在早期的網際網路社交中扮演了重要角色,至今仍在一些特定領域和社群中使用。
- 當 IRC 客戶端申請加入一個 IRC 網路時,它會傳送 NICK和 USER命令。
- NICK 命令:用於指定客戶端在 IRC 網路中的暱稱。例如:NICK username,這裡的 “username” 就是使用者選擇的暱稱,它在整個 IRC 網路或特定伺服器的頻道中代表該使用者的標識。如果暱稱已被其他使用者使用,伺服器可能會要求客戶端重新選擇。
- USER 命令:提供關於使用者的更多資訊,格式通常為USER
: 。不過在實際應用中,一些欄位可能並不完全按照字面意義填寫。例如:USER guest 0 * :Guest User,其中 “guest” 是使用者名稱,“0” 和 “*” 可以是佔位符或特定的標識資訊,“Guest User” 是使用者的真實名稱(可以是隨意指定的)。
- IRC 一般使用的 TCP 埠是 6667。不過,也存在一些其他的埠可用於 IRC。
- 6660 - 6669:這一系列埠都可能被 IRC 使用。不同的 IRC 網路或伺服器可能會選擇其中的某個埠,6667 是最常見的預設埠。
- 7000:部分 IRC 服務也可能使用這個埠來建立連線。
- 這些埠的使用可能因不同的 IRC 伺服器配置而有所不同。需要注意的是,在網路安全環境中,對這些埠的監控和管理是很重要的,因為 IRC 也曾被惡意利用,如作為殭屍網路控制通訊的途徑等。
2.4.2 殭屍網路是什麼?殭屍網路通常用於什麼?
- 殭屍網路是指採用一種或多種傳播手段,將大量主機感染殭屍程式病毒,從而在控制者和被感染主機之間所形成的一個可一對多控制的網路。這些被感染的主機就像 “殭屍” 一樣,雖然本身具有一定的計算和網路連線能力,但被惡意攻擊者掌控,執行攻擊者下達的各種指令。
- 殭屍網路通常的用途:
- 發動分散式拒絕服務攻擊(DDoS)
攻擊者利用殭屍網路中的大量 “殭屍主機” 同時向目標伺服器傳送海量的請求,這些請求數量遠遠超過伺服器的處理能力,導致伺服器資源耗盡,無法正常響應合法使用者的請求。例如,透過傳送大量的 TCP SYN 包(SYN Flood 攻擊),使伺服器的連線佇列被填滿,無法建立新的連線。 - 傳送垃圾郵件
殭屍網路控制者可以在殭屍主機上安裝郵件群發軟體,利用這些主機的網路連線和郵件傳送功能,大量傳送垃圾郵件。由於郵件來源分散在眾多被感染的主機上,很難被簡單地識別和攔截。 - 竊取資訊
殭屍程式可以在被感染的主機上搜尋並收集使用者的敏感資訊,如登入憑證(使用者名稱和密碼)、銀行卡資訊、個人隱私檔案等。這些資訊可以透過殭屍網路的控制通道回傳到攻擊者手中。 - 進行點選欺詐
在按點選付費的網路廣告模式中,攻擊者利用殭屍網路中的主機自動點選廣告連結,使廣告主誤以為獲得了大量真實的點選量,從而消耗廣告主的預算,並可能從中獲取非法利益(如果攻擊者與廣告發布平臺存在不正當交易)。
2.4.3 蜜罐主機(IP地址:172.16.134.191)與那些IRC伺服器進行了通訊?
在學習通下載檔案botnet_pcap_file.dat,使用wireshark開啟,設定過濾條件ip.src == 172.16.134.191 && tcp.dstport == 6667
,觀察結果:
檢視Destination一列,會發現一共出現過5臺IRC伺服器:66.33.65.58、63.241.174.144、217.199.175.10、209.196.44.172、209.126.161.29。
2.4.4 在這段觀察期間,多少不同的主機訪問了以209.196.44.172為伺服器的殭屍網路?
首先在虛擬機器中輸入sudo apt install tcpflow
安裝tcpflow:
再把2.4.3的檔案拖到虛擬機器中,然後命令列中輸入tcpflow -r botnet_pcap_file.dat 'host 209.196.44.172 and port 6667
:
可以發現除了原檔案外我們還有三個新檔案:
使用命令來獲取訪問該伺服器的主機數量cat 209.196.044.172.06667-172.016.134.191.01152 | grep --text "^: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
:
由上圖可知有3461個結果。
2.4.5 哪些IP地址被用於攻擊蜜罐主機?
輸入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 > ipaddr.txt;wc -l ipaddr.txt
:
再輸入cat ipaddr.txt
檢視詳細結果:
這裡我們可以看到一堆IP地址。
2.4.6 攻擊者嘗試攻擊了那些安全漏洞?
首先我們輸入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埠:
然後我們再輸入tcpdump -r botnet_pcap_file.dat -nn 'src host 172.16.134.191' and udp | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq
篩選出蜜罐主機被攻擊的UDP埠:
可以發現被攻擊的埠結果如下:
TCP:135(rpc),139(netbios-ssn),25(smtp),445(smb),4899(radmin),80(http)
UDP:137(netbios-ns)
輸入(tcp.dstport == 135 || tcp.dstport == 25)&& ip.dst == 172.16.134.191
在Windows端使用Wireshark過濾TCP埠:
可以發現,25埠和135埠僅僅進行了TCP三次握手,沒有明顯的攻擊行為。
再輸入tcp.dstport==80 && ip.dst == 172.16.134.191
:
緩衝區溢位攻擊。傳送了好多重複字母的請求包,說明也許正在攻擊伺服器的漏洞從而獲取系統許可權。
但是以上攻擊被蜜罐主機識別併傳送RST資料包,所以80埠的攻擊失敗。
再輸入tcp.dstport==139 && ip.dst == 172.16.134.191
:
可以發現雖然多個IP嘗試和蜜罐主機在此埠建立連線,但都被蜜罐主機識別併傳送RST資料包,所以攻擊也是失敗的。
再輸入tcp.dstport==445 && ip.dst == 172.16.134.191
:
可以發現,資料包有一個PSEXESVC.EXE。PsExec 是由 Mark Russinovich 建立的 Sysinternals Suite中包含的工具。最初,它旨在作為系統管理員的便利工具,以便他們可以透過在遠端主機上執行命令來執行維護任務。後來因為太過方便,被利用到內網滲透之中。它是一種Dv1dr32蠕蟲,並且每個IP地址連入的返回資訊中含有\PIPE\ntsvcs,命名管道\Pipe\Ntsvcs是作為 SCM 和與特定服務互動的 SCP(服務控制程序)之間的遠端過程呼叫介面,所以攻擊成功。
輸入tcp.dstport==4899 && ip.dst == 172.16.134.191
:
可以發現只有210.22.204.101訪問過這個埠,經查詢可知該埠是Radmin遠端控制工具,可能是被利用來控制蜜罐主機。
再輸入udp.port==137
:
NBNS是NetBIOS的命名服務,並不是攻擊行為。
2.4.7 那些攻擊成功了?是如何成功的?
綜上,445的蠕蟲攻擊、4899的遠端攻擊是成功的,實現過程見2.4.6。
3.問題及解決方案
- 問題1:無
- 問題1解決方案:無
4.學習感悟、思考等
本次《網路與系統攻防技術》實驗讓我收穫頗豐,深切體會到實踐與理論結合的重要意義,在惡意程式碼分析、可執行檔案分析和取證分析中,網路安全理論、作業系統原理、程式設計知識等都得以實踐應用,像 rada 惡意程式碼樣本分析的每一步,從檔案型別識別、脫殼到字串提取找作者,都需運用多種知識和工具,這種互動加深了我對知識的理解,也讓我明白只有理論用於實踐才能真正掌握和靈活運用網路安全知識。同時,自制 rada 惡意程式碼樣本的分析讓我深入認識惡意軟體,以前我僅瞭解其概念,而此次剖析讓我看清其運作方式,包括利用系統漏洞、修改登錄檔自啟動和遠端控制以及執行入侵操作等,我意識到其危害不僅是竊取資訊,還會破壞系統穩定性和安全性,且不同型別惡意軟體目的和行為模式各異,需多種檢測和防範方法。
此外,Windows 2000 系統被攻破的取證分析讓我深刻感受到網路安全防護的重要性,從殭屍網路借 IRC 通訊到攻擊者對蜜罐主機的攻擊嘗試,可知網路環境充滿潛在威脅,看似安全的系統也可能因安全漏洞被攻破,這促使我今後在系統配置、網路使用和軟體安裝等方面注重培養防護意識,採取安全措施保護系統和資料。隨著資訊科技發展,軟體和網路技術不斷更新,網路安全威脅也更復雜多樣,實驗中惡意軟體開發者利用先進技術隱藏程式碼、突破防禦的現象,讓我思考如何平衡技術創新與網路安全,既要鼓勵技術發展創新滿足數字化需求,也要投入更多資源研發安全技術應對挑戰。而且,實驗中多種惡意軟體檢測方法各有優缺點,沒有一種能完全有效檢測和防範所有惡意軟體型別,這使我思考構建更完善的網路安全防護體系,將多種檢測方法有機結合形成多層次、全方位防護機制,並不斷更新改進方法以適應新的惡意軟體和攻擊手段。
最後,網路安全涉及多學科知識,需要專業人才保障系統和網路安全,此次實驗讓我深知相關知識和技能的重要性,所以我認為要加強網路安全教育和培訓,不僅在高校培養更多專業人才,還要在全社會普及安全知識、提高普通使用者安全意識和防範能力,如此才能形成全社會共同參與的防護環境。