マルウェア分析基礎(Malware Analysis)
マルウェアとは
Malicious Software の略。コンピュータやネットワークに害を与えることを目的とするソフトウェアの総称。
マルウェアの理解はセキュリティスペシャリストにとって不可欠。
「何が起きているか」を理解せずに対処することはできない。
マルウェアの分類
動作・目的による分類
| 種類 | 概要 | 代表例 |
|---|---|---|
| ウイルス(Virus) | 他のファイルに寄生して感染を広げる。宿主ファイルが必要 | Melissa, ILOVEYOU |
| ワーム(Worm) | 自己複製してネットワーク上を自律的に拡散。宿主不要 | WannaCry, Conficker |
| トロイの木馬(Trojan) | 正規ソフトを装って侵入。バックドアや盗聴機能を持つ | Emotet, TrickBot |
| ランサムウェア(Ransomware) | ファイルを暗号化して身代金を要求 | WannaCry, REvil, LockBit |
| スパイウェア(Spyware) | キーストローク・スクリーンショットなどを窃取 | Pegasus, FinFisher |
| ルートキット(Rootkit) | OS レベルで自身を隠蔽し、継続的なアクセスを維持 | ZeroAccess, Necurs |
| ボットネット(Botnet) | 複数の感染マシンを C2 サーバーから遠隔操作 | Mirai, Emotet |
| アドウェア(Adware) | 広告を強制表示・クリック詐欺を行う | 比較的低リスク |
| ファイルレスマルウェア | ファイルを書かずメモリ上で動作。検知が難しい | PowerShell ベースの攻撃 |
感染経路
主要な感染経路:
①フィッシングメール
悪意ある添付ファイル(Office マクロ・PDF・ISO 等)
または悪意あるリンク(ドライブバイダウンロード)
②脆弱性の悪用
未パッチの OS・ブラウザ・ライブラリの CVE を突く
例: WannaCry は MS17-010(EternalBlue)を悪用
③サプライチェーン
正規ソフトウェアのアップデートに混入
例: SolarWinds SUNBURST(2020年)
④USB・物理メディア
Stuxnet(イランの核施設攻撃)はエアギャップをUSBで越えた
⑤RDP・SSH のブルートフォース
弱い認証情報でリモートデスクトップに侵入
マルウェア分析の2つのアプローチ
静的解析(Static Analysis)
マルウェアを実行せずに分析する。
【基本的な静的解析の手順】
1. ハッシュの確認
md5sum malware.exe
sha256sum malware.exe
→ VirusTotal でハッシュを照合(既知のマルウェアか確認)
2. 文字列の抽出
strings malware.exe | grep -i "http\|password\|cmd\|powershell"
→ URL・IPアドレス・APIコール・エラーメッセージを発見
3. ファイル形式の確認
file malware.exe # PEファイル・ELF等の判定
pestudio malware.exe # PE ヘッダー・インポート関数の解析
4. インポート関数の確認
重要なWin32 API:
- CreateRemoteThread → プロセスインジェクション
- VirtualAllocEx → メモリ割り当て(インジェクション前兆)
- RegSetValueEx → レジストリ変更(永続化)
- WinExec / CreateProcess → プロセス実行
- InternetOpen / HttpSendRequest → ネットワーク通信
動的解析(Dynamic Analysis)
安全な隔離環境でマルウェアを実際に実行し、挙動を観察する。
【動的解析の環境】
スナップショット機能付きの仮想マシン(VirtualBox / VMware)
→ 分析後にスナップショットに戻す
ネットワークは隔離(INetSim でインターネットを模倣)
または Flare-VM(マルウェア分析用のWindows環境)
【観察する項目】
プロセス: 新たに生成・インジェクションされたプロセス
ツール: Process Monitor, Process Hacker
ファイル: 新規作成・変更・削除されたファイル
ツール: Process Monitor のファイルフィルタ
レジストリ: 永続化のための自動起動キーの追加
ツール: Regshot(実行前後のdiff)
ネットワーク: C2 サーバーとの通信・DNSクエリ
ツール: Wireshark, Fakenet-NG
マルウェアの主要な技術
永続化(Persistence)
再起動後も生き残るための仕組み。ATT&CK の TA0003 に対応。
Windowsの主要な永続化箇所:
レジストリ自動起動キー:
HKCU\Software\Microsoft\Windows\CurrentVersion\Run
HKLM\Software\Microsoft\Windows\CurrentVersion\Run
スタートアップフォルダ:
%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup
タスクスケジューラ:
schtasks /create ...
サービス:
sc create MaliciousService binpath= "C:\malware.exe"
WMI Event Subscription:
検知が難しい。パフォーマンスに影響するため稀だが高度な APT が利用
難読化・回避技術
パッキング(Packing):
本体を圧縮・暗号化して実行時に展開する。静的解析を困難にする。
UPX が有名だが悪用される。
文字列の暗号化:
シグネチャ検知を回避するため、C2サーバーのURLを実行時に復号
プロセスハロウイング(Process Hollowing):
正規プロセスを起動 → メモリ上のコードを悪意あるコードで置き換える
タスクマネージャーには「explorer.exe」として表示される
タイムストンピング(Timestomping):
ファイルのタイムスタンプを改ざんしてフォレンジックを妨害
VMサンドボックス検知:
マウスの動き・レジストリキー・プロセス名でVM環境を検知して動作しない
ランサムウェアの解剖
現代のランサムウェア(RaaS: Ransomware-as-a-Service)の動作フロー。
①初期侵入(フィッシング / RDP)
↓
②偵察(ネットワーク・バックアップ・AD 環境の把握)
↓
③ラテラルムーブメント(ドメイン管理者権限の取得)
↓
④バックアップの削除・無効化(VSS シャドウコピーの削除)
↓
⑤暗号化の実行(全ファイルを AES で暗号化)
↓
⑥身代金要求ノートの配置
↓
⑦二重恐喝(暗号化前にデータを外部サーバーに送信 → 公開脅迫)
バックアップが VSS だけの場合、削除されて復旧不能になる。
オフラインかつエアギャップのバックアップが唯一の保険になる。
メモリフォレンジック
マルウェアがメモリ上にしか存在しない場合(ファイルレス)でも、
メモリダンプから痕跡を発掘できる。
# Volatility 3 を使ったメモリ解析
# 実行中プロセスの一覧
python vol.py -f memory.dmp windows.pslist
# 隠蔽されたプロセスの検出(PSList と PSScan の差分)
python vol.py -f memory.dmp windows.psscan
# ネットワーク接続の確認
python vol.py -f memory.dmp windows.netstat
# プロセスのインジェクション検出
python vol.py -f memory.dmp windows.malfind
# C2 に送信されようとしていた文字列の抽出
python vol.py -f memory.dmp windows.strings --pid 1234
サンドボックス分析
手動分析の前に自動サンドボックスで概要を把握する。
| ツール | 種類 | 特徴 |
|---|---|---|
| VirusTotal | オンライン | 70以上のエンジンでスキャン。ハッシュ・URL・ファイル |
| Any.run | オンライン | インタラクティブな動的解析。リアルタイムで挙動を観察 |
| Cuckoo Sandbox | OSS | 自前環境で動的解析。プライベートなサンプルに使用 |
| Joe Sandbox | オンライン | 詳細なレポート生成。商用版は高機能 |
注意: VirusTotal に提出したファイルは他のユーザーも参照できる可能性がある。
機密性の高いファイル(内部ツール・未公開のマルウェアサンプル等)は慎重に扱う。
IOC(Indicators of Compromise)の収集
マルウェア分析の成果として IOC を整理し、防御側(SIEM・EDR)に適用する。
収集する IOC の種類:
ネットワーク系:
C2 サーバーの IP アドレス・ドメイン
通信先 URL
ビーコン間隔(一定周期の C2 通信)
ホスト系:
マルウェアのハッシュ値(MD5・SHA256)
作成・変更されたファイルパス
追加されたレジストリキー
永続化のためのタスクスケジューラ名
異常なプロセス名・コマンドライン引数
共有形式:
STIX / TAXII(標準的な脅威インテリジェンスの共有フォーマット)
APT(Advanced Persistent Threat)
国家支援を受けた高度な攻撃グループ。長期潜伏・高度な TTPs・明確な政治的目的が特徴。
| グループ名 | 推定出身 | 代表的な攻撃 |
|---|---|---|
| APT29 / Cozy Bear | ロシア(SVR) | SolarWinds SUNBURST(2020) |
| APT28 / Fancy Bear | ロシア(GRU) | DNC ハッキング(2016) |
| Lazarus Group | 北朝鮮 | WannaCry(2017)・金融機関への窃盗 |
| APT41 | 中国 | スパイ活動とサイバー犯罪の両立 |
| Equation Group | 米国(NSA) | Stuxnet(イラン核施設攻撃) |
学習・実践環境
| リソース | 内容 |
|---|---|
| Malware Traffic Analysis(malware-traffic-analysis.net) | 実際のマルウェア通信の PCAP を用いた演習 |
| VirusTotal Graph | IOC 間の関係を可視化 |
| MalwareBazaar(abuse.ch) | 実際のマルウェアサンプルを安全にダウンロードできるリポジトリ |
| REMnux | マルウェア分析専用の Linux ディストリビューション |
| Flare-VM | マルウェア分析専用の Windows 環境(FireEye / Mandiant) |
参考文献
- Michael Sikorski & Andrew Honig『Practical Malware Analysis』(No Starch Press, 2012)— マルウェア分析の決定版。静的・動的・コード解析を網羅
- Michael Ligh et al.『The Art of Memory Forensics』(Wiley, 2014)— メモリフォレンジックの標準テキスト
- Michael Ligh et al.『Malware Analyst’s Cookbook』(Wiley, 2010)— 具体的なツールと手順のレシピ集
- CISA Malware Analysis Reports — 実際の脅威アクターのマルウェアに関する米国政府の公式分析レポート(無料)
- VirusTotal Documentation — IOC の照合・サンドボックス分析の活用方法
- 1. 🔒セキュリティ概要・学習ロードマップ
- 2. 🎯脅威モデリング(Threat Modeling)
- 3. 🏛️セキュリティ設計原則
- 4. 🕳️OWASP Top 10
- 5. 🔑認証・認可(Authentication & Authorization)
- 6. 🔐暗号の基礎(Cryptography)
- 7. 🌐ネットワークセキュリティ
- 8. ☁️クラウドセキュリティ
- 9. 🔄DevSecOps / Shift Left
- 10. 🚨インシデントレスポンス(Incident Response)
- 11. 🗡️ペネトレーションテスト(Penetration Testing)
- 12. 🗺️MITRE ATT&CK フレームワーク
- 13. ⚖️GRC・リスク管理(Governance, Risk, Compliance)
- 14. 🦠マルウェア分析基礎(Malware Analysis)
出典: Practical Malware Analysis(Sikorski & Honig, 2012)/ The Art of Memory Forensics(Ligh et al., 2014)/ Malware Analyst's Cookbook(Ligh et al., 2010)/ CISA Malware Analysis Reports / VirusTotal Documentation