1基本概念
1.1惡意程式碼
惡意程式碼(Malicious Code)是指以技術炫耀/惡作劇, 遠端控制, 竊取私密資訊,盜用資源, 拒絕服務/破壞等為目的,使計算機按照攻擊者的意圖執行以達到惡意目的的指令集合。
型別包括計算機病毒、 蠕蟲、特洛伊木馬、邏輯炸彈、系統後門、Rootkit、殭屍程式等。
1.2惡意程式碼分析技術
靜態分析:透過反病毒引擎掃描識別已知的惡意程式碼家族和變種名,逆向分析惡意程式碼模組構成,內部資料結構,關鍵控制流程等,理解惡意程式碼的機理,並提取特徵碼用於檢測。
動態分析:透過在受控環境中執行目的碼,以獲取目的碼的行為及執行結果。
2實驗過程
2.1惡意程式碼檔案型別標識、脫殼與字串提取
對提供的rada惡意程式碼樣本,進行檔案型別識別,脫殼與字串提取,以獲得rada惡意程式碼的編寫作者。
(1)將rada檔案解壓並傳入虛擬機器。輸入命令:file RaDa.exe
這個結果可以看出RaDa.exe 是一個PE格式的32位可執行檔案,有GUI介面,基於Intel 80386處理器。
然後,為了進一步獲取該檔案的相關資訊,我們使用下載好的PEiD開啟RaDa.exe。
可以發現,RaDa.exe使用了0.89.6版本的UPX壓縮殼。
對此,首先我們直接用strings命令對目標檔案進行分析。
結果是亂碼。所以要先脫殼。使用脫殼工具。
生成了脫殼後的檔案,再次strings。
這回出現了部分可以讀懂的文字,可以從中發現作者的名字是Raul Siles和David Perez,時間是2004年9月。
2.2使用IDA Pro靜態或動態分析crackme1.exe與crakeme2.exe,尋找特定輸入,使其能夠輸出成功資訊。
首先在終端試執行這兩個檔案。無法執行但有提示詞,可以推測是缺少密碼一類的口令。將檔案放入ida反彙編。
可以看到灰色字型部分有四種提示語。對相關部分程式碼進行分析,發現他們都返回了同一個函式進行判斷。其中兩句提示詞是試錯時沒有遇上過的,應該就是正確的提示詞。嘗試將"I know the secret"作為需要的引數進行輸入。成功出現提示詞,表示透過。下圖為命令和結果總集。
再次對crakeme2.exe進行執行。同樣出現提示詞,這次依照上述辦法字尾密碼,卻顯示了沒有出現過的提示詞。發現他可能判斷的東西,現在不只有密碼,甚至還有檔案的名稱,於是我們將crackme2.exe改名後在輸入正確的密碼。
成功出現正確提示詞。
2.3分析一個自制惡意程式碼樣本rada,並撰寫報告,回答問題。
(1)提供對這個二進位制檔案的摘要,包括可以幫助識別同一樣本的基本資訊;
首先對RaDa.exe使用"md5sum"命令計算RaDa.exe的md5值。
使用process explorer來檢視該二進位制檔案在記憶體中的字串。
(2)找出並解釋這個二進位制檔案的目的;
根據上述結果分析:
該程式首先透過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系統啟動時,RaDa.exe都會自動被執行。
此外,該程式還會對與VMware Tools相關的登錄檔項進行修改。它會在HKLM\Software\VMware, Inc.\VMware Tools\InstallPath路徑下新增或修改某些資訊。
該程式還具備發動DDoS攻擊的能力。
(3)識別並說明這個二進位制檔案所具有的不同特性;
修改登錄檔,複製檔案到C盤,實現遠端控制以及DDoS攻擊
(4)識別並解釋這個二進位制檔案中所採用的防止被分析或逆向工程的技術;
加殼。雖然已經脫殼,仍有部分無法解讀的資訊。
(5)對這個惡意程式碼樣本進行分類(病毒、蠕蟲等),並給出你的理由;
後門。因為可與指定網頁建立聯絡,疑似可遠端操作連線。並且可以隨開機而自動執行。
(6)給出過去已有的具有相似功能的其他工具;
msfvenom,實驗二三都用過來做監聽。
(7)可能調查處這個二進位制檔案的開發作者嗎?如果可以,在什麼樣的環境和什麼樣的限定條件下?
可以。在之前的操作中已經可以看到開發者名字。前提是需要脫殼。
(8)給出至少5種檢測該惡意軟體的方法,例如基於特徵碼的方法,需要詳細介紹每種方法。
-
基於特徵碼的方法
基於特徵碼的檢測方法是最傳統且基礎的惡意軟體檢測技術。它依賴於惡意軟體樣本的已知特徵,這些特徵通常是從惡意軟體的二進位制程式碼、字串、位元組序列等中提取的。
原理:該方法透過掃描目標檔案的二進位制內容,尋找與已知惡意軟體特徵碼庫中的條目相匹配的特徵。若找到匹配項,則判定該檔案為惡意軟體。
實施步驟:
收集惡意軟體樣本,提取特徵碼。
建立特徵碼資料庫,並不斷更新以包含新的惡意軟體特徵。
使用反病毒軟體或專門的惡意軟體檢測工具,對目標檔案進行掃描。
若掃描到與特徵碼資料庫中的條目相匹配的特徵,則發出警報並標記為惡意軟體。 -
靜態分析方法
介紹:
靜態分析方法是在不執行惡意軟體程式碼的情況下,透過分析其二進位制檔案、可執行檔案或反編譯後的程式碼來檢測惡意行為。
原理:
該方法透過分析惡意軟體的靜態特徵,如檔案結構資訊、程式字串常量、呼叫函式等,以及更深層次的反彙編二進位制檔案以得到檔案指令等資訊,來判斷其是否為惡意軟體。
實施步驟:
使用靜態分析工具(如IDA Pro、Ghidra等)載入惡意軟體樣本。
分析惡意軟體的靜態特徵,如入口點、節結構、字串資源等。
對比惡意軟體的靜態特徵與已知惡意軟體的特徵庫。
若發現匹配項或可疑行為,則標記為惡意軟體。 -
動態分析方法
介紹:
動態分析方法是在受控環境下執行惡意軟體樣本,透過監控其行為特徵來檢測惡意行為。
原理:
該方法透過模擬惡意軟體的執行環境,記錄其行為日誌、系統呼叫名稱、上下文引數、環境變數等動態特徵,並與已知惡意行為的特徵庫進行對比,以判斷其是否為惡意軟體。
實施步驟:
在受控環境(如沙箱)中執行惡意軟體樣本。
監控惡意軟體的行為特徵,如檔案訪問、登錄檔修改、網路活動等。
對比惡意軟體的行為特徵與已知惡意行為的特徵庫。
若發現匹配項或可疑行為,則標記為惡意軟體。 -
混合分析法
介紹:
混合分析法結合了靜態分析和動態分析的優勢,透過綜合運用這兩種方法來提高惡意軟體的檢測準確性。
原理:
該方法首先使用靜態分析技術提取惡意軟體的靜態特徵,然後使用動態分析技術捕捉其執行時的動態行為。最後,將靜態特徵和動態特徵相結合,進行綜合分析和判斷。
實施步驟:
使用靜態分析工具提取惡意軟體的靜態特徵。
在受控環境中執行惡意軟體樣本,並使用動態分析工具捕捉其行為特徵。
將靜態特徵和動態特徵相結合,進行綜合分析和判斷。
若發現匹配項或可疑行為,則標記為惡意軟體。 -
基於人工智慧的方法
介紹:
基於人工智慧的惡意軟體檢測方法利用機器學習、深度學習等技術對惡意軟體進行分析和分類。
原理:
該方法透過訓練機器學習模型來識別惡意軟體的特徵和行為模式。在訓練過程中,模型會學習已知惡意軟體和正常軟體之間的差異,並生成分類器來區分它們。在檢測過程中,模型會對目標檔案進行特徵提取和分類判斷。
實施步驟:
收集大量的惡意軟體和正常軟體樣本作為訓練資料集。
對訓練資料集進行預處理和特徵提取。
選擇合適的機器學習演算法(如支援向量機、隨機森林、神經網路等)並訓練模型。
使用訓練好的模型對目標檔案進行特徵提取和分類判斷。
根據模型的輸出結果判斷目標檔案是否為惡意軟體。
2.4取證分析實踐
(1)IRC是什麼?當IRC客戶端申請加入一個IRC網路時將傳送那個訊息?IRC一般使用那些TCP埠?
IRC是Internet Relay Chat的英文縮寫,中文一般稱為網際網路中繼聊天。它是由芬蘭人Jarkko Oikarinen於1988年首創的一種網路聊天協議。關於IRC客戶端申請加入IRC網路時傳送的訊息,以及IRC一般使用的TCP埠,
當IRC客戶端申請加入一個IRC網路時,它會傳送一系列的訊息來與IRC伺服器進行通訊。這些訊息通常包括
使用者註冊與登入訊息:客戶端會傳送使用者名稱、密碼(如果伺服器要求的話)以及其他相關資訊來註冊或登入到IRC伺服器。
頻道加入訊息:一旦登入成功,客戶端可能會傳送訊息來請求加入特定的頻道(Channel),以便與其他使用者進行交談或密談。
具體的訊息格式和內容取決於IRC協議的實現和伺服器的要求。通常,這些訊息是透過TCP/IP協議在客戶端和伺服器之間傳輸的。
IRC預設使用TCP埠6667來進行通訊。這是IRC協議的主要通訊埠,用於客戶端與伺服器之間的資料傳輸。然而,如果埠6667被阻塞或無法使用,IRC客戶端和伺服器可能會嘗試使用其他TCP埠來建立連線。這些備用埠的選擇取決於伺服器和客戶端的配置以及網路環境的限制。
(2)殭屍網路是什麼?殭屍網路通常用於什麼?
殭屍網路是指採用一種或多種傳播手段,將大量主機感染bot程式(殭屍程式)病毒,從而在控制者和被感染主機之間所形成的一個可一對多控制的網路。通常用於:分散式拒絕服務(DDoS)攻擊,傳送垃圾郵件,竊取敏感資訊,網路釣魚攻擊等。
(3)蜜罐主機(IP地址:172.16.134.191)與那些IRC伺服器進行了通訊?
使用wireshark開啟botnet_pcap_file.dat檔案。
設定過濾命令為ip.src == 172.16.134.191 && tcp.dstport == 6667
統計端點。
可發現6個地址。除去蜜罐主機有五個地址。
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為伺服器的殭屍網路?
在kali上安裝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
(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
獲取id。
然後輸入:cat ipaddr.txt檢視。
(6)攻擊者嘗試攻擊了那些安全漏洞?
TCP和UDP。
(7)那些攻擊成功了?是如何成功的?
TCP下的455。以tcp.dstport==445 && ip.dst == 172.16.134.191為條件過濾,篩選出黑色部分是。
NT Create AndX Request, FID: 0x800a, Path: \psexecsvc:這是事件的核心內容,描述了SMB請求的具體型別和詳細資訊。
NT Create AndX Request:這是SMB協議中的一個請求型別,用於在伺服器上建立或開啟檔案或目錄,並獲取與之相關的檔案控制代碼(FID)。
FID: 0x800a:FID(File ID)是檔案控制代碼的識別符號,用於在後續操作中引用該檔案。0x800a是十六進位制表示的檔案控制代碼值。
Path: \psexecsvc:這是請求訪問的路徑,指向伺服器上的特定檔案或服務。在這個例子中,路徑是\psexecsvc,這通常與PsExec工具相關,PsExec是一個允許使用者遠端執行命令的工具,它利用SMB協議在遠端系統上建立服務來執行命令。然而,\psexecsvc本身可能不是PsExec的標準服務名,它可能是攻擊者為了偽裝或特定目的而使用的名稱。
3.問題及解決方案
問題:分析一個自制惡意程式碼樣本rada時找不到rada執行。
解決方案:彈出提示框之後不要點確定。
4.學習感悟與思考
本次實驗較為簡單。內容操作少、分析與蒐集資料多。經過本次實驗,我親手操作了部分惡意程式碼,並對他們進行脫殼、檢查、分析等操作。透過這些操作,我對惡意程式碼的執行規律和內部結構有了一定的認識,也對其危險性加高了警惕。尤其在使用ida時候,透過反彙編檢視密碼然後進行輸入是一個很奇妙的經歷。透過抓包分析等具體操作,我瞭解了IRC、殭屍網路等網路攻擊手段的基本概念和原理。