1. 程式人生 > 其它 >20192410 2021-2022-2 《網路與系統攻防技術》實驗四 惡意程式碼分析實踐 實驗報告

20192410 2021-2022-2 《網路與系統攻防技術》實驗四 惡意程式碼分析實踐 實驗報告

20192410 2021-2022-2 《網路與系統攻防技術》實驗四 惡意程式碼分析實踐 實驗報告


1.實驗內容

1.惡意程式碼檔案型別標識、脫殼與字串提取
對提供的rada惡意程式碼樣本,進行檔案型別識別,脫殼與字串提取,以獲得rada惡意程式碼的作者
具體操作如下:
(1)使用檔案格式和型別識別工具,給出rada惡意程式碼樣本的檔案格式、執行平臺和加殼工具;
(2)使用超級巡警脫殼機等脫殼軟體,對rada惡意程式碼樣本進行脫殼處理;
(3)使用字串提取工具,對脫殼後的rada惡意程式碼樣本進行分析,從中發現rada惡意程式碼的作者

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

3.分析一個自制惡意程式碼樣本rada,並撰寫報告,回答以下問題:
(1)提供對這個二進位制檔案的摘要,包括可以幫助識別同一樣本的基本資訊;
(2)找出並解釋這個二進位制檔案的目的;
(3)識別並說明這個二進位制檔案所具有的不同特性;
(4)識別並解釋這個二進位制檔案中所採用的防止被分析或逆向工程的技術;
(5)對這個惡意程式碼樣本進行分類(病毒、蠕蟲等),並給出你的理由;
(6)給出過去已有的具有相似功能的其他工具;
(7)可能調查出這個二進位制檔案的開發作者嗎?如果可以,在什麼樣的環境和什麼樣的限定條件下?

4.取證分析實踐
· 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.實驗過程

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

  • 檢視檔案型別

      file RaDa.exe
    

該檔案是一個Windows PE可執行檔案

  • 用stud_PE檢視加殼工具
  • 運用超級巡警脫殼工具進行脫殼
  • 提取字串

      strings RaDa_unpacked.exe
    
  • 檢視作者

    執行RaDa,用ProcessExplore進行監聽,檢視strings,可以看到作者

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

2.2.1 crackme1.exe

利用IDA開啟crackme1.exe,分析可知,首先cmp指令會判斷引數個數是否為兩個,如果是則會執行下一條跳轉指令。然後會通過strcmp判斷引數是否為"I know the secret"。因為程式名是預設引數,所以只需要在執行該程式時加上一個引數"I know the secret"就可以得到正確的輸出。

我們也可以看到,如果輸入的引數個數不為一個,則會輸出"I think you are missing something.",如果輸入的引數數量正確但是不為"I know the secret",會輸出"Pardon? What did you say?"

當然,我們也可以通過反編譯來進行驗證

2.2.2 crackme2.exe

以同樣的方法分析crackme2.exe,注意與crackme1.exe相比,2在判斷引數與"crackmeplease.exe"是否相等之前,沒有將eax+4,所以這裡用來進行判斷的引數並不是我們輸入的引數,而是預設引數,即函式名,所以如果要得到特定的輸出,我們需要將程式名改為crackmeplease.exe。其他與crackme1.exe的分析幾乎一致。

如果輸入的引數個數不為一,會輸出"I think you are missing something.",如果程式名沒有更改或者輸入的引數不是"I know the secret",程式會輸出"I have an identity problem."

2.3 分析一個自制惡意程式碼樣本rada

  • 檢視md5值

      md5sum RaDa.exe
    
  • 使用ProcessExplorer檢視RaDa_unpacked.exe的Strings

    • 請求網頁http://10.10.10.10/RaDa/RaDa_commands.html

    • 在C盤建立C:\RaDa\bin\RaDa.exe和C:\RaDa\tmp

    • 修改登錄檔將RaDa.exe設為開機自啟動HKLM\Software\Microsoft\Windows\CurrentVersion\Run\RaDa REG_SZ C:\RaDa\bin\RaDa.exe

    • 一些登錄檔指令 RegWrite RegRead RegDelete

  • 使用IDA檢視RaDa_unpacked.exe的Strings,在type中勾選Unicode

    檢視authors的引用位置

    可以發現會有兩種情況,一種是不在VMware上執行,會出現作者資訊,反之會輸出"Unknown argument"。

    現在進行驗證

