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

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

【マルウェア解析入門編】静的・動的解析でサンプルの正体を暴く|CTF思考フレームワーク #48 アイキャッチ画像
安全に生きたい編集部

広告・PRを含みます。この記事にはアフィリエイトリンクが含まれます。掲載内容は編集方針に基づいて作成していますが、価格・在庫・キャンペーン内容はリンク先で最新情報を確認してください。

マルウェア解析って、ハッカーが書いたコードを読むの…?難しそう🐛

難しいですが、最初は『静的解析』から。実行せずファイルを観察するだけで、文字列・API呼び出し・パッカーの種類が分かります。次は『動的解析』でサンドボックスで動かして挙動を見る。この2軸が基本です。

マルウェア解析は、捕獲したマルウェア検体の正体と挙動を明らかにする技術。静的解析(strings・PEview・IDA Pro・Ghidra)で構造を読み、動的解析(Process Monitor・WireShark・Cuckoo Sandbox)で挙動を観察。最終的にYARA・Sigma ルールを作って類似マルウェアを検知できるようにします。

リバースエンジニアリング、思ったより手順があるんだ…

この記事は、CTF思考フレームワーク第48回。マルウェア解析の入門編。静的解析・動的解析の基本フローと、Ghidra・Cuckoo・YARA・Sigma の実践テクニック、初心者向けの安全な解析環境構築を整理します。

📖 この記事はシリーズの一部です
CTF思考フレームワーク#48 / 全86記事 → シリーズ一覧を見る →

🦠 マルウェア解析は「敵の道具を分解する」工学。静的解析でファイル構造・文字列・APIを眺め、動的解析でサンドボックス内の振る舞いを観察する。両輪で初めて全体像が見えます。

CTFのMalware Analysisも実務IRも、出発点は同じ「安全な隔離環境」の確保。インターネット遮断・スナップショット復元・ホスト保護を前提に、サンプルの目的と通信先を解明します。

難易度:★★★(上級)

静的・動的解析でサンプルの正体を暴きます🔬

マルウェア解析は「触らずに見る(静的)」と「動かして見る(動的)」の二刀流が基本だよ🔬

この記事で出てくる言葉

先に意味を押さえておくと読みやすい用語です。

  • CTF: セキュリティの練習問題を解く競技。必ず許可された環境だけで試します。
  • マルウェア: 情報を盗む、端末を壊す、勝手に操作するなど悪意あるソフトの総称です。
  • DNS: ドメイン名をIPアドレスに変換するインターネットの住所録です。
  • 権限昇格: 一般ユーザーから管理者権限など、より強い権限を得ることです。
  • 横展開: 侵入後に別の端末やサーバーへ移動して被害範囲を広げる動きです。

👀 観察フェーズ:まず何を見る?

まず分離したサンドボックスを用意!本番PC・本番ネットに繋がない、ホストにスナップショット🔍

まず外形から。ファイル種別・サイズ・ハッシュ・既知判定(VirusTotalハッシュ検索)を確認。次にPEヘッダ・インポートテーブル・文字列・パッカ判定。

静的の入り口: PE-bear / Detect It Easy / strings / floss。動的の入り口: Process Monitor / Wireshark / Sysmon / Cuckoo👀

解析環境ってバレないようにするのが大変なんだね…仮想化検知もマルウェアは結構やってくる😨

  • SHA-256・MD5でVT既知判定
  • pestudio / PE-bear でPEヘッダ
  • strings + Floss(難読化文字列復元)
  • インポートDLL/API(WinHttpOpen / CryptEncrypt 等)
  • DiE (Detect It Easy) でパッカ判定
  • YARAルールでファミリ識別

マルウェア解析の典型ステップは4段

🤔 仮説フェーズ:攻撃者は何を考える?

🔬 仮説①:トリアージ(三角測量)

ハッシュをVT/MalwareBazaarで照合→既知ファミリかチェック。新規なら本格解析へ。

📜 仮説②:静的解析

PEヘッダ・インポート関数・文字列・パッカー検出。アンパック後にflossで隠れ文字列を抽出。

🧪 仮説③:動的解析

サンドボックスで実行→レジストリ書込・ファイル生成・通信先・APIコール列を観察。

🧠 仮説④:ディスアセンブル

Ghidra/IDAで重要ルーチンを読む。暗号鍵抽出やC2プロトコル復元はここで。

🕶️ マルウェア作者は「サンドボックスを検出して動作を変える」「アンチデバッグ」「難読化」で解析を阻みます。逆に解析者は「マウス動作シミュレーション」「VM artifacts偽装」「パッカ展開」で動かして観察。サンプルが何を盗み、どこに送るかを最短ルートで特定するのがゴール。

マルウェア解析は「観察→仮説→実行→読解」のループなんだね💡

🔬 検証フェーズ:どうやって確かめる?

入門はflare-vmで解析環境を整え、Practical Malware Analysisの題材で学ぶのが王道🧪

解析環境はホストPCと完全分離。ネットワークはINetSimでフェイク応答、Wiresharkでpcap取得、procmonでファイル/レジストリ操作、Process Hackerで子プロセス監視。

