1. 程式人生 > 其它 >20192412 2021-2022-2 《網路與系統攻防技術》實驗四實驗報告

20192412 2021-2022-2 《網路與系統攻防技術》實驗四實驗報告

《網路與系統攻防技術》實驗四 惡意程式碼分析實踐

實驗內容

一、惡意程式碼檔案型別標識、脫殼與字串提取
對提供的rada惡意程式碼樣本,進行檔案型別識別,脫殼與字串提取,以獲得rada惡意程式碼的編寫作者,具體操作如下:
1. 使用檔案格式和型別識別工具,給出rada惡意程式碼樣本的檔案格式、執行平臺和加殼工具;
2. 使用超級巡警脫殼機等脫殼軟體,對rada惡意程式碼樣本進行脫殼處理;
3. 使用字串提取工具,對脫殼後的rada惡意程式碼樣本進行分析,從中發現rada惡意程式碼的編寫作者是誰?
二、使用IDA Pro靜態或動態分析crackme1.exe與crakeme2.exe,尋找特定輸入,使其能夠輸出成功資訊。
三、分析一個自制惡意程式碼樣本rada,並撰寫報告,回答以下問題:
1. 提供對這個二進位制檔案的摘要,包括可以幫助識別同一樣本的基本資訊;
2. 找出並解釋這個二進位制檔案的目的;
3. 識別並說明這個二進位制檔案所具有的不同特性;
4. 識別並解釋這個二進位制檔案中所採用的防止被分析或逆向工程的技術;
5. 對這個惡意程式碼樣本進行分類(病毒、蠕蟲等),並給出你的理由;
6. 給出過去已有的具有相似功能的其他工具;
7. 可能調查處這個二進位制檔案的開發作者嗎?如果可以,在什麼樣的環境和什麼樣的限定條件下?
四、取證分析實踐
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. 那些攻擊成功了?是如何成功的?

實驗過程

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

  1. 在kali中使用file命令檢視rada.exe
  1. 用PEid檢視加殼工具
  1. 用strings指令檢視字串

(因為沒有脫殼,所以字串為亂碼形式)

  1. 使用脫殼工具脫殼
  1. 檢視字串
  1. 執行RaDa_unpacked.exe程式,在Win10中使用ProcessExplorer檢視程式的Strings,看到Copyright (C) 2004 Raul Siles & David Perez,可知作者是Raul Siles和David Perez

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

  1. 將crackme1.exe匯入IDA pro
  1. 檢視函式呼叫資訊

通過分析函式呼叫資訊,可以猜測主要的函式為main函式

  1. 在左側函式欄選定main函式,按f5進行反編譯
  1. 由反編譯獲得的C語言程式碼容易知道第二個引數必須為"I know the secret"
  1. 將crackme2.exe匯入IDA pro
  1. 檢視函式呼叫資訊

通過分析函式呼叫資訊,可以猜測主要的函式為main函式

  1. 在左側函式欄選定main函式,按f5進行反編譯
  1. 由反編譯獲得的C語言程式碼容易知道第一個引數必須為"crackmeplease.exe",第二個引數必須為"I know the secret"

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

  1. 在kali虛擬機器中,使用命令md5sum生成md5摘要
  1. 執行RaDa_unpacked.exe並使用ProcessExplorer檢視RaDa_unpacked.exe的Properties->Strings

RaDa訪問了http://10.10.10.10/RaDa,將檔案 RaDa.exe 複製到了 C:\RaDa\bin 目錄下,修改登錄檔將RaDa.exe設為開機自啟動

使用指令RegWrite RegRead RegDelete讀寫登錄檔,並進行截圖等一系列操作

  1. 使用IDA pro檢視RaDa_unpacked.exe的Strings,查詢"author"發現引數"authors",說明該程式支援查詢作者,使用命令"RaDa.exe --author"檢視作者

回答問題:

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

MD5:caaa6985a43225a0b3add54f44a0d4c7
PE32 executable for MS Windows (GUI) Intel 80386 32-bit

  1. 找出並解釋這個二進位制檔案的目的;

這是一個後門程式,執行該程式時發出http請求,訪問10.10.10.10,類似於反向連線,主動連線惡意伺服器

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

自我複製到C盤,修改登錄檔實現開機自啟動,可以提供截圖等操作

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

使用了UPX加殼處理

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

該程式為後門程式。因為該程式不能自主傳播,所以不是病毒,蠕蟲,同時也沒有進行偽裝(偽裝成正常程式),所以也不是木馬。此外,攻擊者可以繞過安全性控制而獲取對系統的訪問許可權(修改登錄檔),所以是後門。

  1. 給出過去已有的具有相似功能的其他工具;

2004年發現的木馬Bobax(在感染了一臺計算機之後,Bobax會主動與一個網站取得聯絡,從而採取下一步的行動,比方說傳送垃圾郵件或者執行其他的程式。)

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

可能,詳細操作見任務三第3步,在win10下,使用命令"RaDa.exe --author"檢視作者。作者:Raul siles和David Perze。

任務四 取證分析實踐

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