回答問題:

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

    MD5值CAAA6985A43225A0B3ADD54F44A0D4C7

    PE32 executable for MS Windows Intel 80386 32-bit

  • 找出並解釋這個二進位制檔案的目的

    能提供連線10.10.10.10的後門

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

    複製到C盤,並寫入開機自啟動中

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

    UPX加殼

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

    因為能提供遠端連線,所以猜測是後門程式

  • 給出過去已有的具有相似功能的其他工具

    木馬Bobax,特洛伊木馬Setiri、GatSla

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

    可能,在非VMware的虛擬機器中執行,呼叫--authors引數會顯示作者;在VMware的虛擬機器中執行,則顯示引數不存在

2.4 取證分析實踐

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

IRC:因特網中繼聊天(Internet Relay Chat),一種網路聊天協議。只需要在PC上執行客戶端軟體,然後通過因特網以IRC協議連線到一臺IRC伺服器上即可。

當IRC客戶端申請加入一個IRC網路時會發送伺服器的域名,TCP申請埠和暱稱。

一般埠號為6667,或者6660-6669範圍的埠。

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

殭屍網路是指攻擊者(稱為botmaster)出於惡意目的,傳播殭屍程式控制大量主機,並通過一對多的命令與控制通道所組成的網路。

通常用來發起大規模的網路攻擊,如分散式拒絕服務攻擊(DDoS)。

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

使用Wireshark分析檔案botnet_pcap_file.dat,並且設定相應的過濾條件ip.addr == 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指令來分析.dat檔案(我的kali好像沒有自帶,所以用apt安裝了一下)

tcpflow -r 20192410.dat "host 209.196.44.172 and port 6667"	

會生成三個檔案

將得到的209.196.044.172.06667-172.016.134.191.01152以utf-8的編碼另存為(這裡我另存為後的名字為20192410)

執行

cat 20192410 | grep "^: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

得到輸出3457,所以有3457臺主機訪問了以209.196.44.172為伺服器的殭屍網路

5、哪些IP地址被用於攻擊蜜罐主機?

查詢埠並輸出到1.txt中,共148個

tcpdump -n -nn -r 20192410.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

將連線IP地址輸出到2.txt中,共165個

tcpdump -n -nn -r 20192410.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

6、攻擊者嘗試攻擊了那些安全漏洞?哪些成功了?如何成功的?

(1)通過snort檢視網路流

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

(2)檢視tcp響應埠

tcpdump -r 20192410.dat -nn 'src host 172.16.134.191' and tcp[tcpflags]== 0x12 | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq

(3)檢視udp響應埠

tcpdump -r 20192410.dat -nn 'src host 172.16.134.191' and udp | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq

(4)利用wireshark逐一分析埠

  • tcp 135

  • tcp 25

135和25埠都只進行了連線,沒有互動資料,應該只是進行了connect掃描

  • tcp 445

    發現一個PSEXESVC.EXE的檔案,這個二進位制檔案主要是一種Dv1dr32蠕蟲,通過IRC進行通訊。且該IP與蜜罐主機建立了會話,所以攻擊是成功的

  • tcp 4899

    一個遠端控制軟體radmin服務端監聽埠

  • tcp 80

    觀察發現210.22.204.101向蜜罐傳送了很多的C,猜測是緩衝區溢位攻擊

    還能看到c:\notworm,這是一個蠕蟲攻擊

  • udp 137

    都是NBNS,該協議是 TCP/IP 上的 NetBIOS (NetBT) 協議族的一部分,它在基於 NetBIOS 名稱訪問的網路上提供主機名和地址對映方法,在區域網中提供計算機的IP地址查詢服務,處於自動開放狀態,所以訪問這個埠是 NetBIOS 查點

3.問題及解決方案

  • 問題1:分析209.196.044.172.06667-172.016.134.191.01152以得到多少臺主機訪問時不能得到正確輸出
  • 問題1解決方案:編碼問題,需要將該檔案以utf-8編碼另存為。
  • 問題2:分析crackme2.exe時,在不反編譯的情況下,不明白為什麼判斷引數與"crackmeplease.exe"是否一致時用到的引數時程式名。
  • 問題2解決方案:經過與crackme1.exe的對比發現,crackme1中有一條指令會將eax+4,這樣選中的引數就是第二個引數,即我們自己輸入的引數。而crackme2中進行第一次字串比對前沒有這句,所以進行比對的引數是第一個引數,即預設引數程式名。後面進行第二次比對時就將eax+4了。

5.學習感悟、思考等

  本次實驗內容相比於之前的幾次工作量無疑是大了許多。主要是對於各種工具的使用,以及利用wireshark分析多個埠時花費了許多時間。不過基本每一步的分析都能獲得相應資訊,整個實驗過程並不是很難受。對於惡意程式碼分析的諸多工具和使用方法也有了一定的瞭解和認識。