1. 程式人生 > 其它 >實驗四 惡意程式碼分析實踐-實驗報告-20192422李俊潔

實驗四 惡意程式碼分析實踐-實驗報告-20192422李俊潔

實驗四 惡意程式碼分析實踐

一.實驗過程

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

檢視檔案型別

接著我們隨便查詢一個字串

Windows下輸入

find "a" RaDa.exe//查詢含有a的字串

如圖可見全是亂碼,我們推測是加殼導致的

使用工具PEiD對檔案RaDa.exe進行查殼

使用脫殼工具進行脫殼,生成了檔案RaDa_unpacked.exe

現在我們再次檢視字串

Windows下輸入

find "a" RaDa_unpacked.exe

可以發現不是亂碼了

開啟工具idag,選擇脫殼後的檔案

成功檢視到了檔案的作者資訊,如郵箱。

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

crackmel1

隨便輸入一些引數,試探一下輸入格式

可以看到有兩種返回情況

開啟idag,分析該程式

可以看出,第一個和第三個我們都觸發過。

第一個為引數不對的返回情況。第三個為引數數量對但內容不對的返回情況

我們檢視函式呼叫圖

接著檢視401280函式段,檢視其彙編程式碼

猜測是要輸出的正確引數,即“I know the secret”。

現在我們再出輸入

crackme1.exe "I know the secret"

可以看到,返回的是輸入正確引數的情況。

總結:

“I think you are missing something”為引數不對的返回情況

“Pardon? What did you say?”為引數數量對但內容不對的返回情況

“You know how to speak to programs, Mr. Reverse-Engineer”為引數數量對且內容對的返回情況

crackmel2

隨便輸入一些引數,試探一下輸入格式

可以看到有兩種返回情況

開啟idag,分析該程式,可見如下返回情況

接著檢視函式呼叫圖

依然是檢視401280函式段,我們檢視其彙編程式碼

猜測首先程式名要正確,即改為crackmeplease.exe

然後就是和程式1一樣,輸入正確的引數,即“I know the secret”

現在我們來進行驗證,首先將程式名改為crackmeplease.exe

總結:

“I think you are missing something”為引數不對的返回情況

“I have an identity problem.”為程式名不對的返回情況

“Pardon? What did you say?”為程式名對,引數數量對但內容不對的返回情況

“We have a little secret: Chocolate”為程式名對,引數數量對且內容對的返回情況

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

1.對檔案進行摘要,我選用MD5摘要

Windows下輸入

certutil -hashfile RaDa.exe MD5

檢視檔案型別

可知該二進位制檔案是32位,並帶有圖形化介面的windows PE檔案

更改樣本的檔名並再次進行md5摘要,發現結果沒有發生變化,即摘要值是一個文字的識別標誌。


2.分析檔案

用IDA開啟RaDa_unpacked.exe並切換到strings頁面

可以看出,這是作者資訊以及釋出時間

如圖是一個網頁地址和兩個本地地址

網頁地址即:連線到IP地址為10.10.10. 10的目標主機下的一個名為RaDa_commands的網頁上,下載,上傳cgi,同時還建立了資料夾tmp在c盤中

可以看到這就是程式在我電腦中建立的資料夾

第三個網址下還能發現可以發起DDOS遠端攻擊

繼續往下看,可以看見還能實現截圖,休眠,上傳,下載等操作

下圖是一個SQL語句

這句話大概意思是先對網絡卡配置資訊的查詢(SELE CT * FROM Win32_NetworkAdapterConfigurat),如果true,則確認dword_40C070對應 的字元是否存在,並進行了Mac地址查詢,登錄檔的檢視等### 操作(Wscript.shell),即判斷vmware tools是不是在登錄檔裡面

如下圖是3個網段

應該是判斷是否處於這3個網段上,然後執行相應命令。

我們開啟另一個工具Process Explorer並執行RaDa_unpacked.exe

在Process Explorer中找到程式RaDa_unpacked.exe,點開選擇strings

因為有了IDA的解釋,我們能夠看懂這些欄位的意義。

http://10.10.10.10/RaDa //訪問10.10.10.10主機下的一個網頁

download.cgi//下載

upload.cgi//上傳

C:\RaDa\tmp//下載地址

RegWrite//對登錄檔進行寫操作

RegRead//對登錄檔進行讀操作

RegDelete//對登錄檔進行刪除操作

exe//執行指定程式

get//下載指定檔案

put//上傳指定檔案

screenshot//截圖

sleep//休眠

3.回答問題

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

答:摘要為caaa6985a43225a0b3add54f44a0d4c7,是32位,並帶有圖形化介面的windows PE檔案

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

答:這應該是一個後門程式,通過訪問某個網頁,然後進行一系列入侵操作。

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

