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

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

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

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

1.1 使用檔案格式和型別識別工具,給出rada惡意程式碼樣本的檔案格式、執行平臺和加殼工具

  1. 在kali裡通過file RaDa.exe檢視檔案型別,如下圖,可以看到它是為MS Windows的80386處理器的一個32位PE可執行檔案,而且是GUI(圖形使用者介面)的檔案。

    什麼是GUI?是指採用圖形方式顯示的計算機操作使用者介面,允許使用者使用輸入裝置操縱螢幕。
  2. 通過PEID檢視其加殼型別。如圖可以看到它是用了UPX的壓縮殼。手脫UPX。

1.2 使用超級巡警脫殼機脫殼

1.3 脫殼前後的字串提取

  1. 脫殼前:在windows的cmd下通過strings RaDa.exe
    進行字串提取,由於沒有脫殼,所以出現了很多亂碼,但是從這裡可以看出來作者和執行平臺。

  2. 脫殼後
    可以看到比較能看得懂的一些東西,比如kernel32.dll等一些動態連結庫。插圖為脫殼後

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

2.1 crackme1.exe

  1. 開啟檔案之後可以看到彙編的程式碼,以及函式之間的呼叫關係,函式的圖中有箭頭表示, 綠色就是代表判斷條件成功,紅色代表判斷失敗,藍色的表示 普通的呼叫邏輯,可以在彙編視窗直接按空格鍵。Xrefs graph from可以看到函式的呼叫。所以看以下crackme1.exe,看到彙編中函式的入口位置應該是401280,從這裡開始就開始了判斷和呼叫函式,再看函式之間的呼叫關係我們可以看到,如果我們只是單純地進行了crackme1.exe的執行那麼程式將會彈出“I think you are missing something.",如果我們在命令列輸入crackme1.exe "I Know the secret
    ,那麼程式可以順利執行,彈出“you know how to ”,如果在後面輸入的不是指定的字串就會彈出“Pardon”.所以這個程式的關鍵在於判斷輸入的字元是不是它想要的。



    驗證:

2.2 crackme2.exe

  1. 依舊是開啟檔案看其彙編程式碼和函式之間的呼叫關係,可以看到Main還是從401280開始的。但是可以看到函式呼叫的時候和多了一步判斷,就是要判斷程式的名字和輸入的字串對不對。如果輸入crackme2.exe是沒有用的,程式名必須是crackmeplease才可以進行接下來的判斷。


    驗證:

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

3.1 步驟

  1. 摘要可以通過在cmd下輸入certutil -hashfile RaDa.exe MD5
    來檢視雜湊值
  2. 可以在process explorer監聽,執行RaDa.exe或者是在Process monitor裡查以下rada。在pm裡檢視Rada的時候可以看到它的操作是creat file,將檔案 RaDa.exe 複製到了 C:\RaDa\bin 目錄下,可以看到確實是複製到了這個目錄之下,而且建立了temp這個資料夾。




    在程序監控裡點選該惡意程式,右鍵選擇Properties檢視詳細資訊,從PE裡面檢視的時候可以看到它的一些行為,對於CPU:



    分析:該惡意程式使用http連線到目標為10.10.10.10的主機下的一個名為RaDa_commands.html的網頁上,然後分別下載和上傳某些檔案,並且在受害主機C盤目錄下建立一個資料夾“C:/RaDa/tmp”來儲存其下載的檔案同時將檔案RaDa.exe複製到了 C:\RaDa\bin 目錄下,可以看出該惡意程式碼將其自我複製到主機系統盤,並激活了自啟動,還試圖從一個HTML頁面獲取並解析命令,這應該是一個後門程式。該惡意程式中可執行DDos拒絕服務攻擊。對登錄檔進行了Rewrite,它好像自動進入了工作管理員裡。可以看到更準確詳細的作者姓名Raul siles和David Perze

3.2 問題回答

(1)二進位制檔案的摘要:是caaa6985a43225a0b3add54f44a0d4c7
(2)二進位制檔案的目的:如下圖,其目的是創造一個檔案,修改登錄檔,使其可以在主機中執行,同時建立連線到10.10.10.10。自啟動建立後門,施行DDOS攻擊。
(3)不同特性:會請求 Web 伺服器;解析獲得的指令並執行
(4)採用的防止被分析或逆向工程的技術:UPX,就是給自己加殼
(5)對這個惡意程式碼樣本進行分類(病毒、蠕蟲等),並給出你的理由:
不具有自主傳播模組,不具有隱蔽性而且沒有偽裝。不具有傳播和感染的性質,所以它不屬於病毒和蠕蟲;沒有欺騙性要你自己下載。不是木馬。是一個後門程式。
(6)給出過去已有的具有相似功能的其他工具:
qq遊戲木馬,傳奇終結者。
(7)可能調查處這個二進位制檔案的開發作者嗎?如果可以,在什麼樣的環境和什麼樣的限定條件下?
作者:Raul siles和David Perze,通過工具檢視。且不加殼的情況下

任務4 取證分析實踐

  1. IRC是什麼?當IRC客戶端申請加入一個IRC網路時將傳送哪個訊息?IRC一般使用哪些TCP埠?
    答:IRC網際網路中繼聊天,一種網路聊天協議,IRC的工作原理是在自己的PC上執行客戶端軟體,然後通過因特網以IRC協議連線到一臺IRC伺服器上即可,特點是速度快,連天幾乎無延遲。每個IRC的使用者都有一個Nickname。最大的網路是EFnet (原始IRC網路,通常一次有32,000多人), Undernet,IRCnet, DALnet和NewNet。. 請求是由伺服器或客戶端發出的,其目的是請求(另)一個伺服器執行某個操作或提供某些資訊; 應答是伺服器對一個請求的迴應資訊. 請求通常被稱為命令; 由於對每種應答都規定了一個三位數字做標識,應答也稱為數字應答。
    當客戶端申請加入一個IRC網路時將傳送JOIN 資訊來加入頻道,格式:J為OIN
    會使用的埠:IRC 伺服器明文傳輸通常在 6667 埠監聽,也會使用 6660—6669 埠。 SSL 加密傳輸在 6697 埠。
  2. 殭屍網路是什麼?殭屍網路通常用於什麼?
    殭屍網路是指攻擊者(稱為botmaster)出於惡意目的,傳播殭屍程式控制大量主機,並通過一對多的命令與控制通道所組成的網路。
    它往往被黑客用來發起大規模的網路攻擊,如分散式拒絕服務攻擊(DDoS)、海量垃圾郵件等,同時黑客控制的這些計算機所儲存的資訊也都可被黑客隨意“取用”。
  3. 蜜罐主機(IP地址:172.16.134.191)與那些IRC伺服器進行了通訊?
    通過wireshark抓包,搜尋ip.src=172.16.134.191&&tcp.dstport==6667,因為資料是加密的,而且知道源地址和目的埠,所以就可以設定過濾條件。由下圖可以看出來,主要有五臺IRC伺服器,分別是63.241.174.144, 217.199.175.10, 209.126.161.29,66.33.65.58,209.196.44.172。

  4. 在這段觀察期間,多少不同的主機訪問了以209.196.44.172為伺服器的殭屍網路?
    使用命令 tcpflow -r botnet_pcap_2431.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。在這個xml報告中,會顯示出兩方的ip,mac,埠口,長度,檔案長度,通訊時間等等相關資訊。
    什麼是pcap檔案:這次的.dat就是一個pcap檔案,是常用的資料報儲存格式,這種檔案可以儲存我們所抓到的報文。它有這固定的儲存格式,通過notepad++中的外掛Hex-Editor我們可以觀察其中的16進位制資料,從而來進行pcap檔案的分析。可以直接用wireshark開啟。
    tcpflow相關:tcpflow也可以抓包,是以流為單位顯示資料,kali不是自帶的,需要自行安裝。相關的用法可以通過相關命令檢視。比如-r代表從這個檔案裡讀取資料,



    此外通過命令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.
  5. 哪些ip地址用於攻擊蜜罐主機?
    執行命令使用指令tcpdump -n -nn -r botnet_pcap_2431.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 zxw.txttcpdump -n -nn -r botnet_pcap_2431.dat 'dst host 172.16.134.191' | awk -F " " '{print $3}' | cut -d '.' -f 1-4 | sort | uniq | more > xxw.txt;wc -l xxw.txt
    查詢用於攻擊蜜罐主機的ip和埠。可以看到很多的結果。



  6. 攻擊者嘗試攻擊了那些安全漏洞?
    使用指令snort -r botnet_pcap_file20192413.dat -c /etc/snort/snort.conf -K asci檢視使用的協議等。確定網路傳輸使用的是什麼網路協議。發現大部分是TCP,少部分是UDP,所以要篩選響應方的TCP埠和UDP埠。然後就tcpdump -r botnet_pcap_2431.dat -nn 'src host 172.16.134.191' and tcp[tcpflags]== 0x12 | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq 檢視TCP響應的具體埠。
    可以看到有135埠(rpc遠端過程呼叫協議RPC允許像呼叫本地服務一樣呼叫遠端服務。 RPC是指遠端過程呼叫,也就是說兩臺伺服器A,B,一個應用部署在A伺服器上,想要呼叫B伺服器上應用提供的函式/方法,由於不在一個記憶體空間,不能直接呼叫,需要通過網路來表達呼叫的語義和傳達呼叫的資料。)
    139埠(netbios-ssn,即網路基本輸入輸出系統,和TCP.IP捆綁在一起,用來檔案和列印共享當NETBIOS執行時,後門就打開了,因為NETBIOS不光允許區域網內的使用者訪問硬碟資源,internet上的黑客亦可以進入)
    25埠(smtpSMTP是一種提供可靠且有效的電子郵件傳輸的協議。SMTP是建立在FTP檔案傳輸服務上的一種郵件服務,主要用於系統之間的郵件資訊傳遞,並提供有關來信的通知。)
    445埠(smb,是一個協議名,它能被用於Web連線和客戶端與伺服器之間的資訊溝通。其目的是將DOS作業系統中的本地檔案介面“中斷13”改造為網路檔案系統)
    4899埠(radmin)radmin提權, Radmin是一款屢獲殊榮的遠端控制軟體(伺服器管理 ),它將遠端控制、外包服務元件、以及網路監控結合到一個系統裡,也是黑客攻擊的途徑,該漏洞的利用是需要有一定的前提條件的就是雙方都必須要安有Radmin(客戶端、服務端)。要獲取讀取系統登錄檔的許可權(並不需要有寫許可權)。
    80埠(http)超文字傳輸協議,可以用來進行http泛洪攻擊等等攻擊方式。

    tcpdump -r botnet_pcap_2431.d,at -nn 'src host 172.16.134.191' and udp | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq 檢視udp埠。
    137埠(netbios-ns)NetBIOS Name Service.名稱伺服器。可以利用這個協議獲取遠端主機的MAC地址。


    接著就考慮用wireshark抓包去看這些埠看看有什麼可能的攻擊行為。
    tcp埠分析
    (1)135埠:135埠主要用於使用RPC,RPC本身在處理通過TCP/IP的訊息交換部分有一個漏洞,該漏洞是由於錯誤地處理格式不正確的訊息造成的。該漏洞會影響到RPC與DCOM之間的一個介面,該介面偵聽的埠就是135。但是從圖中看到Len都是0,而且沒有什麼特別的地方,應該是沒有成功,在這裡有一個sack_perm,SACK是一個TCP的選項,來允許TCP單獨確認非連續的片段,用於告知真正丟失的包,只重傳丟失的片段。要使用SACK,2個裝置必須同時支援SACK才可以,=1代表開啟SACK。只是用來進行連線,沒有發生資料的互動

