Skip to content
KitploitKITPLOIT
ツールブログ
Log in
提出
ツールブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
TripleCross — バックドア、C2、ライブラリインジェクション、実行ハイジャック、永続化、ステルス機能を備えたLinux eBPFルートキット | Kitploit
ツール/GitHubGitHub/h3xduck/triplecross
特権昇格永続化メカニズムコマンド&コントロール学習と教育
GitHubh3xduck/triplecross

TripleCross

バックドア、C2、ライブラリインジェクション、実行ハイジャック、永続化、ステルス機能を備えたLinux eBPFルートキット

リポジトリを見る
2.0k243183年前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有

TripleCross

License GitHub release (latest by date including pre-releases) Maintainability GitHub last commit

TripleCross は、eBPF テクノロジーの攻撃能力を示す Linux eBPF ルートキットです。

TripleCross は、この分野の以前のインプラント設計、特に DEFCON 27 の Jeff Dileo1、DEFCON 29 の Pat Hogan2、同じく DEFCON 29 の Guillaume Fournier と Sylvain Afchain3、そして Kris Nóva の Boopkit4 の研究に触発されています。これらの eBPF テクノロジーの攻撃能力に関する先駆的な探求により開拓された技法の一部を再利用し、拡張しています。

このルートキットは、UC3M での学士論文のために作成されました。設計の詳細については、論文ドキュメント を参照してください。

免責事項

このルートキットは 純粋に教育および学術目的 です。ソフトウェアは「現状のまま」提供され、著者は使用中に発生する可能性のあるいかなる損害や事故についても責任を負いません。

TripleCross を法律違反に使用しないでください。提供されたソフトウェアおよび情報の誤用は、刑事告訴につながる可能性があります。

目次

  1. 特徴
  2. TripleCross の概要
  3. ビルドとインストール
  4. ライブラリインジェクションモジュール
  5. バックドアと C2
  6. 実行ハイジャックモジュール
  7. ルートキットの永続性
  8. ルートキットのステルス性
  9. ライセンス

特徴

  1. プロセスの仮想メモリに書き込むことで悪意のあるコードを実行する ライブラリインジェクション モジュール。
  2. カーネルに渡されるデータを変更して悪意のあるプログラムを実行する 実行ハイジャック モジュール。
  3. 悪意のあるプログラムを root 権限で実行できるようにする ローカル権限昇格 モジュール。
  4. ネットワークを監視し、リモートのルートキットクライアントから送信されたコマンドを実行できる C2 機能付きバックドア。これらのアクションをステルス的に送信するための複数の起動トリガーが組み込まれています。
  5. 攻撃者が 3 種類のシェル風接続を確立してルートキットの状態をリモートで制御するコマンドやアクションを送信できる ルートキットクライアント。
  6. 再起動後でもルートキットがインストールされたまま完全な権限を維持することを保証する 永続性 モジュール。
  7. ルートキット関連のファイルやディレクトリをユーザーから隠す ステルス モジュール。

TripleCross の概要

次の図は、TripleCross のアーキテクチャとそのモジュールを示しています。

ルートキットの通信に使用される Raw ソケットライブラリ RawTCP_Lib は私の著作であり、独自のリポジトリ があります。

次の表は、主要なソースコードファイルとディレクトリを説明し、ナビゲーションを容易にします。

ディレクトリ説明
docs元の論文ドキュメント
src/clientルートキットクライアントのソースコード
src/client/libRawTCP_Lib 共有ライブラリ
src/commonルートキットの定数と設定。リングバッファなど、ルートキットの eBPF 側とユーザースペース側に共通の要素の実装も含む
src/ebpfルートキットが使用する eBPF プログラムのソースコード
src/helpersいくつかのルートキットモジュールの機能をテストするためのプログラム、および実行ハイジャックモジュールとライブラリインジェクションモジュールでそれぞれ使用される悪意のあるプログラムとライブラリを含む
src/libbpfルートキットに統合された libbpf ライブラリ
src/userルートキットが使用するユーザーランドプログラムのソースコード
src/vmlinuxカーネルデータ構造の定義を含むヘッダー(これは libbpf を使用する場合の推奨方法)

ビルドとインストール

要件

この研究プロジェクトは、以下の環境でテストされています。

ディストリビューションカーネルGCCCLANGGLIBC
バージョンUbuntu 21.045.11.010.3.012.0.02.33

Ubuntu 21.04 を使用することを推奨します。デフォルトでここに示すソフトウェアバージョンが組み込まれます。そうでない場合、発生する可能性のある問題の一部はこちらで説明されています。

コンパイル

ルートキットのソースコードは、2 つの Makefile を使用してコンパイルされます。```

Build rootkit

cd src make all

Build rootkit client

cd client make

以下の表は、各 Makefile の目的を詳細に説明しています:

| MAKEFILE  | COMMAND | 説明 | 生成されるファイル |
| ------------- | ------------- | ------------- | ------------- |
| src/client/Makefile  | make  | ルートキットクライアントのコンパイル | src/client/injector |
| src/Makefile  | make help  | ルートキット機能をテストするためのプログラム、および実行ハイジャックモジュールとライブラリインジェクションモジュールの悪意のあるプログラムとライブラリのコンパイル(それぞれ) | src/helpers/simple_timer, src/helpers/simple_open, src/helpers/simple_execve, src/helpers/lib_injection.so, src/helpers/execve_hijack |
| src/Makefile | make kit | libbpf ライブラリを使用したルートキットのコンパイル | src/bin/kit |
| src/Makefile | make tckit | ルートキット TC 出力プログラムのコンパイル | src/bin/tc.o |

### インストール
ルートキットファイルが src/bin/ に生成されたら、*tc.o* と *kit* プログラムを順にロードする必要があります。以下の例では、ルートキットのバックドアがネットワークインターフェース *enp0s3* で動作します:```
// TC egress program
sudo tc qdisc add dev enp0s3 clsact
sudo tc filter add dev enp0s3 egress bpf direct-action obj bin/tc.o sec classifier/egress
// Libbpf-powered rootkit
sudo ./bin/kit -t enp0s3

