本書第三章是動態分析的入門,對進行動態分析最基本的工具和方法進行了簡述。
第三章 動態分析基礎技術

1. 運行惡意代碼
(1)使用惡意代碼沙箱
沙箱是一種安全環境中運行不信任程序的安全機制。
- 用作初始診斷:自動執行與分析
- 缺點
- 只能簡單執行,無法輸入控制指令。
- 不能記錄所有事件,只報告基本功能。
- 沙箱環境與真實計算機環境的差異導致一些功能無法觸發或表現有所不同。
(2)運行惡意代碼
對於exe文件,我們可以直接雙擊運行。
對於dll文件該怎么辦?
rundll32.exe程序
-
所有的Windows中包含的程序,提供了運行dll的平台。
C:\rundll32.exe DLL name, Export arguments - Export值必須是一個DLL文件導出函數表中的函數名或者序號。 -
因為惡意的DLL文件通常在DLLMain(DLL入口點)執行他們的代碼,因為無論什么時候被加載,DLLMain函數總會被執行,所以就可以通過rundll32.exe來加載DLL,動態的獲取信息。
修改PE頭部和擴展名
-
使得Windows以一種可執行文件的方式加載DLL。
從IMAGE_FILE_HEADER的特征域中擦除IMAGE_FILE_DLL(0x2000)標記
當看到一個ServiceMain函數,沒有想Install或InstallService這樣方便的導出函數,就需要手動的安裝服務。
- 可以使用Windows系統下的sc命令,或者修改注冊表為一個未使用服務進行手動安裝,然后使用net start 啟動服務。
- Windows服務的注冊表項位於HKLM\SYSTEM\CurrentControlSet\Services。
2. 進程監視器(Process Monitor)
Windows下的高級監視工具,提供監控注冊表、文件系統、網絡、線程、進程和線程行為。
- 結合了文件監視器FileMon和注冊表監視器RegMon的功能。
- 監控所有能捕獲的系統調用 -> 容易耗盡內存
- 通常不用於記錄網絡行為
(1)過濾
-
可以只針對惡意代碼或特定的系統調用設置過濾。

-
常用的過濾選項:
- ProcessName進程名過濾 - PID進程號過濾 - Options操作項過濾 - RegSetValue注冊表鍵值修改操作 - CreateFile創建新文件操作(但是由於在監視器中打開文件操作也被歸為此項,會過濾出很多條) - WriteFile寫文件操作 -
注意,設置過濾器之后所有記錄的事件仍然可用,過濾器僅用於顯示過濾,所以設置過濾器並不能阻止監視器消耗太多內存。
(2)工具欄與事件信息
-
工具欄按鈕

- 注冊表:通過檢查注冊表變化,發現惡意程序對注冊表的操作。
- 文件系統:檢查文件系統能顯示惡意程序創建的所有文件,或它使用過的配置文件。
- 進程行為:檢查進程行為,關注是否啟動了其它的進程。
- 網絡:識別網絡連接能顯示出惡意程序監聽的任意端口。
-
事件信息
- 界面顯示每個事件的不同信息
- 雙擊行可以看到事件的詳細信息
3. 進程瀏覽器(Process Explore)
(1)主要功能
- 列出所有活躍的進程、被進程載入的DLL、各種進程屬性和整體系統信息。
- 殺死一個進程、退出用戶登錄、啟動或激活進程。
(2)顯示
-
以樹狀結構顯示所監視的系統執行進程

-
顏色高亮標記含義
- 服務:粉色
- 進程:藍色
- 新進程:綠色(臨時)
- 被終止進程:紅色(臨時)
(3)其他功能
-
雙擊進程名,可以查看相關的屬性窗口。

- Image標簽:顯示磁盤上可執行程序的路徑。
- verify:驗證磁盤上的簽名認證。
- Threads標簽:顯示活躍的程序。
- TCP/IP標簽:活躍的連接和進程監聽的端口。
- Strings標簽:可用於識別進程替換。

- Image標簽:顯示磁盤上可執行程序的路徑。
4. Regshot比較注冊表快照
-
先使用快照A記錄第一次主次表內容,變化后再用快照B記錄第二次注冊表內容。

-
進行比較與分析。

5. 模擬網絡
(1)ApateDNS
查看惡意代碼發送DNS請求的最快速方式
- 在本機上通過監聽UDP的53端口對用戶指定的IP地址給出虛假的DNS相應。
- 用指定的IP地址相應DNS查詢請求。
- 可以使用十六進制和ASCII碼來顯示所有接收到的請求。
- 使用
- 設置你想在DNS相應包中發出的IP地址,選擇接口。
- 開啟服務:這將自動啟動DNS服務,並修改DNS設置到localhost上(可修改)。
- 運行待分析惡意代碼,並觀察窗口出現的DNS請求。
(2)Netcat
“TCP/IP協議棧瑞士軍刀”,可以被用在支持端口掃描、隧道、代理、端口轉發等的對外連接上。
- 監聽模式下,Netcat充當一個服務器。
- 連接模式下,作為一個客戶端。
- 從標准輸入得到數據進行網絡傳輸,它得到的數據可以通過標准輸出顯示到屏幕上。
- 使用Netcat監聽80端口:
C:\> nc -l -p 80- -l:監聽。
- -p:指明監聽的端口。
6. wireshark數據包監聽
Wireshark是一個網絡封包分析軟件。網絡封包分析軟件的功能是擷取網絡封包,並盡可能顯示出最為詳細的網絡封包資料。
-
Wireshark使用WinPCAP作為接口,直接與網卡進行數據報文交換。
-
界面:

7. INetSim
inetsim是基於Linux的一款模擬常見網絡服務的軟件,也可以說是專門為病毒分析開發的一個服務器。它可以提供大部分的網絡協議和服務並且將它們很真實的模擬出來。
- 安裝注意:
- inetsim的安裝、配置和運行都需要root權限。
- 安裝完要把默認的回傳地址改為本機的IP。
- 偽裝得像一個真正的服務器。
- 可以記錄所有的連入請求與連接。
8. 工具實踐
9. 感想
- 這一章的后半部分讓我感覺有一個難度的提升,尤其是模擬網絡的兩個軟件和INetSim的使用實在是很難理解,需要在實踐中摸索總結出更多的方法和經驗。