(2)139埠:我們可以看到有一個Path:\PC0191\C,是不是嘗試獲取C盤共享?139d埠一般用來檔案共享,針對139埠的攻擊,一般最多隻能拿到netbios資訊,有密碼的IPC$是帶許可權的,只有你有密碼才能影射,而且對方要有共享,如果已經查獲一臺存在139埠漏洞的主機,這時就可以在命令列方式下使用“nbtstat -a [IP地址]”這個命令獲得使用者的資訊情況,並獲得攻擊主機名稱和工作組。接下來攻擊者需要做的就是實現與攻擊目標資源共享。使用Net View和Net user命令顯示計算機列表和共享資源,並使用nbtstat -r和nbtstat -c命令檢視具體的使用者名稱和IP地址。
單擊Windows桌面〔開始〕按鈕,然後執行“查詢/計算機”命令,填寫剛才查詢到的主機名稱,就可以找到這臺電腦了。雙擊主機名稱即可開啟指定的計算機。

(3)25埠:也許就是嘗試從這裡下載連線,但是大多都是[FIN ACK],而且很多重傳,並且長度都是0.應該是沒有成功。

(4)445埠:輸入指令:ip.dst==172.16.134.191 and tcp.dstport==445
可以看到在61.111.101.78這裡有一個PSEXESVC.EXE,這是一種Dv1dr32蠕蟲,說明在通過Dv1dr32蠕蟲進行攻擊,這種蠕蟲是否陳工的話,要判斷以下蜜罐發往這個Ip地址的資訊。發現每個IP地址連入的連線都有響應的迴應,並且返回資訊中含有\PIPE\ntsvcs,這是一個遠端呼叫,所以攻擊者肯定是獲得了許可權,攻擊是成功的。




