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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
Darkcloak — Linuxプロセスアイデンティティ偽装ツール。11フェーズのprctlパイプラインを通じてcomm、argv、cmdline、environ、exeパス、VMAを偽装し、別のプロセスになりすます。 | Kitploit
ツール/GitHubGitHub/0x574r/darkcloak
特権昇格永続化メカニズムIDS/IPS回避なりすましツールポストエクスプロイトバイナリ解析論文と研究レッドチーミングフィンガープリントスプーフィング
GitHub0x574r/darkcloak

Darkcloak

Linuxプロセスアイデンティティ偽装ツール。11フェーズのprctlパイプラインを通じてcomm、argv、cmdline、environ、exeパス、VMAを偽装し、別のプロセスになりすます。

11233ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
リポジトリを見る

DARKCLOAK

NASM Platform Architecture

Linuxプロセスアイデンティティの偽装

DARKCLOAKは、ユーザー空間から可視のすべてのアイデンティティソースの操作を11フェーズの逐次パイプラインに連鎖させ、プロセスを段階的に変換して、ユーザー空間の監視ツールから見てなりすまし対象のプロセスと区別がつかなくなるまで変化させます。私たちの知る限り、ユーザー空間から可視のすべてのアイデンティティソースを同時に操作することを組み合わせた公開ツールは存在しません。

完全な技術解説はRAZORブログで公開されています。

偽装されるもの

  • task_struct->comm: PR_SET_NAME経由
  • argv[0]: スタックへの直接上書き経由
  • コマンドライン (/proc/$PID/cmdline): PR_SET_MM_ARG_START/END経由
  • 環境変数 (/proc/$PID/environ): PR_SET_MM_ENV_START/END経由
  • 実行ファイルパス (/proc/$PID/exe): PR_SET_MM_EXE_FILE経由
  • ファイルにバックアップされたVMA (/proc/$PID/maps): 匿名メモリに置き換え
  • プロセス名前空間の可視性: unshare経由

仕組み

パイプラインは、操作対象となるカーネルサブシステム間の依存関係によって定義された厳密な順序で実行されます:

  1. ELFイントロスペクション: _startで補助ベクタを解析してPHTを解決し、3つのPT_LOADセグメントすべての仮想アドレス範囲を取得
  2. 資格情報の読み取り: getresuid / getresgidで元のUIDとGIDを保存し、後で復元
  3. UID昇格: 3つのUIDのいずれかが0の場合、setresuid(0,0,0)
  4. ケイパビリティ昇格: capget/capset経由でpermittedセットをeffectiveおよびinheritableセットにコピー
  5. アイデンティティ偽装:
    • prctl(PR_SET_NAME) → task_struct->commを上書き
    • [rsp+8]への直接スタック書き込み → argv[0]を上書き
    • prctl(PR_SET_DUMPABLE, 0) → 非特権プロセスからの/proc/$PID/memアクセスとをブロック

mmapトランポリン

PR_SET_MM_EXE_FILEは、いずれかのVMAがまだ元のバイナリにバックアップされている間はEBUSYで失敗します。RIPが.textセグメント内にある間はそれをアンマップできないため、匿名化は一時的な匿名ページから実行されます:

  1. 4096バイトの匿名ページを割り当てる (mmap)
  2. 匿名化コード (mm_start→mm_end) とセグメントメタデータをそこにコピー
  3. ページを実行可能にする (mprotect)
  4. そこにジャンプ: RIPが.textを離れる
  5. 3つのPT_LOADセグメントそれぞれについて: 新しい匿名領域をmmap → セグメント内容をmemcpy → 元の領域をmunmap → 匿名コピーを元のアドレスにmremapで戻す → 元のパーミッションを復元するためmprotect
  6. 今や匿名となった.textに戻り、トランポリンページをアンマップ

このバイナリはインタプリタを持たない静的ELFであるため、実行時のVMAレイアウトは完全に決定論的です: 3つのPT_LOADセグメント、スタック、カーネルvDSOです。

ビルド

root@kitploit:~
nasm -f elf64 darkcloak.asm -o darkcloak.o
ld darkcloak.o -o darkcloak

設定

偽装対象はコンパイル時に.dataセクションで定義されます。デフォルトではsshdになりすまします:

root@kitploit:~
mimic_name    db 'sshd', 0
mimic_argv    db './sshd', 0
mimic_exe     db '/usr/sbin/sshd', 0
mimic_cmdline db '/usr/sbin/sshd', 0, '-D', 0, '[email protected]', 0, ...
mimic_environ db 'LANG=en_US.UTF-8', 0, 'NOTIFY_SOCKET=/run/systemd/notify', 0, ...

別のプロセスになりすますには、ビルド前にこれらの値を更新してください。

使用方法

root@kitploit:~
./darkcloak

permittedセットにCAP_SYS_RESOURCE、CAP_SETUID、CAP_SETGID、CAP_SETPCAPが必要です。CAP_SYS_RESOURCEがない場合、MM偽装ブロック (VMA匿名化 + EXE_FILEスワップ) は完全にスキップされます。CAP_SETPCAPがない場合、ツールはPR_SET_SECUREBITSからPR_SET_KEEPCAPSにフォールバックします。

検証

root@kitploit:~
./darkcloak &
PID=$!

cat /proc/$PID/comm
readlink /proc/$PID/exe
cat /proc/$PID/cmdline | tr '\0' ' '
cat /proc/$PID/environ | tr '\0' '\n' | head -3
cat /proc/$PID/maps | head -5
cat /proc/$PID/status | grep -E 'Uid|Gid|Cap'
ps aux | grep $PID

免責事項

教育および研究目的のみで公開されています。自身が所有するシステム、またはテストに対する明示的な書面による許可を得たシステムでのみ使用してください。

ツールをダウンロード
ptrace(PTRACE_ATTACH)
  • mmapトランポリン経由のVMA匿名化 (下記参照) → ファイルにバックアップされたすべてのマッピングを削除
  • prctl(PR_SET_MM_ARG_START/END) → /proc/$PID/cmdlineをリダイレクト
  • prctl(PR_SET_MM_ENV_START/END) → /proc/$PID/environをリダイレクト
  • prctl(PR_SET_MM_EXE_FILE) → mm_struct->exe_fileを置き換え
  • ケイパビリティ保持: UIDドロップを生き延びるため、PR_SET_SECUREBITS (CAP_SETPCAPがある場合) またはPR_SET_KEEPCAPS (フォールバック)
  • UID降格: setresuid(1000,1000,1000)または元の値を復元
  • GID降格: setresgid(1000,1000,1000)または元の値を復元
  • ケイパビリティ降格: effectiveおよびinheritableセットをクリア
  • 名前空間分離: unshare(CLONE_NEWUSER | CLONE_NEWPID | CLONE_NEWNET | CLONE_NEWIPC)
  • 保持: nanosleep(120s)の後exit