🦠
概念 #セキュリティ #マルウェア #フォレンジック #リバースエンジニアリング #Ransomware #APT 📚 セキュリティ

マルウェア分析基礎(Malware Analysis)

マルウェアとは

Malicious Software の略。コンピュータやネットワークに害を与えることを目的とするソフトウェアの総称。

マルウェアの理解はセキュリティスペシャリストにとって不可欠。
「何が起きているか」を理解せずに対処することはできない。


マルウェアの分類

動作・目的による分類

種類概要代表例
ウイルス(Virus)他のファイルに寄生して感染を広げる。宿主ファイルが必要Melissa, ILOVEYOU
ワーム(Worm)自己複製してネットワーク上を自律的に拡散。宿主不要WannaCry, Conficker
トロイの木馬(Trojan)正規ソフトを装って侵入。バックドアや盗聴機能を持つEmotet, TrickBot
ランサムウェア(Ransomware)ファイルを暗号化して身代金を要求WannaCry, REvil, LockBit
スパイウェア(Spyware)キーストローク・スクリーンショットなどを窃取Pegasus, FinFisher
ルートキット(Rootkit)OS レベルで自身を隠蔽し、継続的なアクセスを維持ZeroAccess, Necurs
ボットネット(Botnet)複数の感染マシンを C2 サーバーから遠隔操作Mirai, Emotet
アドウェア(Adware)広告を強制表示・クリック詐欺を行う比較的低リスク
ファイルレスマルウェアファイルを書かずメモリ上で動作。検知が難しいPowerShell ベースの攻撃

感染経路

主要な感染経路:

①フィッシングメール
  悪意ある添付ファイル(Office マクロ・PDF・ISO 等)
  または悪意あるリンク(ドライブバイダウンロード)

②脆弱性の悪用
  未パッチの OS・ブラウザ・ライブラリの CVE を突く
  例: WannaCry は MS17-010(EternalBlue)を悪用

③サプライチェーン
  正規ソフトウェアのアップデートに混入
  例: SolarWinds SUNBURST(2020年)

④USB・物理メディア
  Stuxnet(イランの核施設攻撃)はエアギャップをUSBで越えた

⑤RDP・SSH のブルートフォース
  弱い認証情報でリモートデスクトップに侵入

マルウェア分析の2つのアプローチ

静的解析(Static Analysis)

マルウェアを実行せずに分析する。

【基本的な静的解析の手順】

1. ハッシュの確認
   md5sum malware.exe
   sha256sum malware.exe
   → VirusTotal でハッシュを照合(既知のマルウェアか確認)

2. 文字列の抽出
   strings malware.exe | grep -i "http\|password\|cmd\|powershell"
   → URL・IPアドレス・APIコール・エラーメッセージを発見

3. ファイル形式の確認
   file malware.exe          # PEファイル・ELF等の判定
   pestudio malware.exe      # PE ヘッダー・インポート関数の解析

4. インポート関数の確認
   重要なWin32 API:
   - CreateRemoteThread → プロセスインジェクション
   - VirtualAllocEx    → メモリ割り当て(インジェクション前兆)
   - RegSetValueEx     → レジストリ変更(永続化)
   - WinExec / CreateProcess → プロセス実行
   - InternetOpen / HttpSendRequest → ネットワーク通信

動的解析(Dynamic Analysis)

安全な隔離環境でマルウェアを実際に実行し、挙動を観察する。

【動的解析の環境】
  スナップショット機能付きの仮想マシン(VirtualBox / VMware)
  → 分析後にスナップショットに戻す
  ネットワークは隔離(INetSim でインターネットを模倣)
  または Flare-VM(マルウェア分析用のWindows環境)

【観察する項目】
  プロセス:    新たに生成・インジェクションされたプロセス
              ツール: Process Monitor, Process Hacker
  
  ファイル:    新規作成・変更・削除されたファイル
              ツール: Process Monitor のファイルフィルタ
  
  レジストリ:  永続化のための自動起動キーの追加
              ツール: Regshot(実行前後のdiff)
  
  ネットワーク: C2 サーバーとの通信・DNSクエリ
              ツール: Wireshark, Fakenet-NG

マルウェアの主要な技術

永続化(Persistence)

再起動後も生き残るための仕組み。ATT&CK の TA0003 に対応。

Windowsの主要な永続化箇所:
  レジストリ自動起動キー:
    HKCU\Software\Microsoft\Windows\CurrentVersion\Run
    HKLM\Software\Microsoft\Windows\CurrentVersion\Run
  
  スタートアップフォルダ:
    %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup
  
  タスクスケジューラ:
    schtasks /create ...
  
  サービス:
    sc create MaliciousService binpath= "C:\malware.exe"
  
  WMI Event Subscription:
    検知が難しい。パフォーマンスに影響するため稀だが高度な APT が利用

難読化・回避技術

パッキング(Packing):
  本体を圧縮・暗号化して実行時に展開する。静的解析を困難にする。
  UPX が有名だが悪用される。

文字列の暗号化:
  シグネチャ検知を回避するため、C2サーバーのURLを実行時に復号