(5)4899埠:輸入指令ip.dst==172.16.134.191 and tcp.dstport==4899
這個埠只有210.22.204.101訪問過

(6)80埠:可以看到對於210.22.201.101向蜜罐主機發送了很多的C,可能是在進行緩衝區溢位攻擊

對於80埠,發起連線最多的是24.197.194.106,而且從這個圖看它發了很多的:HEAD/secure/.htaccess HTTP1.0/,查閱資料遠端攻擊者通過以“if:<http://"開頭的長header PROPFIND請求,執行任意程式碼。說明也許這裡就是在攻擊IIS伺服器的漏洞從而獲取系統許可權。





218.25.147.83也訪問了80埠,下方資訊中發現了C:\notworm,這是一個紅色程式碼蠕蟲攻擊。,紅色程式碼蠕蟲攻擊中有一步就是需要檢查已存在的c:/notworm,如果它有一個"lysine deficiency" 功能,用來保持惡意程式碼進一步傳播。如果該檔案存在,它不會作其它動作;如果不存在,它會進行下一步。那這裡已經存在了,應該不會進行下一步操作,就攻擊也許沒成功。

udp埠分析
分析:從下圖看,可以看到有一個NetBIOS Name Service.名稱伺服器。
opcode: query,boardcast,可以看到是一個廣播的。處於自動開放狀態,提供Ip地址查詢,同時經過一些資料,知道利用UDP(NetBIOS Name Service)可以來快速獲取遠端主機MAC地址。而且所有Ip地址進行訪問的負載都是相同的,都是KAA……的形式,應該是進行NetBIOS查點。大概就是檢視以下遠端主機的Netbios的資訊。

所以攻擊者利用了IIS伺服器的漏洞,緩衝區溢位的風險,還有蠕蟲攻擊。RPC本身在處理通過TCP/IP的訊息交換部分有一個漏洞,該漏洞是由於錯誤地處理格式不正確的訊息造成的。等等。
7. 那些攻擊成功了?是如何成功的?
成功的攻擊是在61.111.101.78這裡有一個PSEXESVC.EXE,這是一種Dv1dr32蠕蟲,說明在通過Dv1dr32蠕蟲進行攻擊,這種蠕蟲是否陳工的話,要判斷以下蜜罐發往這個Ip地址的資訊。發現每個IP地址連入的連線都有響應的迴應,並且返回資訊中含有\PIPE\ntsvcs,這是一個遠端呼叫,所以攻擊者肯定是獲得了許可權。攻擊成功。緩衝區溢位攻擊應該也成功了吧,它後面一直都回復各種HEAD資訊。不是特別會判斷。

五 實驗錯誤和遇到的問題

  1. 實驗中在Process exploer裡面看不到那個Rada.exe的相關資訊,顯示Path:拒絕訪問,後來脫殼以後還是顯示拒絕訪問。後來我重新下載了這個軟體,路徑裡不帶有中文,好像就可以運行了。
  2. kali裡面沒有安裝tcpflow。用命令安裝就可以了。

六 實驗感悟

對於IDA PRO的使用不是很會,不太懂怎麼用的,然後那裡面的一些函式之間的關係也不是很熟練的能夠掌握。