答:能夠在c盤下建立一個檔案目錄,並且能夠訪問網站http://10.10.10.10/Rada/Rada_command.html,然後進行上傳和下載操作,並且能夠執行一些命令,如截圖,休眠等。

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

答:利用了加殼免殺技術。

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

答:我認為它是一個後門程式,因為它不具備傳播和感染的性質,即不是蠕蟲和病毒;也不是良性程式(偽裝),即不是木馬。

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

答:木馬Bobax、木馬Setiri。

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

答:在分析檔案中,我們利用IDA開啟RaDa_unpacked.exe並切換到strings頁面,找到了作者資訊。

可以看出作者是Raul Siles和David Perez, 分析這些的條件是先對程式進行脫殼處理,否則為亂碼。

任務四 取證分析實踐——Windows 2000系統被攻破並加入殭屍網路

問題:資料來源是Snort收集的蜜罐主機5天的網路資料來源,並去除了一些不相關的流量,同時IP地址和其他敏感資訊被混淆。回答下列問題:

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

答:

IRC(網際網路中繼聊)天,類似微信和qq。

註冊時需傳送的訊息有三種,分別是口令,暱稱和使用者資訊,註冊完成後,客戶端就需要 使用JOIN資訊來加入頻道Channel 。IRC伺服器當使用明文傳輸時通常在6667埠監聽。使用密文傳輸時通常在#### 6697埠監聽

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

答:

殭屍網路是指採用一種或多種傳播手段,將大量主機感染bot程式(殭屍程式)病毒,從而在控制者和被感染主機之間所形成的一個可一對多控制的網路。

殭屍網路最常見的兩種用途是傳送垃圾郵件活動,並進行分散式拒絕服務(DDoS攻擊)。

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

我們開啟wireshark,開啟檔案botnet_pcap_file.dat,輸入“ip.src == 172.16.134.191 && tcp.dstport == 6667 || tcp.dstport == 6697”

進行簡單過濾

我們發現蜜罐主機分別和66.33.65.58、63.241.174.144、217.199.175.10、209.196.44.172、209.126.161.29這五個IRC伺服器進行了通訊。

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

在kali環境下輸入命令

apt-get install tcpflow(root許可權下執行)

tcpflow -r botnet_pcap_file.dat 'host 209.196.44.172 and port 6667'//抓包(-r是為了能夠讀取該資料包)

得到3個檔案

使用管道命令

cat 209.196.044.172.06667-172.016.134.191.01152 | grep -a "^: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個主機訪問了以209.196.44.172為伺服器的殭屍網路

(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 > ljj.txt//生成一個檔案,記錄了連線主機ip的地址

wc -l ljj.txt//統計檔案內容行數

檢視檔案內容,如下為被用於攻擊蜜罐主機的部分IP地址

注:由於有165個ip地址,不一一列出了

(6)攻擊者嘗試攻擊了那些安全漏洞?

輸入命令

snort -r botnet_pcap_file.dat -c /etc/snort/snort.conf -K ascii

可見有53323個tcp埠,186個udp埠

篩選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,139,25,445,4899,80

然後我們用wireshak一一檢視

135:只進行了TCP連線

139:發現了NBSS包和SMB包(兩者都跟NetBIOS有關) 以及一些TCP流

25:只進行了TCP連線

445:PSEXESVC.EXE的可執行檔案,這是可以利用遠端控制執行被害主機,並且獲取其許可權,常用於內網滲透

4899:只進行了TCP連線

80:

檢視到了很多字元“C”,猜測是否攻擊者想利用緩衝區溢位攻擊來獲取主機許可權.

接著我們篩選源地址:ip.src == 218.25.147.83

找到蠕蟲欄位“worm”

篩選udp埠

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埠:137

137:發現了大量NBNS(名稱伺服器)資料包

(7)那些攻擊成功了?是如何成功的?

答:有問題6可知,ip地址為218.25.147.83的攻擊者成功了,他利用了緩衝區溢位進行蠕蟲攻擊。

二.實驗中遇見的問題

在本次實驗中,因為有老師的視訊指導,在軟體使用上並未有太大的問題,但由於對於彙編語句不太熟悉,所以遇到了不少難題。

解決方法:參考大量資料,請教同學,參考學長學姐資料。

三.實驗感想

本次實驗,有著不少關於彙編的知識,所以我在後面的實驗進度中卡了很久,通過不斷的查詢資料將問題一一解決,我對於彙編語句有了更深一步的瞭解。同時這次實驗也幫我複習了關於wireshark的使用,以及對於各類資料包的分析。尤其是關於蠕蟲攻擊的資料包,因為有了案例進行了解,我印象十分深刻。

總的來說,本次實驗雖然對於我而言有點困難,但也收穫頗豐,學習了關於網路攻防的相關專業知識,學習了一些彙編知識,還鞏固了以前所學的東西。感想老師的視訊指導,同時也感謝幫助我的同學,期待下一次實驗的到來。