PR 本記事には広告(Amazonアソシエイト・もしもアフィリエイト・A8.net等)が含まれます。掲載情報の正確性には努めていますが、商品の詳細は必ずリンク先で最新情報をご確認ください。
CTF・セキュリティ学習

【マルウェア解析入門編】静的・動的解析でサンプルの正体を暴く|CTF思考フレームワーク #48

かも次郎とアンペンが「マルウェア解析」を解説するマスコットイラスト
安全に生きたい編集部

こんにちは、アンペンです!

今回はフォレンジック応用編の第3弾、マルウェア解析入門です。怪しいサンプルファイルを渡された時に、何をするプログラムなのかを静的解析動的解析の2つから明らかにする手法を扱います。

本格的なリバースエンジニアリングまで踏み込まず、まずは『安全に・大づかみに正体を知る』までを整理しましょう。

ここで肩の力を抜くポイント。マルウェア解析というと『プログラムを1行ずつ全部読み解く』ような重労働を想像しがちですが、入門段階ではそこまでやりません。目的は“正体を大づかみにする”こと。『たぶんキーロガーだ』『どこかのサーバに通信しようとしている』——このレベルが分かれば、初動の判断には十分なんです。全部を理解しようとしないのが、むしろコツですよ。

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

実は実行しない静的解析でも結構わかるんだ。文字列・PEヘッダ・YARAルールで大枠が見える。その後で隔離環境で動かす動的解析に進む流れ。

セキュリティの現場では、ある日とつぜん『この怪しいファイル、何をするやつか調べて』と渡されることがあります。でも——いきなりダブルクリックして実行、は厳禁。下手に動かせば、自分のPCごと感染しかねません。そこで登場するのが今回のマルウェア解析です。怪しい荷物を“X線で透視してから、必要なら防護室で開ける”ように、安全に・段階的に正体を暴いていく考え方なんです。

まず結論

マルウェア解析は静的解析(実行しない)→動的解析(隔離環境で動かす)の順で進めるのが基本です。静的では文字列・PE構造・YARAで大づかみ、動的では実際の挙動(ファイル/レジストリ/通信)を観察します。重要なのは隔離されたVM+ネットワーク分離。本番環境では絶対に動かしません。

この記事で分かること

  • 静的解析と動的解析の役割分担
  • 主要ツール(strings/Ghidra/Cuckoo/Remnux等)
  • IOC(Indicator of Compromise)の抽出
  • 解析の前提となる安全な環境構築
難易度:中級向け 所要時間:12分 体験:自作EXEを静的解析 おすすめ:#47の後

📖 はじめてのWebセキュリティ #48|マルウェア解析入門編
静的・動的解析でサンプルの正体を暴く手法を扱います。 シリーズ一覧を見る →

⚠️ 大事なお約束
マルウェアサンプルは扱いを誤ると自分のPCや組織ネットワークを感染させます。必ず隔離VM+ネットワーク分離で扱い、業務PCや本番環境では実行しないでください。法令遵守も忘れずに。

静的解析と動的解析の役割分担

マルウェア解析は『外側から見る』静的解析と、『動かして見る』動的解析の組み合わせです。静的で大枠を掴み、必要に応じて動的で深掘りします。

“外側から見る”静的解析は、たとえるなら封筒を開けずに眺める作業。差出人や消印、透かしを見るだけでも、けっこうな情報が読み取れます。一方の“動かして見る”動的解析は、安全な部屋で実際に封を切ってみる作業。中身が飛び出してくるぶん危険ですが、『本当は何をするのか』がはっきり分かります。まず安全な静的で当たりをつけ、それでも足りなければ動的へ——この順番が鉄則です。

図解:2つのアプローチの比較

それぞれにメリットとデメリットがあり、両方を組み合わせるのが現代の標準的なアプローチです。

なぜわざわざ両方やるのか。それぞれに“盲点”があるからです。静的解析は安全だけど、中身が暗号化(パック)されていると外から読めない。動的解析は確実だけど、マルウェアが『今は解析されてるな』と気づいて、わざと大人しくするフリをすることがある。片方だけでは騙されてしまうので、二つを突き合わせて初めて全体像が見えてくるわけです。

静的解析と動的解析の特徴・手段・弱点を2列カードで比較した図解
図1:静的(実行しない)と動的(隔離環境で動かす)の役割分担
📦 たとえるなら、怪しい荷物の調査

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

怪しい荷物をまずX線で透視し次に隔離室で開封する2段階調査のイラスト
図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は、いわば“解析道具がぜんぶ詰まった工具箱”を、まるごと配ってくれるようなもの。自分でツールを一つずつ集めて設定する手間が省けるので、初心者ほど恩恵が大きいんです。まずはこの既製の環境で『道具の使い方』に慣れて、足りないものが出てきたら少しずつ足していく——この進め方が、いちばん挫折しにくいですよ。

動的解析で観察するファイル操作・レジストリ・プロセス・通信・サンドボックスの5項目を横並びカードで示した図解
図3:動的解析の5観点(ファイル/レジストリ/プロセス/通信/サンドボックス)

CTFでやってみよう:安全に解析する練習

やってみよう / 自分の環境・CTFのみ

自作EXEや無害サンプルで解析の流れを体験する

本物のマルウェアは扱いが難しいので、まずは自作EXEやEICAR テストファイルで手順を体に染み込ませます。

  1. 自分でC言語の小さなEXE(例:ファイルを1つ書くだけ)をビルド
  2. ハッシュ値を取る(sha256sum sample.exe)
  3. filestrings で外形を確認
  4. FLARE VM等の隔離環境で実行し、ProcmonとWiresharkで挙動観察
  5. 挙動から『何をする可能性があるか』をレポート化
本物のマルウェアサンプル(VX Underground / MalwareBazaar等)を扱う場合は、必ず外部ネット遮断+スナップショット復元を前提とした隔離環境を用意してください。業務PC・家族のPCでは絶対に実行しないこと。

ここで視点を“解析する人”から“組織を守る人”へ移しましょう。1本のマルウェアを解析して終わり、ではもったいない。そこで取り出した手がかりを、組織全体の防御に配って初めて、解析は本当の価値を生みます。

守る側の活用:IOCを共有資産にする

解析の最終目的はIOCの抽出と防御への展開です。1度の解析で得たIOCを、SIEM/EDR/Proxy/FW全体で活用しましょう。

IOC運用のベストプラクティス
  • 解析結果を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拍子が、マルウェアと向き合うときの基本姿勢です。

次回はフォレンジック編の総まとめ、タイムライン構築。複数ソースの証拠を統合して、インシデント全体の物語を組み立てる手法を扱います。

次に読みたい記事

参考資料

記事URLをコピーしました