マルウェア解析と聞くと「上級者向け」と感じる方も多いはず。でも実は、INetSim・仮想環境・Wireshark・Burp Suite・Fridaという5つのツールの役割と組み合わせを理解すれば、初心者でも安全にマルウェアの動作を観察できます。本記事ではそれぞれのメカニズムをゼロから解説し、実際の解析フローと防御策まで丁寧にまとめます。
📋 この記事の目次
1. マルウェア解析とは?なぜ必要?
マルウェア(Malware)とは、Malicious Software(悪意あるソフトウェア)の略です。ウイルス・ランサムウェア・スパイウェア・トロイの木馬・ワームなど多くの種類が存在し、感染したコンピュータを乗っ取ったり、データを盗んだり、身代金を要求したりします。
マルウェア解析(Malware Analysis)とは、「マルウェアが何をするプログラムなのかを調べる作業」です。セキュリティ研究者やインシデントレスポンスチームが行い、主に次の3つの目的で使われます。
- 🔍 脅威の把握:どんなデータを盗むのか、どこに送信するのかを知る
- 🛡️ 防御策の立案:通信先IPやドメインをブロックリストに追加する
- 📣 インシデント対応:感染端末の範囲を特定し、被害を最小化する
解析手法は大きく2つあります。
| 手法 | 内容 | 主なツール |
|---|---|---|
| 静的解析 | 実行せずにコードやバイナリを読む | Ghidra, IDA Pro, strings |
| 動的解析 | 実際に動かして挙動を観察する | INetSim, Wireshark, Frida ← 本記事のメイン |
本記事では動的解析に焦点を当て、5つのツールをどう組み合わせるかを解説します。
2. 解析ラボの全体構成
いきなりマルウェアを実行したら自分のPCが感染します。だからこそ、「隔離された実験室」を用意することが最初のステップです。
全体像はこうです:
【物理ホストPC】
└─ 仮想化ソフト(VMware / VirtualBox)
├─ 【解析VM】Windows 10 / REMnux
│ ├─ マルウェアサンプル(ここで実行)
│ ├─ Frida(プロセス内部フック)
│ └─ Burp Suite(HTTPプロキシ)
│
└─ 【サービスVM】Linux(Remnux / Kali推奨)
├─ INetSim(偽インターネットサービス群)
└─ Wireshark(パケットキャプチャ)
【ネットワーク】
解析VM ↔ サービスVM:ホストオンリー or 内部ネットワーク
外部インターネット:完全遮断 ★重要
⚠️ 安全のための鉄則
- 解析VM が外部インターネットに出られないようにする
- VMのスナップショット(保存ポイント)を解析前に必ず取る
- 解析が終わったらスナップショットに戻す
- ホストPCとVMの間でファイル共有は最小限に
3. 仮想環境(VM)の役割と構築
3-1. 仮想環境とは?
仮想環境(Virtual Machine / VM)とは、1台のPCの中にもう1台の「仮想のコンピュータ」を作り出す技術です。仮想化ソフトがハードウェアをエミュレートし、ゲストOSはあたかも独立した物理マシンかのように動作します。
マルウェア解析でVMを使う最大の理由は「隔離性」と「復元性」です。万が一マルウェアが暴れても、ホストPCには影響が及びません(完全ではないため後述の注意点も確認してください)。またスナップショット機能により、感染前の状態に即座に戻せます。
3-2. 主な仮想化ソフトの比較
| ソフト | 価格 | 特徴 |
|---|---|---|
| VMware Workstation Pro | 個人は無料化(2024年〜) | 高機能・安定。スナップショット管理が優秀 |
| VirtualBox | 無料(OSS) | 導入しやすい。初心者向け |
| Hyper-V | Windows Pro以上に内蔵 | Windows標準。追加コスト不要 |
3-3. 解析VMに入れておくべきツール
REMnux(レムナックス)はマルウェア解析に特化したUbuntuベースのLinuxディストリビューションです。Wireshark・Volatility・YARA・Zeekなど多数のツールがプリインストールされており、無料で利用できます(remnux.org)。
Windowsマルウェアを動かす解析VMにはWindows 10 / 11が適しています。ライセンスが必要ですが、Microsoft公式の「評価版ISO」(90日間)を利用する方法もあります。解析VMには以下を追加インストールします:
- Process Monitor(ProcMon) ― ファイル・レジストリ・プロセスの操作をリアルタイム記録
- Process Hacker / System Informer ― 動作中プロセスの詳細監視
- Autoruns ― 自動起動エントリの一覧(Sysinternals Suite)
- Frida(後述)
- Burp Suite(後述)
3-4. VMのネットワーク設定(最重要)
VMwareとVirtualBoxはネットワークアダプタのモードを選べます。マルウェア解析では「ホストオンリー(Host-Only)」か「内部ネットワーク(Internal Network)」を使い、外部インターネットへの通信を物理的に切り離します。
✅ 推奨ネットワーク構成
解析VM と INetSim/Wireshark が動くサービスVM を同じ「ホストオンリーネットワーク」に配置。解析VMのデフォルトゲートウェイをサービスVMのIPに向け、すべての通信がそこで受け止められるようにする。
4. INetSim ― ニセのインターネットを作る
4-1. INetSimとは?
INetSim(Internet Services Simulation Suite)は、DNS・HTTP・HTTPS・FTP・SMTPなど多数のインターネットサービスを模倣する「偽のサーバー群」です。Kali LinuxやREMnuxにパッケージとして収録されており、コマンド一発で起動できます。
マルウェアは実行後にC2サーバー(Command & Control:攻撃者のサーバー)に接続しようとします。しかし本物のC2サーバーに到達させると、攻撃者に「解析されている」と気づかれたり、実際の攻撃コマンドが送られてきたりして危険です。INetSimを使えば、マルウェアが「つながった!」と思い込む偽環境を安全に作れます。
4-2. INetSimが模倣するサービス一覧(主要なもの)
| プロトコル | ポート番号 | INetSimの動作 |
|---|---|---|
| DNS | 53/UDP, 53/TCP | すべてのドメイン名を自分のIPに解決(偽DNS) |
| HTTP | 80/TCP | ダミーHTMLやダミーファイルを返す |
| HTTPS | 443/TCP | 自己署名証明書でTLS接続を受ける |
| FTP | 21/TCP | ログイン成功を偽装 |
| SMTP | 25/TCP | メール送信を受理(実際には送らない) |
| IRC | 6667/TCP | 古いボットがIRC経由でC2通信する場合の偽IRC |
4-3. インストールと起動(Kali Linux / REMnux)
# インストール sudo apt update && sudo apt install -y inetsim # 設定ファイルの編集 sudo nano /etc/inetsim/inetsim.conf # → dns_default_ip を自分のIPに変更(例: 192.168.56.101) # 起動 sudo inetsim # 起動確認 sudo netstat -tulnp | grep inetsim
4-4. INetSimのログの読み方
INetSimは /var/log/inetsim/ にログを残します。たとえば以下のようなエントリが見つかれば、マルウェアが特定ドメインに接続しようとしたことが分かります:
[2025-06-01 10:23:44] DNS - Query: evil-c2-server.example.com (A) [2025-06-01 10:23:44] DNS - Response: 192.168.56.101 [2025-06-01 10:23:45] HTTP - Request: GET /payload.exe HTTP/1.1 Host: evil-c2-server.example.com
このログから「マルウェアが evil-c2-server.example.com に接続して /payload.exe をダウンロードしようとした」という行動が判明します。これが動的解析の核心です。
5. Wireshark ― 通信を丸見えにする
5-1. Wiresharkとは?
Wiresharkは世界で最も使われているオープンソースのパケットアナライザ(ネットワークパケット解析ツール)です。ネットワークインターフェースを流れるデータをリアルタイムでキャプチャし、プロトコルごとに色分けして表示します。
マルウェアが送受信するすべての通信パケットを記録できるため、「どのIPにどんなデータを送ったか」を可視化できます。Wiresharkはwireshark.orgから無料でダウンロードできます。
5-2. Wiresharkの基本的な使い方
- Wiresharkを起動し、キャプチャするネットワークインターフェースを選ぶ(例:eth0)
- 「サメのヒレ」ボタン(▶)でキャプチャ開始
- 解析VMでマルウェアを実行
- スクエアボタン(⏹)でキャプチャ停止
.pcapファイルとして保存(後から再解析可能)
5-3. 解析で役立つフィルター構文
# HTTPリクエストだけを表示 http.request # 特定IPとの通信だけを表示 ip.addr == 192.168.56.101 # DNSクエリのみ dns # TCPポート80(HTTP)またはポート443(HTTPS) tcp.port == 80 || tcp.port == 443 # パケット内容に特定文字列を含む(例:User-Agent) http.user_agent contains "Mozilla" # URIに特定文字列を含む http.request.uri contains ".exe"
5-4. 重要な解析ポイント:TLS通信の復号
最近のマルウェアはHTTPS(TLS暗号化)を使うため、Wiresharkを素で使っても中身が見えません。これに対応するには次の2つの方法があります:
- ① INetSimとの組み合わせ:INetSimが偽の自己署名証明書でTLS接続を終端させるため、INetSimのサーバー側ログを見ればHTTPS通信の内容が分かります。
- ② SSLKEYLOGFILEを使う:ブラウザや一部アプリが出力するTLSセッションキーをWiresharkに読み込ませると、TLS通信をリアルタイム復号できます。Wireshark の Edit → Preferences → Protocols → TLS → (Pre)-Master-Secret log filename に指定。
5-5. pcap解析の自動化:tsharkとzaproxy
Wiresharkのコマンドライン版であるtsharkを使えば、pcapファイルの解析をスクリプト化できます:
# pcapからHTTPリクエストのURLを一覧表示 tshark -r capture.pcap -Y http.request -T fields \ -e http.host -e http.request.uri # DNSクエリ名を一覧表示 tshark -r capture.pcap -Y dns.flags.response==0 \ -T fields -e dns.qry.name | sort -u
6. Burp Suite ― HTTPを深掘りする
6-1. Burp Suiteとは?
Burp SuiteはPortSwigger社が開発したWebアプリケーションセキュリティテストのプラットフォームです。コミュニティ版(無料)と有料のプロフェッショナル版があります(portswigger.net/burp)。
マルウェア解析でBurp Suiteを使う主な理由は「HTTP/HTTPSプロキシ」機能です。マルウェアとWebサーバーの間にBurp Suiteを挟み込み、通信の内容を読み取り・改ざんし・リプレイできます。
6-2. Wireshark vs Burp Suite の使い分け
| 観点 | Wireshark | Burp Suite |
|---|---|---|
| レイヤー | L2〜L7(全パケット) | L7(HTTP/HTTPS専門) |
| TLS復号 | キーログが必要 | プロキシが自動的に復号 |
| 改ざん | 不可 | 可(インターセプト機能) |
| 非HTTPプロトコル | 対応 | 非対応 |
6-3. Burp Suiteのプロキシ設定手順
- Burp Suite を起動 → Proxy → Options でリスニングアドレスとポートを確認(デフォルト:
127.0.0.1:8080) - 解析VM(またはホスト)のブラウザ or マルウェアのHTTPクライアントのプロキシ設定を
127.0.0.1:8080に向ける - HTTPS通信を復号するため、BurpのCA証明書をOSにインストール(Proxy → CA Certificate からDL)
- Proxy → Intercept をONにすれば通信を一時停止して内容を確認・改ざん可能
6-4. マルウェア解析でのBurp Suite活用例
- 📦 C2サーバーへのビーコン(定期接続)の内容確認 ― どんなデータを送っているか(OSバージョン、ホスト名、Walletアドレスなど)
- 🔑 暗号化されたペイロードの分析 ― TLS復号後のJSONやBase64データを観察
- 🔁 レスポンスの改ざん ― C2サーバーからの「次のコマンド」を書き換えてマルウェアの次の行動をコントロール
- 🕵️ HTTPヘッダーの分析 ― User-Agentが正規ソフトのふりをしていないか確認
6-5. Collaboratorを使った帯域外(OOB)通信検出
Burp Suite ProfessionalにはBurp Collaboratorという機能があります。外部のDNS/HTTPサーバーを使って「マルウェアが予期しない外部ホストに問い合わせる」動作(帯域外通信、OOB: Out-of-Band)を検出できます。コミュニティ版では使えませんが、interactsh(OSSのCollaborator代替)が無料で利用可能です。
7. Frida ― 動いているプロセスを内側から見る
7-1. Fridaとは?
Frida(フリーダ)はOleavra AB社のNick Christofidesらが開発したオープンソースの動的計装フレームワーク(Dynamic Instrumentation Framework)です(frida.re)。
「計装(Instrumentation)」とは、動作中のプログラムに外からコードを注入して、関数の呼び出しを傍受したり戻り値を書き換えたりする技術です。Fridaの特徴は:
- ✅ エージェントレス ― ターゲットアプリを再コンパイル不要
- ✅ マルチプラットフォーム ― Windows / macOS / Linux / Android / iOS対応
- ✅ JavaScript API ― スクリプトをJSで書けるため可読性が高い
- ✅ リアルタイム ― 実行中のプロセスにライブでアタッチ可能
7-2. Fridaの仕組み
Fridaは対象プロセスにFridaエージェント(frida-agent)という小さなランタイムをDLL(Windowsの場合)として注入します。このエージェントはV8 JavaScriptエンジンを内蔵しており、Fridaサーバー(解析マシン)から送られるJavaScriptスクリプトを実行します。これにより関数フック・メモリ読み書き・システムコール傍受が可能になります。
【解析者PC / コントロール側】 【ターゲットプロセス(マルウェア)】
frida (CLIツール) frida-agent.dll(注入済み)
↕ TCP / USB ↕
スクリプト (JavaScript) 関数フック・メモリ操作
7-3. インストール
# Python経由でインストール(pip) pip install frida-tools # バージョン確認 frida --version
Windowsの解析VM上でマルウェアをフックする場合は、frida-serverのWindowsビルドをGitHubリリースから取得して管理者権限で起動します。
7-4. 基本的なFridaスクリプト例:関数呼び出しをフック
// hook_messagebox.js
// Windows API の MessageBoxW を傍受し引数を表示する
const user32 = Process.getModuleByName("user32.dll");
const MessageBoxW = user32.getExportByName("MessageBoxW");
Interceptor.attach(MessageBoxW, {
onEnter: function(args) {
console.log("[*] MessageBoxW called!");
console.log(" hWnd : " + args[0]);
console.log(" lpText : " + args[1].readUtf16String());
console.log(" lpCaption: " + args[2].readUtf16String());
},
onLeave: function(retval) {
console.log("[*] MessageBoxW returned: " + retval);
}
});
# 実行(プロセス名でアタッチ) frida -l hook_messagebox.js -n malware.exe
7-5. マルウェア解析でのFrida活用例
- 🔐 暗号化ルーティンの傍受 ―
CryptEncryptやBCryptEncryptをフックして、暗号化前のデータ(平文)を取得 - 🌐 ネットワーク関数の傍受 ―
WSASend/send/WinHttpSendRequestをフックし、送信データを取得 - 🔑 アンチ解析バイパス ―
IsDebuggerPresentの戻り値を常に0(偽)に書き換えることで、デバッガ検出を無効化 - 📝 レジストリ操作の監視 ―
RegSetValueExをフックして持続化(Persistence)のキー名と値を取得 - 📱 Android解析 ― Androidアプリ(APK)の暗号化されたネットワーク通信を内部フックで復号
7-6. FridaとBurp Suiteの相乗効果
マルウェアが独自の暗号化を施した後にHTTPSで送信する場合、Burp SuiteだけではTLSを復号しても中身がまだ暗号化されていることがあります。こういったダブル暗号化のケースでは、FridaでアプリレベルのXOR/AES処理をフックして平文を取得し、それをBurpのレスポンスと照合することで完全な通信内容が把握できます。
8. 5ツールの組み合わせ方・実際の解析フロー
8-1. 全体フローチャート
① 【準備】 └─ VMスナップショットを取得 └─ INetSimを起動(サービスVM) └─ Wiresharkをキャプチャ開始(サービスVM or 解析VM) └─ Burp Suiteのプロキシを起動(解析VM) └─ Fridaエージェントをスタンバイ ② 【静的事前確認】 └─ strings, die(DetectItEasy)でバイナリのヒントを確認 └─ VirusTotalでハッシュチェック ③ 【実行・動的観察フェーズ1:ネットワーク】 └─ マルウェアを実行(解析VM) └─ INetSimログでDNSクエリ・HTTP接続を確認 └─ WiresharkでTCP接続先IP・ポートを確認 └─ Burp SuiteでHTTPヘッダー・Body内容を確認 ④ 【動的観察フェーズ2:内部動作】 └─ FridaをマルウェアプロセスにAuto-Attach └─ 暗号化関数・レジストリ操作・ファイル操作をフック └─ ProcMonで並行してファイル/レジストリ変更を記録 ⑤ 【情報整理・IOC抽出】 └─ DNS/IPをC2 IOCとしてリスト化 └─ HTTPリクエストのユーザーエージェント・パスを記録 └─ Fridaが拾った暗号鍵・平文をメモ ⑥ 【後処理】 └─ VMをスナップショットに戻す └─ IOCをSIEM/EDRに登録 or 共有
8-2. ツールの役割分担早見表
| 知りたいこと | 使うツール |
|---|---|
| マルウェアがどのドメインに接続するか | INetSim(DNSログ)+ Wireshark |
| HTTPSの中身 | Burp Suite(プロキシ復号) |
| 暗号化する前の平文データ | Frida(関数フック) |
| 非HTTP通信(FTP, IRC, DNS over TCP等) | Wireshark + INetSim |
| アンチデバッグ・難読化対策 | Frida(API戻り値の書き換え) |
| 通信先のC2への偽レスポンス | INetSim + Burp Suite(インターセプト改ざん) |
| ホスト全体の安全な隔離 | 仮想環境(VMware / VirtualBox) |
8-3. 実践例:ランサムウェアサンプルの解析シナリオ
シナリオ:不審なPDFに添付されていたEXEファイルを解析する
- INetSim起動。WiresharkキャプチャON。
- EXEを解析VM(Windows 10)で実行。
- INetSimログ:
ransomware-c2.ruへの DNSクエリが連続して記録される。 - Wireshark:ポート443でTLS通信。証明書のSNI(Server Name Indication)フィールドに
ransomware-c2.ruを確認。 - Burp Suite:TLS復号後のBodyにBase64文字列。デコードするとJSONで
{"victim_id":"XXXX","key":"AES_KEY_HERE"}。 - Frida:
BCryptEncryptをフックしてファイル暗号化前のランサムノートのテキストと被害者固有IDを取得。 - 結果:C2ドメイン・暗号化アルゴリズム・送信データ構造・被害者IDの生成ロジックがすべて判明。
8-4. 注意:VM検出(Anti-VM)への対策
高度なマルウェアはVM環境を検出すると挙動を変えたり停止したりします。主な検出手法と回避策を知っておきましょう:
| VM検出手法 | 回避策 |
|---|---|
| VMwareレジストリキーの確認 | レジストリ値を削除・変更 or Fridaでクエリ結果を書き換え |
| CPUID命令でHypervisor Bitを確認 | KVM / Hyper-Vの設定でCPUID結果を隠す |
| NIC MACアドレス(VMwareは特定のOUI) | VirtualBox / VMwareで仮想NICのMACを書き換え |
| マウス動作・画面解像度・ファイル数 | デスクトップに大量のファイルを置き1920×1080に設定 |
| 実行時間(Sleep命令で遅延実行) | FridaでSleepの引数を0に書き換え |
9. 防御策・ブルーチーム視点のまとめ
解析した知見は攻撃者側の理解だけでなく、守る側(ブルーチーム)の施策に直結します。ここではマルウェアの各攻撃フェーズに対応する防御策を整理します。
9-1. IOCの活用
解析で得られたIOC(Indicators of Compromise:侵害の痕跡)は即座に防御に転用します:
- 🌐 C2ドメイン・IPアドレス → ファイアウォール・DNSフィルタ・Proxyのブロックリストに追加
- #️⃣ マルウェアのSHA256ハッシュ → EDR・アンチウイルスのカスタムルールに追加
- 📋 HTTP User-Agentや特徴的なURL → WAFやPROXYのシグネチャに追加
- 📁 ファイルパス・レジストリキー → SIEMの検知ルール(YARA, Sigma)を作成
9-2. ネットワーク防御
- 🔒 DNS Firewalling:マルウェアの多くは最初にDNSを使う。Cisco Umbrella・NextDNS・Pi-holeなどでカテゴリフィルタと悪性ドメインリストを適用
- 🔍 TLS Inspection:エンタープライズ環境では出口プロキシでTLS復号を行い、内部から外向けのHTTPS通信を監視
- 🚧 ゼロトラスト・ネットワーク分割:感染した端末が横展開(ラテラルムーブメント)できないよう、端末ごとに最小権限ネットワークを設定
9-3. エンドポイント防御
- 🛡️ EDR(Endpoint Detection and Response):CrowdStrike / SentinelOne / Microsoft Defenderなどがプロセス・ファイル・レジストリ・ネットワークをリアルタイム監視。FridaやProcMonが解析で見るものをEDRは本番環境で常時監視している
- ⚙️ アプリケーションホワイトリスト:許可されたアプリ以外の実行をブロック(Windows AppLocker / WDAC)
- 🔑 最小権限の原則:一般ユーザーに管理者権限を与えない。マルウェアが管理者権限を持てなければ多くのAPIが使えない
9-4. 人的・組織的防御
- 📧 フィッシング耐性トレーニング:マルウェアの多くはメール経由。定期的なフィッシングシミュレーションで社員の認識を高める
- 🔄 パッチ管理:OSとアプリを常に最新に保つ。マルウェアは既知脆弱性を悪用することが多い
- 💾 3-2-1バックアップ:3つのコピー・2種類のメディア・1つはオフサイト。ランサムウェアへの最終防衛線
- 📢 脅威インテリジェンス共有:ISAC・MISP・OpenCTIなどを通じて業界内でIOCを共有し、同様の攻撃から他組織も守る
9-5. MITRE ATT&CKフレームワークとの紐づけ
解析で観察したマルウェアの挙動は、MITRE ATT&CK(アタック)フレームワークのテクニックIDに対応させると、防御施策の網羅性を評価できます。たとえば:
- DNSを使ったC2通信 → T1071.004 (Application Layer Protocol: DNS)
- レジストリへの自動起動エントリ作成 → T1547.001 (Boot or Logon Autostart Execution: Registry Run Keys)
- プロセスインジェクション → T1055 (Process Injection)
- スリープによる解析回避 → T1497.003 (Virtualization/Sandbox Evasion: Time Based Evasion)
10. まとめ
本記事では、マルウェア動的解析のための5つのツールについて解説しました。最後に全体を整理します。
| ツール | 一言で言うと | 解析における役割 |
|---|---|---|
| 仮想環境 | 隔離された実験室 | ホストPCを守りながら安全に実行 |
| INetSim | 偽のインターネット | C2接続を安全に受け止め・記録 |
| Wireshark | 通信の全録画 | 全プロトコルのパケットを可視化 |
| Burp Suite | HTTP専門の通訳 | HTTPS復号・内容確認・改ざん |
| Frida | 内部スパイ | 関数フックで暗号前データや内部動作を取得 |
これらのツールは単独でも強力ですが、組み合わせることで「外から見えない部分」まで解析できるのが最大の価値です。ネットワーク層(Wireshark+INetSim)・アプリケーション層(Burp Suite)・プロセス内部(Frida)の三層を同時にカバーすることで、高度なマルウェアも解析できるようになります。
✅ 初心者へのアドバイス
- まずはREMnuxの仮想マシンを作り、INetSimとWiresharkだけで始める
- マルウェアサンプルは ANY.RUN(オンラインサンドボックス)でまず挙動を確認し、本格解析は後で
- Fridaはまず自分が作ったサンプルプログラムで練習してから本番投入
- 法律に注意:マルウェアサンプルの取得は MalwareBazaar のような合法的な共有サービスから
サイバーセキュリティの世界は奥が深いですが、こうしたツールの組み合わせを一歩ずつ理解することで、確実にスキルが上がっていきます。ぜひ安全な環境で試してみてください。
参考リソース:
・REMnux公式サイト|
・INetSim公式ドキュメント|
・Wireshark公式ドキュメント|
・Burp Suite公式ドキュメント|
・Frida公式ドキュメント|
・MITRE ATT&CK|
・MalwareBazaar


コメント