前言
轉職 ~~ 學習到 Malware Analysis 跟逆向分析的東西,把基礎概念與工具用途紀錄一下。
📝 本篇說明紀錄兩個部分
- Analysis Environment
- Analysis Step
- Static Analysis
- Dynamic Analysis
- Reverse Engineering
📝 Analysis Environment ( 分析環境 )
- 最常見的就是 Windows ,大多的惡意程式都是針對 Windows 去設計。
- Remux Linux 的版本,裡面預載許多常用到的分析工具。
🔥 Analysis Step 🔥
📝 Analysis Analysis
- 不執行的去分析惡意程序的內容,針對 Windows 的話可以用下列工具
PE Studio:可以初步的做分析,查看 PE 資訊與 檔案的 strings。IDA:逆向標配,可以查看 assembly,需有組合語言的能力。GhidraPE Bear/PE View:可以針對 PE 檔案格式做深入研究。oledump.py:針對 Office 格式 ( Word, Excel ) 分析裡面的 Macro。pdf-parser.py:針對 PDF 格式分析裡面的 Object。
📝 Dynamic Analysis
- 靜態分析完了之後想驗證自己的想法,可以使用動態分析
- 動態分析方法比較多種,但大致可以分成自動跟手動
Cuckoo:沙盒標配,資料相當完整,但偶而會被Anti-debug/analysis的招式抓到直接不執行。ANY.RUN:可以直接跟沙盒內的 Windows VM 做互動。
- 執行後去分析惡意程序的內容,針對 Windows 的話可以用下列工具
Process Hacker:記錄所有執行中的程式以及詳細內容 (Mutex, process handle…..) 一邊執行一邊看著,通常可以很好發現 Process Injection 的特徵。Process Explorer:記錄所有API Usage,但建議搭配視覺化工具像是ProcDOT。Wireshark:記錄所有網路封包。RegShot:對 Registry 做快照,通常在執行前與後進行快照,然後對比看是否有被修改。x64dbg:惡意程式分析、破解(Cracking)、程式錯誤診斷。
📝 Reverse Engineering
- 從已編譯的程式碼回溯分析其內部運作方式 的技術
- 分析惡意程式(Malware Analysis):找出病毒、木馬、勒索軟體的攻擊行為。
- 破解軟體(Software Cracking):繞過軟體授權、DRM、序號驗證。
- 安全性分析(Security Research):發現應用程式的漏洞(Exploit Development)。
- 修復舊軟體(Legacy Software Maintenance):當源碼遺失時,還原程式運作邏輯。
- 常用逆向工程工具
IDA Pro:最強靜態分析、互動式反組譯 。Ghidra:NSA 開源逆向工具,支援多架構。RetDec:開源反編譯工具,可還原 C 程式碼