プロセスハロウイング(Process Hollowing):
  正規プロセスを起動 → メモリ上のコードを悪意あるコードで置き換える
  タスクマネージャーには「explorer.exe」として表示される

タイムストンピング(Timestomping):
  ファイルのタイムスタンプを改ざんしてフォレンジックを妨害

VMサンドボックス検知:
  マウスの動き・レジストリキー・プロセス名でVM環境を検知して動作しない

ランサムウェアの解剖

現代のランサムウェア(RaaS: Ransomware-as-a-Service)の動作フロー。

①初期侵入(フィッシング / RDP)

②偵察(ネットワーク・バックアップ・AD 環境の把握)

③ラテラルムーブメント(ドメイン管理者権限の取得)

④バックアップの削除・無効化(VSS シャドウコピーの削除)

⑤暗号化の実行(全ファイルを AES で暗号化)

⑥身代金要求ノートの配置

⑦二重恐喝(暗号化前にデータを外部サーバーに送信 → 公開脅迫)

バックアップが VSS だけの場合、削除されて復旧不能になる。
オフラインかつエアギャップのバックアップが唯一の保険になる。


メモリフォレンジック

マルウェアがメモリ上にしか存在しない場合(ファイルレス)でも、
メモリダンプから痕跡を発掘できる。

# Volatility 3 を使ったメモリ解析

# 実行中プロセスの一覧
python vol.py -f memory.dmp windows.pslist

# 隠蔽されたプロセスの検出(PSList と PSScan の差分)
python vol.py -f memory.dmp windows.psscan

# ネットワーク接続の確認
python vol.py -f memory.dmp windows.netstat

# プロセスのインジェクション検出
python vol.py -f memory.dmp windows.malfind

# C2 に送信されようとしていた文字列の抽出
python vol.py -f memory.dmp windows.strings --pid 1234

サンドボックス分析

手動分析の前に自動サンドボックスで概要を把握する。

ツール種類特徴
VirusTotalオンライン70以上のエンジンでスキャン。ハッシュ・URL・ファイル
Any.runオンラインインタラクティブな動的解析。リアルタイムで挙動を観察
Cuckoo SandboxOSS自前環境で動的解析。プライベートなサンプルに使用
Joe Sandboxオンライン詳細なレポート生成。商用版は高機能

注意: VirusTotal に提出したファイルは他のユーザーも参照できる可能性がある。
機密性の高いファイル(内部ツール・未公開のマルウェアサンプル等)は慎重に扱う。


IOC(Indicators of Compromise)の収集

マルウェア分析の成果として IOC を整理し、防御側(SIEM・EDR)に適用する。

収集する IOC の種類:
  ネットワーク系:
    C2 サーバーの IP アドレス・ドメイン
    通信先 URL
    ビーコン間隔(一定周期の C2 通信)
  
  ホスト系:
    マルウェアのハッシュ値(MD5・SHA256)
    作成・変更されたファイルパス
    追加されたレジストリキー
    永続化のためのタスクスケジューラ名
    異常なプロセス名・コマンドライン引数

  共有形式:
    STIX / TAXII(標準的な脅威インテリジェンスの共有フォーマット)

APT(Advanced Persistent Threat)

国家支援を受けた高度な攻撃グループ。長期潜伏・高度な TTPs・明確な政治的目的が特徴。

グループ名推定出身代表的な攻撃
APT29 / Cozy Bearロシア(SVR)SolarWinds SUNBURST(2020)
APT28 / Fancy Bearロシア(GRU)DNC ハッキング(2016)
Lazarus Group北朝鮮WannaCry(2017)・金融機関への窃盗
APT41中国スパイ活動とサイバー犯罪の両立
Equation Group米国(NSA)Stuxnet(イラン核施設攻撃)

学習・実践環境

リソース内容
Malware Traffic Analysis(malware-traffic-analysis.net)実際のマルウェア通信の PCAP を用いた演習
VirusTotal GraphIOC 間の関係を可視化
MalwareBazaar(abuse.ch)実際のマルウェアサンプルを安全にダウンロードできるリポジトリ
REMnuxマルウェア分析専用の Linux ディストリビューション
Flare-VMマルウェア分析専用の Windows 環境(FireEye / Mandiant)

参考文献

  • Michael Sikorski & Andrew Honig『Practical Malware Analysis』(No Starch Press, 2012)— マルウェア分析の決定版。静的・動的・コード解析を網羅
  • Michael Ligh et al.『The Art of Memory Forensics』(Wiley, 2014)— メモリフォレンジックの標準テキスト
  • Michael Ligh et al.『Malware Analyst’s Cookbook』(Wiley, 2010)— 具体的なツールと手順のレシピ集
  • CISA Malware Analysis Reports — 実際の脅威アクターのマルウェアに関する米国政府の公式分析レポート(無料)
  • VirusTotal Documentation — IOC の照合・サンドボックス分析の活用方法

出典: Practical Malware Analysis(Sikorski & Honig, 2012)/ The Art of Memory Forensics(Ligh et al., 2014)/ Malware Analyst's Cookbook(Ligh et al., 2010)/ CISA Malware Analysis Reports / VirusTotal Documentation