mcpField
C
ctf-malware

ctf-malware

github.com/ljagielloセキュリティ3.6k8.8k 回インストール2 日前に更新
リポジトリ

ctf-malware について

ctf-malwareは、スクリプト、バイナリ、メモリ、ネットワークキャプチャを調べる参加者向けのマルウェア分析CTFリファレンススキルです。要点に加え、詳しいノートと任意のMCPサーバー活用情報を備えています。

主な機能

  1. 01スクリプトの難読化解除
  2. 02PE・.NETマルウェア分析
  3. 03C2プロトコルとPCAP分析
  4. 04YARAルールとシェルコード分析
  5. 05メモリフォレンジックの案内

活用シーン

  1. 01難読化されたJavaScriptやPowerShellのデコード
  2. 02バイナリからのマルウェア設定抽出
  3. 03パケットキャプチャ内のC2通信調査

MCP 対応

READMEでは、IDA Pro MCP、Ghidra MCP、WinDbg MCP、JADX MCPを任意のツールとして挙げ、アンパック、設定抽出、動的デバッグ、Androidマルウェア分析に利用できるとしています。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/ljagiello/ctf-skills --skill ctf-malware

インストール後、Claude Code で/ctf-malwareを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

c2-and-protocols.md
pe-and-dotnet.md
scripts-and-obfuscation.md
tools-mcp.md

詳細

CTF マルウェアとネットワークの解析

マルウェア解析系CTFチャレンジのクイックリファレンスです。各手法の概要をここに一行で記載しています。コードを含む詳細については、関連ファイルを参照してください。

前提条件

Python パッケージ(全プラットフォーム):

pip install yara-python pefile capstone oletools unicorn pycryptodome \
  volatility3 dissect.cobaltstrike

Linux(apt):

apt install strace ltrace tshark binwalk binutils

macOS(Homebrew):

brew install wireshark binwalk binutils ghidra

手動インストール:

  • dnSpy — GitHub、.NET デコンパイラー(Windows)

MCP サーバー(任意): IDA Pro MCP / Ghidra MCP(アンパッキング、設定の抽出)、動的解析用の WinDbg MCP(svnscha/mcp-windbg)、Android 用の JADX MCP — tools-mcp.md を参照してください。マルウェアは、隔離された使い捨ての VM 内でのみ実行してください。

追加リソース

  • scripts-and-obfuscation.md - JavaScript の難読化解除、PowerShell の解析、eval/base64 のデコード、ジャンクコードの検出、16 進数ペイロード、Debian パッケージの解析、動的解析の手法(strace/ltrace、ネットワーク監視、メモリからの文字列抽出、自動サンドボックス実行)、マルウェア検出用 YARA ルール、シェルコード解析(Unicorn Engine、Capstone)、マルウェアのメモリフォレンジック(Volatility 3 malfind、プロセスインジェクション検出)、解析対策技術(VM 検出、タイミング回避、API ハッシュ化、プロセスインジェクション)、独自アルファベットによる C2 デコードを用いたトロイの木馬化プラグインの解析
  • c2-and-protocols.md - C2 通信パターン、独自暗号プロトコル、RC4 WebSocket、DNS ベースの C2、ネットワーク指標、PCAP 解析、AES-CBC、暗号化 ID、Telegram ボットの復旧、Poison Ivy RAT の Camellia 復号
  • pe-and-dotnet.md - PE 解析(peframe、pe-sieve、pestudio)、.NET 解析(dnSpy、AsmResolver)、LimeRAT の抽出、サンドボックス回避、マルウェア設定の抽出、PyInstaller+PyArmor
  • tools-mcp.md - マルウェア解析向けの MCP サーバー連携:アンパッキングと設定/復号器の抽出用 IDA/Ghidra MCP、動的デバッグ用 WinDbg MCP(RWX 領域の探索、メモリ内 C2 文字列、実行中の VirtualAlloc/CreateRemoteThread ブレークポイント、パッカーを回避するための .writemem によるペイロードのダンプ)、Android マルウェア用 JADX MCP — 疑似コードを優先し、隔離 VM の安全性に関する注意事項も記載

ピボットするタイミング

  • サンプルが実際には通常の crackme、パックされたチャレンジバイナリ、またはマルウェアの挙動を伴わない独自 VM にすぎない場合は、/ctf-reverse に切り替えてください。
  • 主な作業がネットワークの再構築、ディスクカービング、またはホストの痕跡の復元である場合は、/ctf-forensics に切り替えてください。
  • チャレンジが公開情報に基づくアトリビューションやインフラの追跡に発展した場合は、/ctf-osint に切り替えてください。

クイックスタートコマンド

# Static analysis
file suspicious_file
strings -n 8 suspicious_file | head -50
xxd suspicious_file | head -20

# PE analysis
python3 -c "import pefile; pe=pefile.PE('mal.exe'); print(pe.dump_info())" | head
peframe mal.exe

# Dynamic analysis (sandboxed!)
strace -f -s 200 ./suspicious 2>&1 | head -100
ltrace ./suspicious 2>&1 | head -50

# Network indicators
strings suspicious_file | grep -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'
strings suspicious_file | grep -iE 'http|ftp|ws://'

# YARA scan
yara -r rules.yar suspicious_file

難読化されたスクリプト

  • eval/bash を echo に置き換えて、元のコードを出力します。base64/16 進数のデータを抽出し、file で解析してください。scripts-and-obfuscation.md を参照してください。