因特網中繼聊天(Internet Relay Chat),一般稱為網際網路中繼聊天,簡稱:IRC。它是由芬蘭人Jarkko Oikarinen於1988年首創的一種網路聊天協議。IRC的工作原理非常簡單,只要在自己的PC上執行客戶端軟體,然後通過因特網以IRC協議連線到一臺IRC伺服器上即可。它的特點是速度非常之快,聊天時幾乎沒有延遲的現象,並且只佔用很小的頻寬資源。
註冊時需要傳送的訊息有三種,分別是口令,暱稱和使用者資訊。格式如下:USER 、PASS 、NICK 。註冊完成後,客戶端就使用 JOIN 資訊來加入頻道。
IRC 伺服器明文傳輸通常在 6667 埠監聽,也會使用 6660—6669 埠。 SSL 加密傳輸在 6697 埠。

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

殭屍網路可以一對多地執行相同的惡意行為,比如可以同時對某目標網站進行分散式拒絕服務(DDos)攻擊,同時傳送大量的垃圾郵件等。

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

篩選資料包,篩選條件為ip.src == 172.16.134.191 && tcp.dstport == 6667,過濾出源IP為蜜罐主機且目的埠為6667的資料包。我們可以看到5個IRC伺服器,分別是209.126.161.29、66.33.65.58、209.196.44.172、63.241.174.144、217.199.175.10

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

指令

tcpflow -r botnet_pcap_20192412gkw.dat 'host 209.196.44.172 and port 6667'

可以得到172.016.134.191.01152-209.196.044.172.06667,209.196.044.172.06667-172.016.134.191.01152和report.xml三個檔案

在report.xml檔案中可以看到雙方的ip地址,埠,mac地址等

指令

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
搜尋有多少主機連線

  1. 哪些IP地址被用於攻擊蜜罐主機?
    指令

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

指令

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

  1. 攻擊者嘗試攻擊了那些安全漏洞?哪些成功了?如何成功的?
    指令

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

檢視網路流分佈情況

指令

tcpdump -r botnet_pcap_20192412gkw.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)

指令

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

檢視UDP響應埠(137)

TCP:135 只是進行了連線,沒有資料內容交換

TCP:25 只是進行了連線,沒有資料內容交換

TCP:139 這裡大部分連線也沒有傳遞具體會話內容,主要也是SMB查點

TCP:445 發現一個PSEXESVC.EXE的檔案,使用psexec.exe該工具連線遠端伺服器時,會在目標伺服器上安裝一個服務名稱為PsExec,可執行檔案的路徑為C:\WINDOWS\PSEXESVC.EXE的服務,這個二進位制檔案主要是一種Dv1dr32蠕蟲,這種蠕蟲通過IRC進行通訊。

該源IP地址與蜜罐主機建立了會話,攻擊成功,這裡Windows的svcctl MSRPC介面用於同SCM(服務控制管理器)通訊,svcctl漏洞允許匿名使用者連線到SCM,然後就可以列舉所安裝的或正在執行的服務。

TCP:4899,4899是遠端控制埠,經常被黑客用來入侵

TCP:80,通過該埠使用緩衝區溢位獲得命令列:

TCP:80,在218.25.147.83傳送給172.16.134.191的包中存在蠕蟲病毒

UDP:137,網路基本輸入/輸出系統(NetBIOS) 名稱伺服器(NBNS) 協議是 TCP/IP 上的 NetBIOS (NetBT) 協議族的一部分,它在基於 NetBIOS 名稱訪問的網路上提供主機名和地址對映方法,在區域網中提供計算機的IP地址查詢服務,處於自動開放狀態,所以訪問這個埠肯定就是 NetBIOS 查點了

  1. 哪些攻擊成功了?是如何成功的?
    80埠,因為返回的為css http/1.1,所以
    緩衝區溢位攻擊攻擊和PSEXESVC蠕蟲攻擊沒成功。
    445埠,SVCCTL服務漏洞成功了。返回資訊中含有\PIPE\ntsvcs,通過搜尋可知,這是一個遠端呼叫,所以可以猜測攻擊者獲得了許可權。

問題及解決方案

  1. 使用IDA Pro分析crackme1.exe時報錯

解決方法:路徑上的檔名稱不能包括漢字。

  1. 對209.196.044.172.06667-172.016.134.191.01152這個檔案進行篩選時,報錯“grep:Binary file (standard input) matches”

解決方法:grep認為這是二進位制檔案,將"grep"改為"grep -a"

學習感悟、思考

本次實驗不管是難度還是實驗量,實驗要求都超過了之前的幾個任務,所花時間和精力自然也超過了之前的幾個實驗,但同樣收穫到的知識也遠遠超過了之前幾個實驗。單從瞭解熟悉的惡意程式碼相關軟體來說,這個實驗幾乎超過了之前幾個實驗的總和。所以在實驗中,熟悉掌握相關軟體都花費了不少時間。這次實驗中實踐了惡意程式碼的脫殼、字串提取等一系列分析操作,對我們以後的進一步學習乃至實戰都有相對重要的作用。在本次實驗中,我更加認識到自己知識的匱乏,之前所學有很大的侷限性,在以後的學習中,應將知識與技能同步提升,齊頭並進,兩相互補才能走的更穩更遠。