> For the complete documentation index, see [llms.txt](https://snowyowls-organization.gitbook.io/snowyowl644-hacklog/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://snowyowls-organization.gitbook.io/snowyowl644-hacklog/tryhackme/malware_analysis/maruwea.md).

# マルウェア分析 入門

コースURL : <https://tryhackme.com/room/malmalintroductory>

## よく使われるツール

### 静的解析ツール

* PETools
  * Dependency Walker (depends)
  * PeID
  * PE Explorer
  * ResourceHacker
* DisAssemblyツール
  * IDA Freeware
  * WinDbg
* Sysinternals Suite
  * Microsoft が提供している Windows 向けのシステム管理・診断・トラブルシューティング用ツール集
  * ResourceHacker

### 表層解析

* windowsでもファイルのPropertiesから取得できる ![](https://i.imgur.com/qGRGYym.png)
* windows
  * PeID : 大規模なデータベースでファイルヘッダを見て、ファイルのコンパイラ／パッカーを特定できる
  * ここでは、「Microsoft Visual C++ 6.0」とわかる
  * ![](https://i.imgur.com/F5E69Rx.png)

### パッキング

* 難読化の一形態
* 正当にも違法にも使われる
  * 正当な場合
    * 知的財産の保護
  * 違法な場合
    * 自分のマルウェアを解析されないために

**PEiD**

* 「そのファイルがどのコンパイラやパッカーで作られているのか」を推定して表示してくれるツール
* コンパイラ由来なら「Microsoft Visual C++ 6.0」などと表示
* パッカー由来なら「UPX」「ASPack」「Themida」などと表示 という形で **「パッキングされているかどうか」もわかる**

これは「FSG 1.0 -> dulek/xt」でパッキングされている例 ![](https://i.imgur.com/Xq14oeE.png)

PEiDでできないこと

* 自作されたパッカーの読み取り
* 難読化の解除

### Strings

* プログラムには大量の文字列が含まれていることが多く、Sysinternals の「strings」ツールではそのうちの 10% ほどしか表示されないこともある

### PE Explorer

* Windows 向けの 実行ファイル解析ツール
* ヘッダ解析
  * 実行ファイルの内部構造（セクション、エントリーポイント、リソースなど）を確認できる。
* インポート／エクスポートの確認
  * どんなライブラリや関数を呼び出しているかを一覧表示できる。マルウェア解析では「どんな API を使っているか」で挙動を推測できる
* リソース閲覧／編集
  * アイコン、文字列、ダイアログなど、ファイルに埋め込まれたリソースを直接確認したり編集したりできる
* Hexビューア
  * ファイル全体を16進数で表示し、バイナリレベルでの解析が可能。
* 文字列抽出（Strings）
  * 埋め込まれた ASCII／Unicode の文字列を一覧表示。GUIで探せるので strings コマンドより便利

![](https://i.imgur.com/g9ZoPAg.png)

View → Import

* プログラムが 外部の DLL（ライブラリ）からどんな関数を呼び出しているか がわかる ![](https://i.imgur.com/KimHK7u.png)