Anti-VM・Anti-Debug対策がされてると仮想機検知でスリープに入るから発見が遅れるんだね😱

# 静的:strings + Floss
floss sample.exe > strings.txt

# YARA走査
yara -r rules/ sample.exe

# 動的:FLAREVM / REMnuxで
procmon  # ファイル・レジストリ
Wireshark + INetSim  # 通信
ProcExplorer / Process Hacker  # プロセスツリー

# サンドボックス
any.run / Cuckoo / Joe Sandbox

マルウェアが見せる典型挙動トップ3

⚔️ 攻撃フェーズ:実際の手口

① ペイロードのアンパック

実行時にメモリで自己解凍するパッカー(UPX/Themida)。動的に走らせて中身を取り出す。

② 永続化&権限昇格

スケジューラ/レジストリRun/サービスに登録する挙動を捕捉し、ファミリ識別。

③ C2との初通信

ハードコーディングされたIP/ドメイン、DGA、設定情報の送出を捕まえてIOC化。

マルウェアの典型挙動:①永続化(Run / scheduled task / WMI)、②C2通信(HTTP/HTTPS/DNS/IRC)、③横展開(SMB列挙)、④暗号化+身代金、⑤情報窃取(資格情報・ブラウザ)。

# 動的解析チェックリスト
# 1. ファイル作成(procmon FileSystem)
# 2. レジストリ Run / RunOnce
# 3. プロセス子・孫
# 4. ネットワーク(DNS問合せ・HTTP・TLS SNI)
# 5. CryptEncrypt系 API呼び出し(ランサム判定)

C2サーバが落ちていると挙動が変わるので、INetSimで「常にHTTP 200を返す」設定にすると本来の動作が見えます。これは「スプーフィング解析」の基本テク🎯

マルウェア解析を活かす3点!🛡️

🛡️ 防御フェーズ:どう守る?

🧪 サンドボックス自動化(Cuckoo/CAPE)

届いたサンプルを自動解析パイプラインに流して、IOC自動生成。社内SOCで活用。

🔍 Threat Intel共有

MalwareBazaar・MISP・VTで業界横断のIOC共有。1組織だけで戦わない。

🛡️ EDR+振る舞い検知

解析結果から作ったSigmaルール/YARAをEDRに展開して全社で同じ攻撃を検知。

「1検体の解析が10000台の防御になる」のがマルウェア解析の価値💪

IRでは「IoC抽出 → 全社サーチ → 封じ込め」の流れ。サンプルから抽出したハッシュ・C2ドメイン・ミューテックス名・ファイル名をSIEMやEDRに即投入。

  • YARAルールを業務EDRに即時配布
  • C2ドメイン・IPをDNSシンクホール
  • ミューテックス名で他端末感染を一斉検出
  • プロキシでC2通信遮断(ファイアウォール出口で)
  • メールゲートウェイで配信ベクター(添付・URL)封鎖
  • バックアップから復元できる体制(3-2-1ルール)

🛡️ 今日からできる対策ツール

フォレンジックと同じくらい大事なのが「そもそも侵入されない」こと。🛡️ ソースネクストのセキュリティツールなら、買い切りで使えるタイプも多いので、「サブスク疲れ」している人に人気です。

PR / 広告

ソースネクスト

※ 上記は他社サービスへのリンクです。購入は各自でご判断ください。

⚠️ よくある落とし穴

  1. 解析環境のスナップショット復元を忘れて環境汚染
  2. インターネット直結のままサンプル実行→C2に「感染確認」を送ってしまう
  3. パッカ展開を忘れてエントリポイントの逆アセンブリで挫折
  4. 32bit / 64bit / .NET の違いを誤認してデバッガが効かない
  5. VBA / JavaScript / PowerShellのテキスト系マルウェアを軽視
  6. C2が即停止する短命サーバ前提の挙動を「動かない」と判断

🧰 ツール早見表

ツール用途備考
Ghidra / IDA Free逆アセンブリ・逆コンパイルGhidraは無料の決定版
x64dbgWindowsデバッガGUI親しみやすい
Floss難読化文字列復元FireEye製
CAPA振る舞い能力検出rule-basedで読みやすい
REMnux / FLAREVM解析ディストリ環境構築の手間ゼロ

🎓 本気で学びたい人へ

インシデントレスポンスやフォレンジックを職業として目指したい方へ。🎓 ササエルはインフラとセキュリティの両輪で学べるスクールです。

PR / 広告

ササエル

📚 もっと深く学びたい人へ

実際に手を動かして攻撃手法を体で覚えたいなら『7日間でハッキングをはじめる本 TryHackMe』がおすすめ📚

📚 次に読みたい

✍️ 学んだことを発信する

検証記録やレポートをオンラインでまとめるなら、ConoHa WINGのWordPressが手軽で便利です。

PR / 広告

ConoHa WING

⚖️ 大事なお約束

必ず守ってね

この記事の手法は、必ず自分の環境か、許可されたCTF・脆弱性報奨金プログラム(HackerOne、Bugcrowd等)で試してください。他人のサービスに無断で攻撃を仕掛けるのは不正アクセス禁止法違反、立派な犯罪です。学んだ知識は守る側で活かしましょう🤝

記事URLをコピーしました