Agent Skills by ALSEL
Anthropic Claudeその他⭐ リポ 0品質スコア 50/100

binary-protection-bypass

ELFバイナリに実装されたASLR、PIE、NX/DEP、スタックカナリア、RELRO、FORTIFY_SOURCE、CET、MTEなどのセキュリティ保護機構を特定し回避するためのプレイブック。エクスプロイトを可能にする目的で、これらの保護を解析・バイパスする際に使用する。

description の原文を見る

>- Binary protection bypass playbook. Use when identifying and bypassing ASLR, PIE, NX/DEP, stack canary, RELRO, FORTIFY_SOURCE, CET, and MTE protections in ELF binaries to enable exploitation.

SKILL.md 本文

SKILL: Binary Protection Bypass — Expert Attack Playbook

AI LOAD INSTRUCTION: バイナリ保護の識別とバイパス技法に関する専門知識。ASLR、PIE、NX、RELRO、canary、FORTIFY_SOURCE、スタッククラッシュ、CET シャドウスタック、および ARM MTE をカバーしています。各保護には、そのバイパス方法と必要なプリミティブが対になっています。ctf-wiki の緩和セクションと実際の悪用から抽出されています。ベースモデルは、どの保護がどの攻撃をブロックするかを混同し、複数の保護の組み合わせ効果を見落とす傾向があります。

0. RELATED ROUTING

  • stack-overflow-and-rop — NX をバイパスするための ROP チェーン、ASLR バイパスのための ret2libc
  • format-string-exploitation — canary、PIE、libc アドレスをリークするための主要手法
  • heap-exploitation — GOT が読み取り専用の場合の RELRO バイパスのためのヒープ攻撃
  • arbitrary-write-to-rce — GOT が RELRO で保護されている場合に上書きする対象

Advanced Reference

包括的な保護 × バイパス × プリミティブ マトリックスについては、PROTECTION_BYPASS_MATRIX.md を読み込んでください。


1. PROTECTION IDENTIFICATION

$ checksec ./binary
[*] '/path/to/binary'
    Arch:     amd64-64-little
    RELRO:    Full RELRO          ← GOT が読み取り専用
    Stack:    Canary found        ← スタックカナリアが有効
    NX:       NX enabled          ← スタックが実行不可
    PIE:      PIE enabled         ← 位置独立コード
    FORTIFY:  Enabled             ← 強化された libc 関数

Quick Identification Table

保護チェックコマンドバイナリインジケータ
ASLRcat /proc/sys/kernel/randomize_va_spaceOS レベル (0=off、1=partial、2=full)
PIEchecksec または readelf -h (Type: DYN)-pie でコンパイルされたバイナリ
NXchecksec または readelf -l (RWE セグメントなし)gcc -z noexecstack (デフォルトで有効)
Canarychecksec または __stack_chk_fail@plt を検索gcc -fstack-protector-all
Partial RELROreadelf -l (GNU_RELRO セグメント、.got.plt が書き込み可能)gcc -Wl,-z,relro
Full RELROreadelf -l + .got セクションが読み取り専用gcc -Wl,-z,relro,-z,now
FORTIFY__printf_chk__memcpy_chk など の存在gcc -D_FORTIFY_SOURCE=2

2. ASLR BYPASS

ASLR は、実行ごとにスタック、ヒープ、libc、および mmap 領域の基本アドレスをランダム化します。

バイパス方法必要なプリミティブ注釈
情報リーク任意の読み取りプリミティブ (フォーマット文字列、OOB 読み取り、UAF)libc/スタック/ヒープアドレスをリーク → 基本を計算
部分的な上書き書き込みプリミティブ (長さ制限)最後の 1〜2 バイトを上書き (ページオフセット固定)
ブルートフォース (32-bit)再接続/再試行能力約 256〜4096 回の試行 (8〜12 ビットのエントロピー)
Return-to-PLTスタックオーバーフローPLT アドレスはバイナリ基本からの固定オフセット (PIE がない場合)
ret2dlresolveスタックオーバーフロー + 書き込みプリミティブlibc 基本を知らずに任意関数を解決
フォーマット文字列リークフォーマット文字列脆弱性%N$p スタック/libc/ヒープアドレス用
スタック読み取りバイト単位 (フォークサーバー)クラッシュオラクルを介してスタックをバイト単位で読み取り

ASLR Entropy (x86-64 Linux)

リージョンエントロピー (ビット)位置
Stack22約 4M
mmap / libc28約 256M
Heap (brk)13約 8K
PIE バイナリ28約 256M

3. PIE BYPASS

PIE (Position Independent Executable) はバイナリ自体のコード/データ基本アドレスをランダム化します。

