計算機病毒實踐總結一:簡單靜態分析


本文是基於計算機病毒課程實踐部分的總結,這些實踐是自主嘗試學習分析惡意代碼的過程,如有疏漏不妥之處,還請不吝賜教!

我的相關博客

惡意代碼簡單靜態分析實踐總結

1. 目標

靜態分析技術是研究惡意代碼的第一步,通過各種工具盡可能多的搜集其信息並找到進一步分析的思路。
  • 確認程序惡意性
  • 判斷程序主要行為
  • 簡單信息分析

2. 反病毒掃描

利用一些網站集合的病毒文件特征庫進行惡意代碼特征片段的匹配,為判斷程序惡意性提供參考。

3. 加殼與混淆后的惡意代碼

加殼后的惡意程序會被壓縮或加密處理,混淆技術則隱藏了執行的過程。
  • 加殼程序特點:至少會有兩個函數LoadLibraryGetProcAddress用來加載和使用其他函數。

  • 使用PEiD工具

  • 檢測加殼的類型和所用編譯器的類型,簡化加殼分析的過程。

  • 查看PE文件的分節

  • 查看導入函數

  • 存在問題:許多PEID插件會運行惡意代碼可執行文件,注意在虛擬機的環境下運行。

4. 鏈接庫與導入導出函數

分析惡意代碼,可以其鏈接庫和導入導出函數了解程序的行為。
  • 靜態鏈接與動態鏈接

    庫與程序靜態鏈接時,庫中的所有代碼都會復制到程序中,程序增大很多,常見於UNIX和Linux系統中。
    Windows中多為動態鏈接,只有在程序運行時才鏈接到庫。

  • DLL文件:動態鏈接庫文件。可執行文件常被分成這樣的一個個具有相對獨立功能的dll文件。

  • 使用Dependency Walker工具

    • 模塊依賴關系、導入導出函數、模塊列表、日志
    • PI(Parent Import Function List View):從哪些其他文件中調用了函數。
    • E(Export Function List View):提供了哪些接口,讓其他的程序調用。
  • 常見的DLL程序:

      Kernal.dll 包含系統的核心功能,訪問和操作內存,文件,硬件
      WININET.dll 聯網操作 包含了FTP HTTP NTP等協議
      User.dll 包含了用戶界面組件,控制響應用戶操作的組件
      Ntdll.dll 是Windows內核的接口 通常由Kernal間接導入,一些隱藏功能和操作進程會使用這個接口。
      Advapi32.dll 提供了對核心Windows組件的訪問 ,比如服務管理器和注冊表
      Gdi32.dll  提供圖形顯示和操作的函數
    

5. PE文件頭與分節

PE是指Windows系統下32位可執行文件,以一個文件頭開始,其中包括代碼信息,應用程序類型,所需的庫函數與空間要求。
  • PE文件中常見的分節:

      .text:包含了CPU的執行指令,正常是唯一包含代碼的節。
      .rdata:通常包含導入導出的函數信息,還可以存儲程序中的其他只讀數據。
      .data:包含了程序的全局數據 (本地數據並不存儲在這里)。
      .rsrc:包含可執行文件使用的資源,內容並不執行,例如圖標、菜單項、字符串等
      .reloc:包含用於重定位文件庫的信息
      .pdata:只在64位可執行文件中存在,存儲異常處理信息
    
  • 使用PEview工具

  • 在這里或許可以找到有關惡意代碼行為的線索。

    • 編譯信息:IMAGE_NT_HEADERS中的映像文件頭IMAGE_FILE_HEADER中“Time Date Stamp”可以獲取可執行文件是什么時候編譯的。
    • 入口信息:在IMAGE_OPTIONAL_HEADER中第七個成員“AddressOfEntryPoint“,它持有OEP(程序的入口點)的RVA(相對虛擬地址)。

6. 綜合分析

(1)整合線索

- 有着相同編譯時間的動態鏈接庫
- 有特定行為的關鍵導入導出函數
- 分節中的信息

(2)聯系實際

- 能與系統實際文件相關的線索
- 與端口號相關的線索 -> 特定的服務
- 與某個網絡地址相關的線索

(3)做出推斷

- 是否是惡意代碼?
- 它做了什么?
- 主機已經感染的特征?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM