※本記事にはアフィリエイトリンクが含まれます。詳しくはプライバシーポリシー・広告掲載についてをご覧ください。
【PR開示】本記事にはアフィリエイトリンクが含まれる場合があります。
インシデント対応の現場でマルウェアサンプルが見つかったとき、あなたはそれが何をするか即座に判断できますか?マルウェア解析は高度なスキルに見えますが、基本的な手法と無料ツールを組み合わせれば、エンジニアレベルで初動トリアージが可能です。本記事では、静的解析・動的解析・サンドボックス・YARAルール・Sigmaルールの基礎から実践手順まで体系的に解説します。
マルウェア解析とは:2つのアプローチ
マルウェア解析には大きく2つのアプローチがあります。
- 静的解析(Static Analysis): マルウェアを実行せずにコード・構造を調べる。安全だが深い理解には限界がある
- 動的解析(Dynamic Analysis): 隔離環境でマルウェアを実際に実行し、挙動を観察する。より詳細な情報が得られるがリスク管理が必要
実際のインシデント対応では、まず静的解析で素早くトリアージし、疑わしければ動的解析・サンドボックスで詳細を確認するという流れが一般的です。
静的解析:実行せずに正体を暴く
ファイルハッシュとVirusTotalチェック
最初のステップはファイルのハッシュ値(MD5/SHA256)を計算し、VirusTotalに照合することです。既知のマルウェアは即座に判定できます。
# Linuxでのハッシュ計算
sha256sum suspicious_file.exe
md5sum suspicious_file.exe
# PowerShell(Windows)
Get-FileHash suspicious_file.exe -Algorithm SHA256
stringsコマンドで文字列を抽出
バイナリファイルから印刷可能な文字列を抽出します。IPアドレス・URLドメイン・レジストリキー・APIコールなど、マルウェアの意図を示すヒントが見つかることがあります。
# strings コマンド(Linux/macOS)
strings -n 6 suspicious_file.exe | grep -E '(http|ftp|.exe|HKEY_|cmd.exe|powershell)'
# floss(難読化文字列も抽出できるFireEye製ツール)
floss suspicious_file.exe
PEファイル構造の解析
Windowsの実行ファイル(PE形式)は、インポートテーブル・エクスポートテーブル・セクション情報を解析することで機能の概要がわかります。pesieve・pefile(Python)・PE-bearが代表的なツールです。
# Python pefileでインポートテーブルを確認
import pefile
pe = pefile.PE("suspicious_file.exe")
for entry in pe.DIRECTORY_ENTRY_IMPORT:
print(f"DLL: {entry.dll.decode()}")
for imp in entry.imports:
if imp.name:
print(f" {imp.name.decode()}")
特に注目すべきAPIコール:
CreateRemoteThread/VirtualAllocEx→ プロセスインジェクションRegSetValueEx/RegCreateKeyEx→ 永続化(レジストリ)WSASend/InternetOpenUrl→ ネットワーク通信(C2通信の可能性)CryptEncrypt/CryptGenKey→ 暗号化(ランサムウェアの可能性)
詳細は関連記事:ランサムウェア攻撃の最新手口と対策も参照してください。
動的解析:実行して挙動を観察する
解析環境の準備(重要)
動的解析は必ず隔離されたVM環境で行います。ホストOSへの感染・ネットワーク拡散を防ぐため、以下を徹底してください:
- VMのネットワークアダプタをホストオンリー(外部遮断)または INetSim等の疑似インターネット環境に設定
- スナップショットを取ってから実行(解析後に即座に復元可能にする)
- 共有フォルダ・クリップボード共有を無効化
Process Monitor / Process Hacker での挙動監視
SysinternalsのProcess Monitor(Procmon)は、ファイルシステム・レジストリ・ネットワーク・プロセスの全操作をリアルタイムで記録します。マルウェア実行前後の差分を確認することで、作成されたファイル・設定されたレジストリキー・接続先IPを特定できます。
ネットワークトラフィック解析
Wiresharkまたはtcpdumpでネットワークパケットをキャプチャし、C2(Command & Control)通信・データ外部送信・DNS問い合わせを確認します。
# tcpdumpでキャプチャ(Linux VM内)
tcpdump -i eth0 -w /tmp/malware_traffic.pcap
# Zeek(旧Bro)でPCAPを解析(C2ドメイン・HTTPリクエストを抽出)
zeek -r /tmp/malware_traffic.pcap
cat dns.log | zeek-cut query | sort | uniq -c | sort -rn | head -20
サンドボックス解析:自動化された動的解析
手動の動的解析は時間がかかります。サンドボックスはマルウェアを自動実行し、挙動レポートを生成するクラウドサービスです。
- ANY.RUN: インタラクティブなサンドボックス。リアルタイムで操作しながら解析可能(無料プランあり)
- Joe Sandbox: 詳細な挙動レポートを生成。多数のOSに対応
- CAPE Sandbox: オープンソース。自己ホスト可能。マルウェアペイロード抽出に特化
注意: クラウドサンドボックスにアップロードする場合、機密情報を含むファイルや未公開の脅威情報は社内ポリシーを確認してください。
YARAルール:シグネチャベースの検知
YARAは「マルウェアの特徴」をルールとして定義し、大量のファイルを一括スキャンするためのツール/言語です。SOCチームが脅威ハンティングやインシデント対応で広く使用しています。
// YARAルール例:Mimikatzの特徴を検知
rule Mimikatz_Generic {
meta:
description = "Detects Mimikatz credential dumper"
author = "Security Team"
date = "2026-01-01"
strings:
$s1 = "sekurlsa::logonpasswords" nocase
$s2 = "lsadump::sam" nocase
$s3 = "mimikatz" nocase
$hex1 = { 8B 45 F8 8B 40 04 89 45 }
condition:
2 of them
}
# YARAでスキャン実行
yara mimikatz.yar /path/to/suspicious/files/
yara -r mimikatz.yar /tmp/malware_samples/ # 再帰的スキャン
# 複数ルールファイルをまとめてスキャン
yara -r rules/ /mnt/evidence/
公開YARAルールリポジトリ: Yara-Rules/rules・Mandiant RTTCから最新シグネチャを入手できます。
Sigmaルール:SIEMに使えるログ検知ルール
Sigmaは汎用的なログ検知ルール形式です。一度書いたSigmaルールをElastic・Splunk・Microsoft Sentinel等のSIEMクエリに変換できます。
# Sigmaルール例:PowerShell encoded commandの検知
title: PowerShell Encoded Command Execution
status: stable
description: Detects PowerShell with encoded command (-EncodedCommand / -enc)
logsource:
category: process_creation
product: windows
detection:
selection:
Image|endswith: 'powershell.exe'
CommandLine|contains:
- ' -EncodedCommand '
- ' -enc '
- ' -e '
condition: selection
falsepositives:
- Legitimate automation scripts using encoded commands
level: medium
# sigma-cliでElastic/Splunkクエリに変換
sigma convert -t elasticsearch sigma_rule.yml
sigma convert -t splunk sigma_rule.yml
公開Sigmaルール: SigmaHQ/sigmaには4,000件以上のルールが公開されています。ATT&CKフレームワークとのマッピングも充実しており、脅威ハンティングの出発点として最適です。詳細は関連記事:フィッシング攻撃の最新手口と対策も参照してください。
マルウェア解析フロー:実践的な手順書
- 隔離: 感染端末・サンプルファイルをネットワークから切り離す
- ハッシュ計算 + VirusTotal照合: 既知マルウェアか即時判定
- 静的解析: strings・pefileでIPアドレス・URL・APIコールを抽出
- サンドボックス投入: ANY.RUN等で自動挙動レポート取得
- 動的解析(必要に応じて): VMでProcmon・Wireshark監視下で実行
- YARAルール作成: 発見した特徴でシグネチャを作成し横展開スキャン
- Sigmaルール作成: SIEMに同様の挙動を検知するルールを登録
- レポート作成: IOC(IPアドレス・ドメイン・ファイルハッシュ)をチームで共有
参考リソース
✅ おすすめのセキュリティソフト
※ アフィリエイトリンクを含みます。料金・詳細は各公式サイトでご確認ください。
まとめ
- マルウェア解析は静的解析→動的解析の順で進める。まずhash + VirusTotalで素早くトリアージ
- pefileでインポートテーブルを確認し、危険なAPIコール(プロセスインジェクション・暗号化・C2通信系)を把握
- 動的解析は必ず隔離VM環境で。Procmon・Wiresharkで挙動を記録
- YARAルールでシグネチャを作成し、環境内の他端末に横展開スキャンをかける
- SigmaルールをSIEMに登録して同様の挙動を継続検知する体制を構築
- 発見したIOCはチームで即座に共有し、ブロックリストに追加する
マルウェア解析のスキルはCSIRT・SOCエンジニアに不可欠です。まずはVirusTotalとANY.RUNの無料プランから試してみてください。
おすすめセキュリティ対策ツール
マルウェア解析と合わせて、エンドポイント保護の導入も強くお勧めします。
- — 軽量で誤検知が少ない。マルウェア検知率の高さで定評
- ウイルスバスター — 日本語サポートが充実。中小企業の導入実績多数
- — 世界最大手。マルウェア防御とVPN機能を含む総合対策
※ 上記はアフィリエイトリンクです。料金・機能は各公式サイトで必ずご確認ください。


コメント