バイパス方法必要なプリミティブ注釈
情報リークスタックから戻りアドレスを読み取りPIE base = leaked_addr - known_offset
部分的な上書き1 バイトまたは 2 バイト書き込みページオフセットの最後の 12 ビットは固定
フォーマット文字列リークフォーマット文字列脆弱性%N$p (N は .text 戻りアドレスを指す)
相対アドレッシングバイナリレイアウトの知識相対オフセットを知っている場合、1 つのリークだけが必要

Partial Overwrite Details

PIE バイナリがロードされた場所: 0x555555554000 (例)
オフセット 0x1234 の関数: 0x555555555234

戻りアドレスの最後の 2 バイトを上書き: 0x?234 → 0x?XXX
不明な部分: ビット 12-15 (1 ニブル = 4 ビット = 16 の可能性)
成功率: 試行ごとに 1/16

4. NX / DEP BYPASS

NX (No-eXecute) / DEP (Data Execution Prevention) はスタック/ヒープ上のコード実行を防ぎます。

バイパス方法詳細
ROP (Return-Oriented Programming)ret で終わる既存コードガジェットをチェーン
ret2libclibc 関数 (system、execve) を直接呼び出し
ret2csu制御された関数呼び出しのために __libc_csu_init ガジェットを使用
ret2dlresolve動的リンカー構造を偽造して任意関数を解決
SROP偽造されたシグナルフレームからすべてのレジスタを設定するために sigreturn を使用
mprotect ROPmprotect(addr, size, PROT_RWX) をチェーン → ページを実行可能にする → シェルコードにジャンプ
JIT sprayJIT 環境 (V8 など) では、JIT コンパイラを介して実行可能コードを作成

mprotect Chain

# スタックを実行可能にしてからシェルコードにジャンプ
rop = b'A' * offset
rop += p64(pop_rdi) + p64(stack_page)     # ページアラインされたアドレス
rop += p64(pop_rsi) + p64(0x1000)         # サイズ
rop += p64(pop_rdx) + p64(7)              # PROT_READ|PROT_WRITE|PROT_EXEC
rop += p64(mprotect_addr)
rop += p64(shellcode_addr)                 # 今実行可能なスタックのシェルコードにジャンプ

5. RELRO BYPASS

RELRO レベルGOT ステータスバイパス
No RELROGOT が完全に書き込み可能直接 GOT 上書き
Partial RELRO.got.plt が書き込み可能 (遅延バインディング)GOT 上書きが依然として機能
Full RELROすべての GOT エントリがロード時に解決、GOT が読み取り専用GOT に書き込みできない → 他の構造をターゲット

Full RELRO Alternative Targets

ターゲットいつどのように
__malloc_hookglibc < 2.34one_gadget で上書き
__free_hookglibc < 2.34system で上書き、free("/bin/sh") をトリガー
_IO_FILE vtable任意の glibcFSOP / vtable ハイジャック
__exit_funcs任意の glibc終了ハンドラーリストを上書き
TLS_dtor_listglibc ≥ 2.34スレッドローカルデストラクタリスト (ポインタガード必要)
.fini_array書き込み可能な場合デストラクタ関数ポインタを上書き
スタック戻りアドレス直接スタック書き込みROP のための戻りアドレスを上書き

包括的なターゲットリストについては、arbitrary-write-to-rce を参照してください。


6. CANARY BYPASS

方法条件詳細
フォーマット文字列リークprintf(user_input)%N$p でスタックから canary を読み取り
ブルートフォースfork() サーバー (canary は子で永続)バイト単位: 256 × (canary_size-1) 回の試行
スタック読み取り部分的な上書き / 情報リークcanary のヌル バイトを上書き、出力経由でリーク
スレッド canary 上書きオーバーフロー到達 TLSCanary は fs:[0x28]; バッファを超えて TLS へオーバーフロー → canary を既知の値で上書き
Canary 相対的上書きCanary の後だが戻りアドレスの前へのオーバーフローCanary をスキップ、戻りアドレスだけを上書き (レアレイアウト)
ヒープベース脆弱性がスタックではなくヒープ上Canary はスタックのみを保護
__stack_chk_fail GOT 上書きPartial RELRO__stack_chk_fail@GOT を無害な関数へポイント → canary チェック成功

Canary Format

x86:    0x00XXXXXX (4 バイト、先頭ヌルバイト)
x86-64: 0x00XXXXXXXXXXXXXX (8 バイト、先頭ヌルバイト)

先頭の \x00 は、文字列操作が誤って canary を読み取るのを防ぎます。


7. FORTIFY_SOURCE BYPASS

_FORTIFY_SOURCE=2 はバッファサイズチェックを追加し、フォーマット文字列操作を制限します。