攻撃シナリオスクリプト

攻撃者が実際の攻撃シナリオで行うように、ルートキットを自動的にコンパイルしてインストールする2つのスクリプト、packager.sh と deployer.sh があります。

  • packager.sh を実行すると、apps/ ディレクトリ以下にすべてのルートキットファイルが生成されます。

  • deployer.sh を実行すると、ルートキットがインストールされ、永続化ファイルが作成されます。

これらのスクリプトは、永続化モジュールが正しく機能するために、以下のパラメータを最初に設定する必要があります。

スクリプト定数説明
src/helpers/deployer.shCRON_PERSIST再起動後に実行するCronジョブ
src/helpers/deployer.shSUDO_PERSISTパスワードなしで特権を付与するSudoエントリ

ライブラリインジェクションモジュール

ルートキットは、sys_timerfd_settime または sys_openat システムコールを呼び出すプロセスの実行を乗っ取ることができます。これは、呼び出しを行っているプロセスの仮想メモリにあるGlobal Offset Table(GOT)セクションを上書きすることで実現されます。これにより、悪意のあるライブラリ(src/helpers/injection_lib.c)が実行されます。このライブラリは攻撃マシンにリバースシェルを起動し、その後、プロセスをクラッシュさせることなく実行フローを元の関数に戻します。

TripleCrossは、以下の一般的なELFハードニング技術をバイパスするように準備されています。

  • ASLR
  • Stack canaries
  • DEP/NX
  • PIE
  • Full RELRO

また、Intel CET互換のコードでも動作するよう準備されています。

モジュールの機能は、2つのテストプログラム src/helpers/simple_timer.c と src/helpers/simple_open.c を使用して確認できます。あるいは、任意のシステムプロセスを乗っ取ることも可能です(systemdでテスト済み、動作確認済み)。

モジュールの設定は、以下の定数によって行われます。

ファイル名定数説明
src/common/constants.hTASK_COMM_NAME_INJECTION_
TARGET_TIMERFD_SETTIME
sys_timerfd_settime システムコールでハイジャックするプロセス名
src/common/constants.hTASK_COMM_NAME_INJECTION_
TARGET_OPEN
sys_openat システムコールでハイジャックするプロセス名
src/helpers/injection_lib.cATTACKER_IP & ATTACKER_PORT攻撃マシンのIPアドレスとポート

攻撃マシンからのリバースシェルを受信するには、netcatを使用します:``` nc -nlvp <ATTACKER_PORT>

### GOTハイジャック技術によるライブラリ注入
TripleCrossに組み込まれているこの技術は、5つの段階で構成されています。

#### GOTとリターンアドレスの特定
ルートキットは、トレースポイントプログラムを使用してシステムコールをフックします。そこから、PLTスタブがシステムコールを担当するglibc関数を呼び出すために使用したGOTセクションのアドレスを特定します。

GOTセクションに到達するために、eBPFプログラムはスタックに保存されたリターンアドレスを使用します。注意点は以下の通りです。
* .textは.pltを*call*するため、*rip*が*ret*としてスタックに保存されます。
* .pltは.gotを使用してglibcに*jump*するため、他の*rip*は保存されません。また、*rbp*の値を変更または保存しません。
* Glibcは*syscall*を実行しますが、*rip*をスタックに保存せず、*rcx*に保存します。

<img src="https://assets.kitploit.com/production/public/readmes/5614/d216fa5b7b656bb52587027db28f3e3902fa8389d0b2944a1f7e870d6d2e6bee.jpg" float="left">

したがって、スタック上のアドレスが、eBPFからフックしたシステムコールを実行するglibc関数にジャンプするGOTアドレスを使用するPLTスタブのリターンアドレスであるかどうかを確認するには、それが正しいGOTに導くリターンアドレスであることを確認する必要があります。

リターンアドレスを見つけるための2つの手法が組み込まれています。
* sys_timerfd_settimeを使用する場合、eBPFプログラムはシステムコールの引数を使用して前方にスキャンします。
* sys_openatを使用する場合、eBPFプログラムはトレースポイントの*pt_regs*構造体のデータを使用してリターンアドレスをスキャンします。

<img src="https://assets.kitploit.com/production/public/readmes/5614/61217fb3fd84bec65cbbee906dd27860e5e1c211912cfe450ea4cf9051fa480b.png" float="left">

#### シェルコードのための主要関数の特定
シェルコードは、ASLRやPIEをバイパスするために動的に生成する必要があります。これらはプログラム実行のたびにdlopen()などの関数のアドレスを変更します。

<img src="https://assets.kitploit.com/production/public/readmes/5614/6cbb620495d8cb9711e499fd5b1ae9ea845c03d0c33019cf008b456a95d5ddd6.png" float="left">

Footnotes

  1. J. Dileo. Evil eBPF: Practical Abuses of an In-Kernel Bytecode Runtime. DEFCON 27. スライド ↩

  2. P. Hogan. Warping Reality: Creating and Countering the Next Generation of Linux Rootkits using eBPF. DEFCON 27. プレゼンテーション ↩

  3. G. Fournier and S. Afchain. eBPF, I thought we were friends! DEFCON 29. スライド ↩

  4. Kris Nóva. Boopkit. github ↩

ツールをダウンロード