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

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

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

1.實驗內容

  1. 惡意程式碼檔案型別標識、脫殼與字串提取
  2. 使用IDA Pro靜態或動態分析crackme1.exe與crakeme2.exe,尋找特定輸入,使其能夠輸出成功資訊。
  3. 分析一個自制惡意程式碼樣本rada
  4. 取證分析實踐

2.實驗過程

2.0 準備工作

  1. 本次實驗使用VirutalBox的Windows XP虛擬機器作為實驗環境,具體版本為Windows XP Professional with Service Pack 3 (x86),相關映象可以在MSDN中獲取。

  2. 在正式進行實驗之前,我們首先在Windows XP上安裝Cygwin(

    安裝包)、PEid、超級巡警脫殼器V1.3、IDA Pro(安裝包)、Process Explorer(安裝包)。

    Cygwin:Cygwin是一個在windows平臺上執行的類UNIX模擬環境,它對於學習UNIX/Linux操作環境,或者從UNIX到Windows的應用程式移植,或者進行某些特殊的開發工作,尤其是使用GNU工具集在Windows上進行嵌入式系統開發,非常有用。我們在實驗中安裝Cygwin的目的是為了在Windows XP中使用Linux命令filestrings

    PEiD(PE Identifier):一款著名的查殼工具,其功能強大,幾乎可以偵測出所有的殼,其數量已超過470 種PE 文件 的加殼型別和簽名。

    超級巡警脫殼器:超級巡警虛擬自動脫殼機是一款實用的脫殼工具,可以輕鬆脫去各種加密殼。支援超過100類的殼,該工具完全基於虛擬機器技術,對各種已知未知殼進行脫殼處理,適合病毒分析中對加殼的木馬樣本進行脫殼處理。

    IDA Pro互動式反彙編器專業版(Interactive Disassembler Professional),人們常稱其為IDA Pro,或簡稱為IDA。IDA Pro是一款互動式的,可程式設計的,可擴充套件的,多處理器的,交叉Windows或Linux WinCE MacOS平臺主機來分析程式, 被公認為最好的花錢可以買到的逆向工程利器。IDA Pro已經成為事實上的分析敵意程式碼的標準並讓其自身迅速成為攻擊研究領域的重要工具。它支援數十種CPU指令集其中包括Intel x86,x64,MIPS,PowerPC,ARM,Z80,68000,c8051等等。

    Process Explorer:由Sysinternals開發的Windows系統和應用程式監視工具,不僅結合了Filemon(檔案監視器)和Regmon(登錄檔監視器)兩個工具的功能,還增加了多項重要的增強功能。包括穩定性和效能改進、強大的過濾選項、修正的程序樹對話方塊(增加了程序存活時間圖表)、可根據點選位置變換的右擊選單過濾條目、整合帶原始碼儲存的堆疊跟蹤對話方塊、更快的堆疊跟蹤、可在 64位 Windows 上載入 32位 日誌檔案的能力、監視映像(DLL和核心模式驅動程式)載入、系統引導時記錄所有操作等。

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

  1. 開啟cmd.exe並使用file RaDa.exe命令檢視RaDa.exe的檔案型別,如圖一所示,可以發現這是一個32位的PE可執行檔案,其執行環境是


    圖一 使用file命令檢視RaDa.exe的檔案型別

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

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

2.4 取證分析實踐

3.問題及解決方案

  • 問題1:在2.3時,使用命令execstack作業系統提示——無法定位軟體包 execstack

  • 問題1解決方案:通過百度搜索,我找到了execstack的官方網站併成功找到了execstack的安裝包,由於kali是Debian的發行版,所以選擇了Debian版本的進行下載,具體下載地址見下面的連結。

    https://debian.pkgs.org/10/debian-main-amd64/execstack_0.0.20131005-1+b10_amd64.deb.html

    下載到本地後,使用apt的命令即可完成安裝

    apt install ./execstack_0.0.20131005-1+b10_amd64.deb
    
  • 問題2:在2.3中,獲取地址後修改字串的資料然後重新執行發現依舊不成功

  • 問題2解決方案:使用gdb進行除錯,發現了每一次esp中的地址都不相同,結合實驗指導書的相關內容,發現是沒有關閉地址隨機化,使用相應命令關閉地址隨機化即可。

    echo "0" > /proc/sys/kernel/randomize_va_space //關閉地址隨機化
    

4.學習感悟、思考等

本次實驗進行的是緩衝區溢位攻擊,通過動手實踐的方式我弄懂了緩衝區溢位的基本原理和常用的方法以及可執行程式的分析方法。在本次實驗中,經過王老師的講解和劉老師的部落格,我成功地入門了緩衝區溢位這一個我曾以為困難重重的課題。同時,此次實驗也使我對於二進位制檔案有了初步的瞭解,拿到了二進位制檔案,我也不再會不知所措,而是可以通過工具對其進行一定的分析,可以說收穫頗多。

本次實驗也暴露出了我在某些方面還有所欠缺,例如對於組合語言的瞭解還不夠深入,很多命令還需要老師的點撥才能夠明白它的功能;本次實驗中的Shellcode是老師直接提供給我的,是隻針對於獲得Shell這個功能的。如果要實現其他的功能,編寫自己的Shellcode,還需要我對於Shellcode的相關知識認真學習;本次實驗對於地址隨機化和堆疊保護都進行了關閉,那麼在地址隨機化和堆疊保護開啟的時候如何進行緩衝區溢位攻擊也值得我深入思考。只有這樣我才能夠在此次實驗的基礎上取得更大的進步。

最後,感謝王老師和劉老師的細心講解和耐心幫助,也感謝在實驗過程中給我幫助的同學們。正因為有你們的幫助我才能夠順利地完成本次實驗,謝謝!

參考資料