強化された関数制限バイパス
__printf_chk%n (位置指定引数 %N$n の場合) が禁止非位置指定 %n または %hn チェーンを使用
__memcpy_chkコピー先バッファサイズがチェック代わりにヒープオーバーフローを使用
__strcpy_chk同上
__read_chk読み取りサイズがバッファに対してチェック

Format String with FORTIFY_SOURCE

# %1$n は __printf_chk によってブロック
# しかし、順序指定なし (非位置指定) %n はまだ機能する可能性:
# 正確なバイト数を出力してから %hn — 非常に正確である必要があります
# または: ROP を介してバイナリ/libc 内の強化されていない printf を検索

8. CET (Control-flow Enforcement Technology)

Intel CET は 2 つのメカニズムを追加します:

Shadow Stack

  • ハードウェアによって管理される戻りアドレスのコピー
  • ret では、CPU はシャドウスタックが実際のスタックと一致することを確認
  • 不一致 → #CP フォルト (制御保護例外)
影響詳細
ROP がブロックret で戻りアドレスの上書きが検出
JOP が可能jmp [reg] はシャドウスタックでチェックされない
COP が可能call [reg] はシャドウスタックにプッシュされるがターゲットは IBT で検証

Indirect Branch Tracking (IBT)

  • 間接 jmp/callENDBR64 命令にランディング必須
  • 非 ENDBR ランディング → #CP フォルト

バイパス:

  • データのみ攻撃 (制御フロー変更なし)
  • 有用な操作にチェーンする有効な ENDBR ガジェットを検索
  • ENDBR プリフィックス付きガジェットでの JOP
  • CFI スコープ外の構造をターゲット (modprobe_path、関数ポインタ配列)

9. MTE (Memory Tagging Extension, ARM)

ARM MTE はメモリポインタと割り当てに 4 ビットタグを割り当てます。タグ不一致 = フォルト。

側面詳細
タグビットポインタ内の 4 ビット (ビット 56-59) = 16 の可能なタグ
グラニュール16 バイト (各 16 バイトグラニュールには 1 つのタグ)
チェックロード/ストア: ポインタタグはメモリタグと一致する必要があります
確率的ランダムタグ → 攻撃者が正しく推測できる確率 1/16

Bypass Approaches

方法成功率
ブルートフォース試行ごとに 1/16 (6.25%)
タグオラクルタグを判定するサイドチャネル (タイミング、エラーメッセージ)
範囲内悪用同じタグ付き領域内に留まる (相対オフセット使用)
タグバイパスガジェットアクセス可能な場合 LDGM/STGM 命令を使用
推測実行Spectre スタイルのタグチェックバイパス

10. DECISION TREE

バイナリ分析: checksec 出力
├── NX が無効?
│   └── スタック/ヒープ上のシェルコード (最も単純なパス)
│
├── NX が有効? (標準的なモダンバイナリ)
│   ├── コード実行が必要 → ROP/ret2libc
│   │
│   ├── Canary が有効?
│   │   ├── フォークサーバー? → バイト単位のブルートフォース
│   │   ├── フォーマット文字列? → %p で canary をリーク
│   │   ├── ヒープの脆弱性? → canary はヒープを保護しない
│   │   └── Partial RELRO? → __stack_chk_fail@GOT を上書き
│   │
│   ├── PIE が有効?
│   │   ├── フォーマット文字列? → .text アドレスをリーク → PIE base
│   │   ├── 部分的な上書き → 最後の 12 ビット固定 (1/16 ブルートフォース)
│   │   └── OOB 読み取り? → コードポインタをリーク
│   │
│   ├── ASLR が有効?
│   │   ├── 情報リーク利用可能 → libc base をリーク
│   │   ├── リークなし → ret2dlresolve または SROP
│   │   ├── 32-bit? → ブルートフォース実行可能 (約 4096 回の試行)
│   │   └── Return-to-PLT (libc base の知識不要な PLT 呼び出し)
│   │
│   ├── RELRO レベル?
│   │   ├── None/Partial → GOT 上書き
│   │   └── Full → 代替ターゲット:
│   │       ├── glibc < 2.34 → __malloc_hook / __free_hook
│   │       ├── glibc ≥ 2.34 → _IO_FILE / exit_funcs / TLS_dtor_list
│   │       ├── .fini_array (書き込み可能な場合)
│   │       └── スタック戻りアドレス
│   │
│   └── FORTIFY_SOURCE?
│       ├── 位置指定 %n をブロック → 順序指定なし %n またはヒープ悪用を使用
│       └── 強化された関数のバッファオーバーフロー → 強化されていないパスを使用
│
├── CET (シャドウスタック)?
│   ├── ROP がブロック → データのみ攻撃または JOP
│   └── ENDBR ガジェットチェーン
│
└── MTE (ARM)?
    ├── 1/16 ブルートフォース
    └── 相対破損のため範囲内に留まる

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
yaklang
リポジトリ
yaklang/hack-skills
ライセンス
MIT
最終更新
不明

