【マルウェア解析入門編】静的・動的解析でサンプルの正体を暴く|CTF思考フレームワーク #48
こんにちは、アンペンです!
今回はフォレンジック応用編の第3弾、マルウェア解析入門です。怪しいサンプルファイルを渡された時に、何をするプログラムなのかを静的解析と動的解析の2つから明らかにする手法を扱います。
本格的なリバースエンジニアリングまで踏み込まず、まずは『安全に・大づかみに正体を知る』までを整理しましょう。
ここで肩の力を抜くポイント。マルウェア解析というと『プログラムを1行ずつ全部読み解く』ような重労働を想像しがちですが、入門段階ではそこまでやりません。目的は“正体を大づかみにする”こと。『たぶんキーロガーだ』『どこかのサーバに通信しようとしている』——このレベルが分かれば、初動の判断には十分なんです。全部を理解しようとしないのが、むしろコツですよ。

マルウェア解析って、実行しないと中身分かんないんじゃないの?

実は実行しない静的解析でも結構わかるんだ。文字列・PEヘッダ・YARAルールで大枠が見える。その後で隔離環境で動かす動的解析に進む流れ。
セキュリティの現場では、ある日とつぜん『この怪しいファイル、何をするやつか調べて』と渡されることがあります。でも——いきなりダブルクリックして実行、は厳禁。下手に動かせば、自分のPCごと感染しかねません。そこで登場するのが今回のマルウェア解析です。怪しい荷物を“X線で透視してから、必要なら防護室で開ける”ように、安全に・段階的に正体を暴いていく考え方なんです。
マルウェア解析は静的解析(実行しない)→動的解析(隔離環境で動かす)の順で進めるのが基本です。静的では文字列・PE構造・YARAで大づかみ、動的では実際の挙動(ファイル/レジストリ/通信)を観察します。重要なのは隔離されたVM+ネットワーク分離。本番環境では絶対に動かしません。
この記事で分かること
- 静的解析と動的解析の役割分担
- 主要ツール(strings/Ghidra/Cuckoo/Remnux等)
- IOC(Indicator of Compromise)の抽出
- 解析の前提となる安全な環境構築
📖 はじめてのWebセキュリティ #48|マルウェア解析入門編
静的・動的解析でサンプルの正体を暴く手法を扱います。 シリーズ一覧を見る →
⚠️ 大事なお約束
マルウェアサンプルは扱いを誤ると自分のPCや組織ネットワークを感染させます。必ず隔離VM+ネットワーク分離で扱い、業務PCや本番環境では実行しないでください。法令遵守も忘れずに。
静的解析と動的解析の役割分担
マルウェア解析は『外側から見る』静的解析と、『動かして見る』動的解析の組み合わせです。静的で大枠を掴み、必要に応じて動的で深掘りします。
“外側から見る”静的解析は、たとえるなら封筒を開けずに眺める作業。差出人や消印、透かしを見るだけでも、けっこうな情報が読み取れます。一方の“動かして見る”動的解析は、安全な部屋で実際に封を切ってみる作業。中身が飛び出してくるぶん危険ですが、『本当は何をするのか』がはっきり分かります。まず安全な静的で当たりをつけ、それでも足りなければ動的へ——この順番が鉄則です。
図解:2つのアプローチの比較
それぞれにメリットとデメリットがあり、両方を組み合わせるのが現代の標準的なアプローチです。
なぜわざわざ両方やるのか。それぞれに“盲点”があるからです。静的解析は安全だけど、中身が暗号化(パック)されていると外から読めない。動的解析は確実だけど、マルウェアが『今は解析されてるな』と気づいて、わざと大人しくするフリをすることがある。片方だけでは騙されてしまうので、二つを突き合わせて初めて全体像が見えてくるわけです。

不審な郵便物を調べるとき、まずは外箱を観察したり、X線で透視したりしますよね(=静的)。それで分からなければ、安全な部屋に持ち込んで、防護服を着て開封します(=動的)。マルウェア解析もまったく同じ流れで、いきなり開けるのではなく、安全に・段階的に進めます。

