マルウェア解析入門YARA/Sigma【2026年版】

EDR・アンチウイルス

※本記事にはアフィリエイトリンクが含まれます。詳しくはプライバシーポリシー・広告掲載についてをご覧ください。

【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形式)は、インポートテーブル・エクスポートテーブル・セクション情報を解析することで機能の概要がわかります。pesievepefile(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/rulesMandiant 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フレームワークとのマッピングも充実しており、脅威ハンティングの出発点として最適です。詳細は関連記事:フィッシング攻撃の最新手口と対策も参照してください。

マルウェア解析フロー:実践的な手順書

  1. 隔離: 感染端末・サンプルファイルをネットワークから切り離す
  2. ハッシュ計算 + VirusTotal照合: 既知マルウェアか即時判定
  3. 静的解析: strings・pefileでIPアドレス・URL・APIコールを抽出
  4. サンドボックス投入: ANY.RUN等で自動挙動レポート取得
  5. 動的解析(必要に応じて): VMでProcmon・Wireshark監視下で実行
  6. YARAルール作成: 発見した特徴でシグネチャを作成し横展開スキャン
  7. Sigmaルール作成: SIEMに同様の挙動を検知するルールを登録
  8. レポート作成: IOC(IPアドレス・ドメイン・ファイルハッシュ)をチームで共有

参考リソース

✅ おすすめのセキュリティソフト

※ アフィリエイトリンクを含みます。料金・詳細は各公式サイトでご確認ください。

まとめ

  • マルウェア解析は静的解析→動的解析の順で進める。まずhash + VirusTotalで素早くトリアージ
  • pefileでインポートテーブルを確認し、危険なAPIコール(プロセスインジェクション・暗号化・C2通信系)を把握
  • 動的解析は必ず隔離VM環境で。Procmon・Wiresharkで挙動を記録
  • YARAルールでシグネチャを作成し、環境内の他端末に横展開スキャンをかける
  • SigmaルールをSIEMに登録して同様の挙動を継続検知する体制を構築
  • 発見したIOCはチームで即座に共有し、ブロックリストに追加する

マルウェア解析のスキルはCSIRT・SOCエンジニアに不可欠です。まずはVirusTotalとANY.RUNの無料プランから試してみてください。

📋 無料配布:AIセキュリティ対策チェックリスト

中小企業・個人向け。今すぐできる30項目のセキュリティ確認リストを無料配布中。

無料でチェックリストを受け取る →

おすすめセキュリティ対策ツール

マルウェア解析と合わせて、エンドポイント保護の導入も強くお勧めします。

  • — 軽量で誤検知が少ない。マルウェア検知率の高さで定評
  • ウイルスバスター — 日本語サポートが充実。中小企業の導入実績多数
  • — 世界最大手。マルウェア防御とVPN機能を含む総合対策

※ 上記はアフィリエイトリンクです。料金・機能は各公式サイトで必ずご確認ください。

コメント

タイトルとURLをコピーしました