1.實驗內容
1.1基本概念
1.1.1什麼是惡意程式碼
首先,惡意程式碼是一串實現特定功能的程式碼,而特定功能在這裡特指具有惡意目的的功能實現,可以理解為按照攻擊者的意願進行執行的程式碼。
按照特徵以及行為的不同,大概分為以下幾類:
- 計算機病毒
- 蠕蟲(病毒)
- 後門
- 木馬
- 殭屍網路
- RootKit
1.1.2惡意程式碼分析技術
分為靜態分析和動態分析兩種方式。
- 靜態分析主要是分析諸如特徵碼,關鍵詞等,或者是分析內部結構,執行邏輯等來判定程式碼段是否為惡意程式碼。
- 動態分析是在可控的環境下執行未知程式碼,然後觀察行為是否滿足惡意程式碼的要求。
1.2實驗內容
1.2.1惡意程式碼檔案型別標識、脫殼與字串提取
對提供的rada惡意程式碼樣本,進行檔案型別識別,脫殼與字串提取,以獲得rada惡意程式碼的編寫作者,具體操作如下:
- 使用檔案格式和型別識別工具,給出rada惡意程式碼樣本的檔案格式、執行平臺和加殼工具;
- 使用超級巡警脫殼機等脫殼軟體,對rada惡意程式碼樣本進行脫殼處理;
- 使用字串提取工具,對脫殼後的rada惡意程式碼樣本進行分析,從中發現rada惡意程式碼的編寫作者是誰?
1.2.2使用IDA Pro靜態或動態分析crackme1.exe與crakeme2.exe,尋找特定輸入,使其能夠輸出成功資訊。
1.2.3分析一個自制惡意程式碼樣本rada,並撰寫報告,回答以下問題:
- 提供對這個二進位制檔案的摘要,包括可以幫助識別同一樣本的基本資訊;
- 找出並解釋這個二進位制檔案的目的;
- 識別並說明這個二進位制檔案所具有的不同特性;
- 識別並解釋這個二進位制檔案中所採用的防止被分析或逆向工程的技術;
- 對這個惡意程式碼樣本進行分類(病毒、蠕蟲等),並給出你的理由;
- 給出過去已有的具有相似功能的其他工具;
- 可能調查處這個二進位制檔案的開發作者嗎?如果可以,在什麼樣的環境和什麼樣的限定條件下?
- 給出至少5種檢測該惡意軟體的方法,例如基於特徵碼的方法,需要詳細介紹每種方法。
1.2.4取證分析實踐
Windows 2000系統被攻破並加入殭屍網路
問題: 資料來源是Snort收集的蜜罐主機5天的網路資料來源,並去除了一些不相關的流量,同時IP地址和其他敏感資訊被混淆。回答下列問題:
- IRC是什麼?當IRC客戶端申請加入一個IRC網路時將傳送那個訊息?IRC一般使用那些TCP埠?
- 殭屍網路是什麼?殭屍網路通常用於什麼?
- 蜜罐主機(IP地址:172.16.134.191)與那些IRC伺服器進行了通訊?
- 在這段觀察期間,多少不同的主機訪問了以209.196.44.172為伺服器的殭屍網路?
- 哪些IP地址被用於攻擊蜜罐主機?
- 攻擊者嘗試攻擊了那些安全漏洞?
- 那些攻擊成功了?是如何成功的?
2.實驗過程
2.1惡意程式碼檔案型別標識、脫殼與字串提取
2.1.1檔案格式和型別識別
基礎的解壓操作和檔案匯入省略。
首先,我們輸入下列命令
file RaDa.exe
這個結果告訴我們,RaDa.exe 是一個PE格式的32位可執行檔案,有GUI介面,基於Intel 80386處理器,可以直接在Windows作業系統上執行,包含三個節。
接下來輸入以下命令:
binwalk RaDa.exe
沒有更多的可用資訊,剩下的資訊需要我們脫殼才能看到。
2.1.2脫殼處理
使用脫殼軟體對RaDa.exe
進行脫殼,得到RaDa_unpacked.exe
2.1.3檔案分析
接下來把這個檔案放到IDA中進行分析。
我們可以看清楚的看到作者的名字是Raul Siles
和David Perez
,時間是2004年9月
2.2使用IDA Pro靜態或動態分析crackme1.exe與crakeme2.exe,尋找特定輸入,使其能夠輸出成功資訊
將crackme1.exe安放在kali以及Windows的過程就省略了,只要保證路徑正確就行。
首先在kali中使用file
命令來檢視基本資訊(上面用過)
很明顯,這個是一個32位的Windows程式,我的電腦雖然是64位的,但是也相容32位程式。
接下來,我們在IDA中開啟程式的反彙編。
我自己沒看懂反彙編和執行邏輯,但是我們可以根據函式名進行猜測。由於在前期的執行中,I think you are missing something.
和Pardon? What did you say?
均已出現,那麼我們有理由認定剩下的兩句是我們要找的東西。再根據語義,我們猜測I know the secret
是我們需要的引數,下面進行驗證。
驗證成功,同理,我們也可以得出第二個程式的口令是crackmeplease.exe "I know the secret"
2.3分析一個自制惡意程式碼樣本rada
2.3.1基礎分析
首先執行ProcessExplorer
中看到已經存在的軟體。
然後執行脫殼之後的rada.exe
,彈出提示框之後不要點確定。
然後就可以在ProcessExplorer
中看到已經存在的rada.exe
程序了。
然後我們點選右上角的Strings
,就會出現下面的文字
這個程式的攻擊流程如下:
首先,該程式利用HTTP協議連線到指定的網頁(10.10.10.10/RaDa/RaDa_commands.html),可能是為了下載惡意軟體元件或接收遠端指令。透過cgi-bin目錄下的download.cgi和upload.cgi指令碼,程式能夠下載並上傳檔案,這表明它具有一定的網路通訊和檔案操作能力。
接著,程式在目標主機的C盤中建立一個名為C:/RaDa/tmp的資料夾,用於存放臨時檔案或惡意軟體元件。同時,它將RaDa.exe檔案複製到C:\RaDa\bin目錄中,這是惡意軟體的主要可執行檔案。
為了確保惡意軟體能夠在系統啟動時自動執行,程式新增了一個登錄檔項:HKLM\Software\Microsoft\Windows\CurrentVersion\Run\。透過將RaDa.exe的路徑新增到該登錄檔項中,惡意軟體能夠在Windows啟動時自動執行。
此外,程式還新增了一個與VMware Tools相關的登錄檔項:HKLM\Software\VMware, Inc.\VMware Tools\InstallPath。
除了上述操作外,該程式還具有執行DDoS攻擊的能力。透過利用特定的網路協議和漏洞,程式可以發動分散式拒絕服務攻擊,導致目標系統癱瘓或無法訪問。
2.3.2補充說明
- 識別並說明這個二進位制檔案所具有的不同特性
這個檔案能夠修改登錄檔,複製檔案到C盤,實現遠端控制以及DDoS攻擊。 - 識別並解釋這個二進位制檔案中所採用的防止被分析或逆向工程的技術
這個檔案採用了UPX加殼,儘管我們已經對檔案進行過脫殼,但是還是存在很多亂碼。 - 對這個惡意程式碼樣本進行分類(病毒、蠕蟲等),並給出你的理由
這個樣本是典型的後門程式。從最終的目的來看,樣本就是要獲取本機的控制許可權。 - 給出過去已有的具有相似功能的其他工具
msfvenom,之前用來做監聽的。 - 可能調查處這個二進位制檔案的開發作者嗎?如果可以,在什麼樣的環境和什麼樣的限定條件下?
沒有問題,我們在前面的實踐中就已經得到作者的名字了。但是前提是要對檔案進行脫殼,這樣才能看到作者的名字。 - 給出至少5種檢測該惡意軟體的方法,例如基於特徵碼的方法,需要詳細介紹每種方法。
- 基於特徵碼的檢測方法
特徵碼檢測是一種透過掃描檔案內容,查詢與已知惡意軟體樣本中特有的字串或程式碼片段(即特徵碼)相匹配的方法。透過提取惡意軟體樣本中的獨特字串,如“RaDa”、“RaDa.exe”、“C:\RaDa\bin”等作為特徵碼,並利用現有的安全軟體,如防毒軟體,將這些特徵碼加入其資料庫中。當安全軟體掃描系統檔案時,若檢測到與特徵碼匹配的內容,則判定為惡意軟體。 - 基於行為分析的檢測方法
行為分析是透過監控和分析軟體在執行過程中的行為,如檔案操作、網路活動、程序建立等,來判斷其是否為惡意軟體。透過監控系統中所有程序的活動,特別是那些涉及建立、修改或刪除關鍵系統檔案(如C:\RaDa\目錄及其子檔案)的行為。此外也需要分析網路流量,尋找與10.10.10.10的HTTP通訊,特別是下載和上傳檔案的活動,監控程序間通訊,特別是那些與RaDa.exe程序相關的活動。 - 基於網路流量的檢測方法
透過分析網路流量中的資料包內容,尋找與惡意軟體通訊相關的特徵。利用網路監控工具,如入侵檢測系統(IDS)或入侵防禦系統(IPS),對進出網路的資料包進行實時分析。設定規則來匹配與RaDa惡意軟體通訊相關的HTTP請求和響應,如特定的URL路徑(/RaDa/RaDa_commands.html)、檔案上傳和下載請求等。對可疑流量進行深度包檢測(DPI),以進一步確認其是否為惡意軟體通訊。 - 基於系統日誌的檢測方法
透過分析系統日誌,如Windows事件檢視器中的日誌,來尋找與惡意軟體活動相關的痕跡。透過定期檢視系統日誌,特別是與安全相關的日誌條目,如登入失敗、檔案訪問異常等。搜尋與RaDa惡意軟體相關的日誌條目,如C:\RaDa\目錄的建立、修改或刪除操作記錄。分析程序建立和終止日誌,查詢與RaDa.exe相關的活動。 - 基於沙箱環境的檢測方法
將未知或可疑軟體放入一個隔離的虛擬環境中執行,以觀察其行為並判斷其是否為惡意軟體。使用沙箱工具(如沙箱模擬器、虛擬機器等)來執行RaDa惡意軟體的樣本或可疑檔案。監控沙箱環境中的檔案操作、網路活動、程序建立等行為。分析沙箱環境生成的報告,以確認軟體是否為惡意軟體及其具體行為。
2.4Windows 2000系統被攻破並加入殭屍網路的取證分析
2.4.1IRC是什麼?當IRC客戶端申請加入一個IRC網路時將傳送那個訊息?IRC一般使用那些TCP埠?
IRC是一種網路聊天協議,允許使用者透過因特網進行實時聊天。它基於TCP/IP協議,使用特定的埠進行通訊,並支援多種聊天功能,如建立聊天室、傳送和接收訊息等。
當IRC客戶端申請加入一個IRC網路時,它會傳送一個特定的訊息來請求連線到IRC伺服器。這個訊息通常包括客戶端的標識資訊、要連線的伺服器地址和埠號等。具體的訊息格式和內容可能因不同的IRC客戶端和伺服器實現而有所不同。在成功連線到伺服器後,客戶端還需要傳送一系列的訊息來註冊使用者、加入聊天室等。
IRC預設使用TCP埠6667進行通訊。這是IRC協議的主要通訊埠,用於客戶端與伺服器之間的資料傳輸。如果埠6667被阻塞或無法使用,IRC客戶端和伺服器可能會嘗試使用其他TCP埠進行連線。這些備用埠可能因不同的IRC網路和伺服器配置而有所不同。
2.4.2殭屍網路是什麼?殭屍網路通常用於什麼?
殭屍網路是指由大量被惡意軟體感染的計算機(Bots)組成的網路,這些計算機通常由一個或多個遠端攻擊者(Botmaster)控制。
殭屍網路的常見用途有DDoS攻擊,傳送垃圾郵件,加密貨幣挖礦,作為惡意軟體的分發平臺等。
2.4.3蜜罐主機(IP地址:172.16.134.191)與那些IRC伺服器進行了通訊?
使用wireshark
開啟botnet_pcap_file.dat
檔案。
設定過濾命令為ip.src == 172.16.134.191 && tcp.dstport == 6667
一共發現以下5個IP地址。
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為伺服器的殭屍網路?
輸入apt install tcpflow
然後把剛才的資料包檔案拖入虛擬機器,並輸入以下命令
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地址被用於攻擊蜜罐主機?
輸入下列命令來獲取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
2.4.6攻擊者嘗試攻擊了那些安全漏洞?
主要是TCP和UDP的安全漏洞。
2.4.7那些攻擊成功了?是如何成功的?
TCP埠下的445的蠕蟲攻擊是成功的。
輸入tcp.dstport==445 && ip.dst == 172.16.134.191
可以觀察到,資料包內含有一個名為PSEXESVC.EXE的檔案。PsExec是Sysinternals Suite中的一個工具,由Mark Russinovich開發。該工具最初的設計目的是為系統管理員提供便利,使他們能夠透過在遠端主機上執行命令來完成維護任務。然而,由於其高度的便捷性,它後來被不法分子利用於內網滲透攻擊中。具體來說,它被視為一種Dv1dr32蠕蟲,且每個接入的IP地址返回的資訊中都包含有“\PIPE\ntsvcs”。這裡的“\Pipe\Ntsvcs”是一個命名管道,它作為服務控制管理器(SCM)與特定的服務控制程序(SCP)之間進行遠端過程呼叫的介面。正是透過這一介面,攻擊者成功實現了攻擊。
3.問題及解決方案
- 問題1:binwalk損壞
- 問題1解決方案:https://blog.csdn.net/mengmeng0510/article/details/120812017
4.學習感悟、思考等
經過本次實驗,我對惡意程式碼的分析與取證有了更為深入的理解和實踐經驗。從最初的惡意程式碼檔案型別識別、脫殼與字串提取,到使用IDA Pro進行靜態或動態分析,再到自制惡意程式碼樣本的詳細分析,每一步都讓我感受到了資訊保安領域的複雜性。
在使用IDA Pro進行靜態或動態分析時,我感受到了逆向工程的魅力。儘管看不懂反彙編,但是透過仔細分析crackme1.exe和crackme2.exe,我還是逐漸找到了特定輸入,使其能夠輸出成功資訊。在取證分析實踐中,我感受到了網路安全的重要性。透過對Snort收集的蜜罐主機網路資料來源的分析,我瞭解了IRC、殭屍網路等網路攻擊手段的基本概念和原理,並掌握瞭如何識別和分析網路攻擊的方法。
參考資料
- 《kali中binwalk/foremost/zip2john工具的配合使用》