JavaScript と PowerShell の難読化解除

  • JS:eval を console.log に置き換え、unescape()、atob()、String.fromCharCode() をデコードします。
  • PowerShell:-enc の base64 をデコードし、IEX を出力に置き換えます。scripts-and-obfuscation.md を参照してください。

ジャンクコードの検出

  • NOP スレッド、push/pop の組み合わせ、デッドライト、次の命令への無条件ジャンプを探します。実際の call ターゲットを抽出するためにフィルタリングしてください。scripts-and-obfuscation.md を参照してください。

PCAP とネットワークの解析

tshark -r file.pcap -Y "tcp.stream eq X" -T fields -e tcp.payload

通常とは異なるポート上の C2 を探します。strings | grep で IP/ドメインを抽出してください。c2-and-protocols.md を参照してください。

独自暗号プロトコル

  • ストリーム暗号では双方向でキーストリームの状態を共有するため、すべてのペイロードを時系列順に連結してください。
  • ChaCha20 のキーストリーム抽出:ヌルバイトを送信します(0 XOR 任意の値 = その値)。c2-and-protocols.md を参照してください。

C2 通信パターン

  • ビーコニング、DGA、DNS トンネリング、独自ヘッダーを使う HTTP(S)、エンコードされたペイロード。c2-and-protocols.md を参照してください。

RC4 暗号化 WebSocket C2

  • tcprewrite でポートを再割り当てし、TLS 復号用の RSA キーを追加して、バイナリ内の RC4 キーを探します。c2-and-protocols.md を参照してください。

暗号化アルゴリズムの特定

  • AES:0x637c777b Sボックス。ChaCha20:expand 32-byte k。TEA/XTEA:0x9E3779B9。RC4:Sボックスを逐次初期化します。c2-and-protocols.mdを参照してください。

マルウェアにおけるAES-CBC

  • 鍵にはハードコードされた文字列のMD5/SHA256を使用し、IVには暗号文の先頭16バイトを使用します。c2-and-protocols.mdを参照してください。

PE解析

peframe malware.exe      # Quick triage
pe-sieve                 # Runtime analysis
pestudio                 # Static analysis (Windows)

pe-and-dotnet.mdを参照してください。

.NETマルウェア解析

  • dnSpy/ILSpyで逆コンパイルし、プログラムによる解析にはAsmResolverを使用します。LimeRAT C2:MD5から導出した鍵を使うAES-256-ECB。pe-and-dotnet.mdを参照してください。

マルウェアの設定抽出

  • .dataセクション、PE/.NETリソース、レジストリキー、暗号化された設定ファイルを確認します。pe-and-dotnet.mdを参照してください。

サンドボックス回避の確認

  • VM検出、デバッガー検出、タイミングチェック、環境チェック、解析ツール検出。pe-and-dotnet.mdを参照してください。

解析妨害技術

VM検出(CPUID、MACプレフィックス、レジストリ、ディスクサイズ)、タイミング回避(sleep/RDTSCによるサンドボックス検出)、APIハッシュ化(ROR13/DJB2/CRC32とhashdb検索)、プロセスインジェクション(ホロウイング、APC、CreateRemoteThread)、環境チェック。scripts-and-obfuscation.mdを参照してください。

トロイの木馬化されたプラグインの解析

悪意のあるプラグインと公式リリースを差分比較し、try/exceptブロックに挿入されたコードを見つけます。カスタムアルファベットのローテーション(C[(C.index(ch) - offset) % len(C)])でC2ドメインをデコードし、XORでエンドポイントのパスをデコードします。scripts-and-obfuscation.mdを参照してください。

PyInstaller + PyArmorのアンパック

  • 抽出にはpyinstxtractor.pyを、保護されたコードにはPyArmor-Unpackerを使用します。pe-and-dotnet.mdを参照してください。

Telegramボットの証拠復旧

  • マルウェアのソースからボットトークンを取得し、getUpdatesおよびgetFile APIを呼び出します。c2-and-protocols.mdを参照してください。

Debianパッケージの解析

ar -x package.deb && tar -xf control.tar.xz  # Check postinst scripts

scripts-and-obfuscation.mdを参照してください。

マルウェア検出用YARAルール

ファイルやメモリダンプに対して、バイトパターン、文字列、正規表現を照合するYARAルールを記述します。XORループ({31 ?? 80 ?? ?? 4? 75})、base64ブロブ、エンコードされたPowerShellを検出します。スキャンを高速化するにはyaracでコンパイルします。scripts-and-obfuscation.mdを参照してください。

シェルコード解析

objdump -b binary -m i386:x86-64で逆アセンブルし、Unicorn Engineでエミュレート(システムコールを安全にフック)するか、プログラムによる逆アセンブルにはCapstoneを使用します。XORデコーダースタブを探します。scripts-and-obfuscation.mdを参照してください。

マルウェアのメモリフォレンジック

vol windows.malfindは、マップされたファイルのない注入コード(PAGE_EXECUTE_READWRITE)を検出します。windows.pstreeは、不審な親子関係を明らかにします。windows.vadyarascan.VadYaraScanでメモリをYARAスキャンします。scripts-and-obfuscation.mdを参照してください。

ネットワーク指標クイックリファレンス

strings malware | grep -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'
tshark -r capture.pcap -Y "dns.qry.name" -T fields -e dns.qry.name | sort -u

コメント