ここで覚える用語:IOC(Indicator of Compromise)
『侵害の痕跡情報』のことです。マルウェアサンプルから抽出したハッシュ値・C2サーバのIP/ドメイン・ファイル名・レジストリキー・通信パターンなどを指します。EDRやSIEMにIOCを登録すれば、同じマルウェアの他端末への侵入を素早く検出できます。
静的解析:実行せずに正体を絞り込む
最低限おさえたい5つの手順
- ハッシュ算出+VirusTotal/MalwareBazaar照会:既知ファミリならここで判別終了
- file / TrID:形式と圧縮/パッカーの判別(UPX等)
- strings:URL/ドメイン/エラーメッセージ等の手がかり
- PE/ELF構造:インポート関数(WinAPI)・セクション・エントリポイント
- YARA / capa:既知パターンや能力(キーロガー等)の自動判定
本格的に逆アセンブルする場合はGhidra / IDA Free / Binary Ninjaあたりが定番ツールになります。CTFでは最初の3つ(ハッシュ・file・strings)だけで解ける問題も多いです。
実際にCTFをやってみると、拍子抜けするくらい簡単に解ける問題も少なくありません。『ハッシュをVirusTotalに投げたら一発で名前が出た』『stringsしたらフラグがそのまま埋まっていた』なんてこともよくあります。だからこそ、いきなりGhidraで逆アセンブル…と気負わず、まずは軽い3手(ハッシュ・file・strings)から。重い道具は、それで歯が立たないときの“次の一手”くらいに構えておけば十分です。
動的解析:隔離環境で挙動を観察
動的解析は実際にマルウェアを動かして挙動を記録します。事故防止のため、環境構築が9割の作業になります。
『環境構築が9割』——これは大げさではありません。動的解析は、いわば猛獣を檻に入れて観察する作業。檻(隔離VM)に穴が一つでもあれば、マルウェアはそこから逃げ出して、あなたの本番ネットワークに襲いかかります。だから、外部ネットの遮断・スナップショットからの巻き戻し・業務PCと混ぜない、の3点は“面倒でも必ず”。ここを横着すると、解析する側が一転して被害者になってしまうんです。
動的解析の典型的な観察項目
- ファイル操作:どこに何を作るか / 削除するか(Procmon)
- レジストリ操作:永続化キー追加など(Regshot)
- プロセス挙動:子プロセス生成 / インジェクション(Process Hacker)
- ネットワーク通信:C2宛先・通信内容(Wireshark / INetSim)
- サンドボックス:自動でレポート化(Cuckoo / ANY.RUN / Hybrid Analysis)
初心者はREMnux(Linux解析用ディストロ)+FLARE VM(Windows解析用)を組み合わせるのがおすすめです。両方とも解析ツールが入った無料の仮想環境テンプレートです。
REMnuxやFLARE VMは、いわば“解析道具がぜんぶ詰まった工具箱”を、まるごと配ってくれるようなもの。自分でツールを一つずつ集めて設定する手間が省けるので、初心者ほど恩恵が大きいんです。まずはこの既製の環境で『道具の使い方』に慣れて、足りないものが出てきたら少しずつ足していく——この進め方が、いちばん挫折しにくいですよ。

CTFでやってみよう:安全に解析する練習
自作EXEや無害サンプルで解析の流れを体験する
本物のマルウェアは扱いが難しいので、まずは自作EXEやEICAR テストファイルで手順を体に染み込ませます。
- 自分でC言語の小さなEXE(例:ファイルを1つ書くだけ)をビルド
- ハッシュ値を取る(
sha256sum sample.exe) fileとstringsで外形を確認- FLARE VM等の隔離環境で実行し、ProcmonとWiresharkで挙動観察
- 挙動から『何をする可能性があるか』をレポート化
ここで視点を“解析する人”から“組織を守る人”へ移しましょう。1本のマルウェアを解析して終わり、ではもったいない。そこで取り出した手がかりを、組織全体の防御に配って初めて、解析は本当の価値を生みます。
守る側の活用:IOCを共有資産にする
解析の最終目的はIOCの抽出と防御への展開です。1度の解析で得たIOCを、SIEM/EDR/Proxy/FW全体で活用しましょう。
- 解析結果をSTIX/MISP形式で構造化して共有
- SIEMにIOCをフィードして類似感染の早期検出
- Proxy/FWにC2ドメイン/IPの遮断を即時投入
- EDRにファイルハッシュ/レジストリ/挙動のルールを追加
- 業界ISAC/JPCERT等と共有(自社環境を超えた防御の輪)

X線で透視してから開封するのと同じだね。順序大事。

そう。次回はフォレンジック編の総まとめ、タイムライン構築。複数ソースをマージして事件全体を組み立てる方法だよ。
ここまでをひと言で言うと、マルウェア解析は『安全第一で、外から内へ』。封を開けずに分かることは静的で済ませ、どうしても動かす必要があるときだけ、頑丈な檻の中で。そして得た手がかり(IOC)を仲間に配る。この“順番と出口”さえ押さえれば、入門としては上出来です。
まとめ:『静的→動的→IOC』が王道
- マルウェア解析は静的→動的の順
- 静的はハッシュ/file/strings/PE構造/YARA
- 動的は隔離環境+Procmon/Regshot/Wireshark
- 解析の出口はIOC抽出→組織防御へ展開
今日の持ち帰りは『怪しいファイルは、いきなり開けない』。まずは外側から、ハッシュとstringsで当たりをつける。動かすのは、逃げ場のない隔離環境を整えてから。そして分かったことは自分の中に留めず、IOCとして共有する。この3拍子が、マルウェアと向き合うときの基本姿勢です。
次回はフォレンジック編の総まとめ、タイムライン構築。複数ソースの証拠を統合して、インシデント全体の物語を組み立てる手法を扱います。