Source: https://github.com/yaklang/hack-skills / ライセンス: MIT

関連スキル

汎用その他⭐ リポ 1,982

superfluid

Superfluidプロトコルおよびそのエコシステムに関するナレッジベースです。Superfluidについて情報を検索する際は、ウェブ検索の前にこちらを参照してください。対応キーワード:Superfluid、CFA、GDA、Super App、Super Token、stream、flow rate、real-time balance、pool(member/distributor)、IDA、sentinels、liquidation、TOGA、@sfpro/sdk、semantic money、yellowpaper、whitepaper

by LeoYeAI
汎用その他⭐ リポ 100

civ-finish-quotes

実質的なタスクが真に完了した際に、文明風の儀式的な引用句を追加します。ユーザーやエージェントが機能追加、リファクタリング、分析、設計ドキュメント、プロセス改善、レポート、執筆タスクといった実際の成果物を完成させるときに、明示的な依頼がなくても使用します。短い返信や小さな修正、未完成の作業には適用しません。

by huxiuhan
汎用その他⭐ リポ 1,110

nookplot

Base(Ethereum L2)上のAIエージェント向け分散型調整ネットワークです。エージェントがオンチェーンアイデンティティを登録する、コンテンツを公開する、他のエージェントにメッセージを送る、マーケットプレイスで専門家を雇う、バウンティを投稿・請求する、レピュテーションを構築する、共有プロジェクトで協業する、リサーチチャレンジを解くことでNOOKをマイニングする、キュレーションされたナレッジを備えたスタンドアロンオンチェーンエージェントをデプロイする、またはアグリーメントとリワードで収益を得る場合に利用できます。エージェントネットワーク、エージェント調整、分散型エージェント、NOOKトークン、マイニングチャレンジ、ナレッジバンドル、エージェントレピュテーション、エージェントマーケットプレイス、ERC-2771メタトランザクション、Prepare-Sign-Relay、AgentFactory、またはNookplotが言及された場合にトリガーされます。

by BankrBot
汎用その他⭐ リポ 59

web3-polymarket

Polygon上でのPolymarket予測市場取引統合です。認証機能(L1 EIP-712、L2 HMAC-SHA256、ビルダーヘッダー)、注文発注(GTC/GTD/FOK/FAK、バッチ、ポストオンリー、ハートビート)、市場データ(Gamma API、Data API、オーダーブック、サブグラフ)、WebSocketストリーミング(市場・ユーザー・スポーツチャネル)、CTF操作(分割、統合、償却、ネガティブリスク)、ブリッジ機能(入金、出金、マルチチェーン)、およびガスレスリレイトランザクションに対応しています。AIエージェント、自動マーケットメーカー、予測市場UI、またはPolygraph上のPolymarketと統合するアプリケーション構築時に活用できます。

by elophanto
汎用その他⭐ リポ 52

ethskills

Ethereum、EVM、またはブロックチェーン関連のリクエストに対応します。スマートコントラクト、dApps、ウォレット、DeFiプロトコルの構築、監査、デプロイ、インタラクションに適用されます。Solidityの開発、コントラクトアドレス、トークン規格(ERC-20、ERC-721、ERC-4626など)、Layer 2ネットワーク(Base、Arbitrum、Optimism、zkSync、Polygon)、Uniswap、Aave、Curveなどのプロトコルとの統合をカバーします。ガスコスト、コントラクトのデシマル設定、オラクルセキュリティ、リエントランシー、MEV、ブリッジング、ウォレット管理、オンチェーンデータの取得、本番環境へのデプロイ、プロトコル進化(EIPライフサイクル、フォーク追跡、今後の変更予定)といったトピックを含みます。

by jiayaoqijia
汎用その他⭐ リポ 44

xxyy-trade

このスキルは、ユーザーが「トークン購入」「トークン売却」「トークンスワップ」「暗号資産取引」「取引ステータス確認」「トランザクション照会」「トークンスキャン」「フィード」「チェーン監視」「トークン照会」「トークン詳細」「トークン安全性確認」「ウォレット一覧表示」「マイウォレット」「AIスキャン」「自動スキャン」「ツイートスキャン」「オンボーディング」「IP確認」「IPホワイトリスト」「トークン発行」「自動売却」「損切り」「利益確定」「トレーリングストップ」「保有者」「トップホルダー」「KOLホルダー」などをリクエストした場合、またはSolana/ETH/BSC/BaseチェーンでXXYYを経由した取引について言及した場合に使用します。XXYY Open APIを通じてオンチェーン取引とデータ照会を実現します。

by Jimmy-Holiday
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: yaklang · yaklang/hack-skills · ライセンス: MIT