
Rosemary: QUICを介したクロスプラットフォームのカーネルレベルピボッティング。TUN/TAP不要。proxychains不要。プロキシ設定不要。
クロスプラットフォームのカーネルレベルピボットプラットフォーム(QUIC 経由)。TUN/TAP 不要。proxychains 不要。プロキシ設定不要。
Rosemary はリモートホスト上のトラフィックをカーネルレベルで透過的に傍受します。プロキシ設定、TUN/TAP デバイス、proxychains は一切不要です。エージェントは QUIC 経由でサーバーに接続します。あたかも直接ネットワークにいるかのように、リモートネットワーク全体に到達できます。
お使いのマシンでサーバーを実行し、任意のリモートホストにエージェントを展開します。エージェントは QUIC 経由で接続し、サーバーはエージェントのサブネットに対するカーネルレベルの傍受ルールをインストールします。以降、DNS を含むそれらのサブネットへのすべてのトラフィックは、プロキシ設定や TUN デバイス、DNS 設定の変更、アプリケーションの変更を一切必要とせず、エージェント経由で透過的に転送されます。
curl http://192.168.1.50 ───► agent dials 192.168.1.50 and bridges it back
ssh [email protected]
ping 192.168.1.1
複数のエージェントを同時に接続すると、トラフィックは宛先を持つエージェントへ自動的にルーティングされます。
エージェントは上記のすべてのプラットフォームで動作します。エージェント側での root 権限は不要です。
接続されているエージェントとその関係性を示すインタラクティブなネットワークグラフ
OS、ホスト名、サブネット、接続ステータスを含む詳細なエージェント情報
トンネル経由の簡単なアクセスとトラフィックルーティングを提供するブラウザ拡張機能
インストール方法:
chrome://extensions/ に移動しますextension/ フォルダを選択します拡張機能のアイコンがブラウザのツールバーに表示されます。
任意のエージェント経由で TCP/UDP ポートフォワードを作成・管理します
注: グラフビューはエージェントを自動レイアウトし、サブネット間の関係を可視化します。エージェント間のエッジは共有サブネットを示し、マルチホップピボットの可視化を可能にします。
# Install via go install
go install github.com/blue0x1/rosemary/rosemary@latest
go install github.com/blue0x1/rosemary/agent@latest # For install agent
# Copy to system path for sudo use
sudo cp ~/go/bin/rosemary /usr/local/bin/
または、Releases からビルド済みバイナリをダウンロードします。
# Auto-generate a key
sudo rosemary
# Or provide your own
sudo rosemary -key YOUR_BASE64_KEY
ダッシュボードは http://server-ip:1024 で利用できます。キーでログインしてください。
# Standard QUIC/UDP mode (agent connects to server)
./agent-linux-amd64 -s server-ip:2048 -k YOUR_KEY
# Background mode
./agent-linux-amd64 -b -s server-ip:2048 -k YOUR_KEY
# Windows
agent-windows-amd64.exe -s server-ip:2048 -k YOUR_KEY
接続されると、エージェントのサブネットは自動的にエージェント経由でルーティングされます。
# On the agent host: agent listens for the server to connect
./agent-linux-amd64 -m agent-bind -l 0.0.0.0:9001 -k YOUR_KEY
# On the server CLI
rosemary> connect agent-ip:9001
Invoke-Rosemary.ps1 はアウトバウンドエージェントモードとバインドモードの両方をサポートします。バインドモードはレガシーな Windows PowerShell ホストで動作します。アウトバウンドエージェントモードは QUIC を使用し、System.Net.Quic と libmsquic が利用可能な .NET ランタイム上で PowerShell 7 を必要とします。
# Import
. .\Invoke-Rosemary.ps1
# Help
Invoke-Rosemary -Help
Invoke-Rosemary -Mode agent -Server 192.168.1.10:2048 -Key YOUR_KEY
Invoke-Rosemary -Mode agent-bind -Listen 0.0.0.0:9001 -Key YOUR_KEY
Invoke-Rosemary -Mode agent -Server 192.168.1.10:2048 -Key YOUR_KEY -Background
Invoke-Rosemary -Mode agent -Server 192.168.1.10:2048 -Key YOUR_KEY -Verbose
PowerShell アウトバウンドモードを使用する前に QUIC サポートを確認してください:
[type]::GetType('System.Net.Quic.QuicConnection, System.Net.Quic') -ne $null
[System.Net.Quic.QuicConnection]:https://raw.githubusercontent.com/blue0x1/rosemary/HEAD/:IsSupported
いずれかのチェックが失敗した場合は、アウトバウンドモードには Go Windows エージェントを使用するか、PowerShell エージェントを agent-bind モードで実行してください。
rosemary> egress agent-1
[+] Default egress set to agent-1
既知のエージェントサブネット外の IP へのすべてのトラフィックは、agent-1 経由で流れます。DNS はプライベート/パブリックドメインの両方で引き続き機能します。
このバージョンでは、アウトバウンドエージェントを QUIC/UDP トランスポートに移行し、バインドエージェントは暗号化 TCP フレーミングのまま維持し、PowerShell エージェントを両モードに対応させ、CLI の一覧出力をエージェント、ルート、フォワード、リバースフォワード、SOCKS5 プロキシ、API トークンについて一貫して整列されたテーブルに更新しました。
互換性に関する注意:
詳細は REPL 内で help または help <command> と入力してください。
agents List all connected agents
disconnect <agent-id|all> Disconnect agent(s)
reconnect <agent-id> Force agent to reconnect
connect <ip:port> Connect to a bind-mode agent
routes Show routing table
routes enable <subnet> Re-enable a disabled route
routes disable <subnet> Disable a route without disconnecting
routes default <agent-id> Set default egress agent
routes default off Clear default egress
egress <agent-id> Alias: set default egress agent
egress none Alias: clear default egress
forward add <local-port> <agent-id> <host> <port> [tcp|udp]
forward del <id>
forwards List active forwards
rforward add <listen-port> <agent-id> <host> <port>
rforward del <id>
rforward list
socks <agent-id> <port> [username] [password]
socks list
socks stop <id>
ping <agent-id> <target> [count]
discover <agent-id> <subnet> [timeout_ms] [workers]
portscan <agent-id> tcp|udp <target> [ports]
settings Show current config
verbose Toggle debug logging
rotate-key Regenerate encryption key
save-config <path> Export config to JSON
load-config <path> Import config from JSON
token list|create|view|revoke Manage API tokens
exit Shutdown
完全な API リファレンス
例を含む完全なエンドポイントドキュメントは、以下で利用できます:
http://<server>:1024/docs
一度認証してトークンを取得したら、その後のすべてのリクエストに使用します。
# Authenticate
curl -X POST http://server:1024/api/v1/auth \
-H "Content-Type: application/json" \
-d '{"key":"YOUR_KEY"}'
# List agents
curl -H "Authorization: Bearer tun_xxx" \
http://server:1024/api/v1/agents
# Port forward
curl -X POST http://server:1024/api/v1/forwards \
-H "Authorization: Bearer tun_xxx" \
-H "Content-Type: application/json" \
-d '{"action":"add","agent_id":"agent-1","local_port":8080,"target_host":"192.168.1.10","target_port":80}'
# SOCKS5 proxy
curl -X POST http://server:1024/api/v1/socks \
-H "Authorization: Bearer tun_xxx" \
-H "Content-Type: application/json" \
-d '{"agent_id":"agent-1","port":1080}'
# Run any CLI command
curl -X POST http://server:1024/api/v1/cli \
-H "Authorization: Bearer tun_xxx" \
-H "Content-Type: application/json" \
-d '{"command":"discover agent-1 10.10.10.0/24"}'
エンドポイント: /api/v1/auth · /api/v1/agents · /api/v1/routes · /api/v1/forwards · /api/v1/rforwards · /api/v1/socks · /api/v1/cli · /api/v1/settings · /api/v1/tokens · /api/v1/shutdown
トークンの権限レベル: read · write · admin
git clone https://github.com/blue0x1/rosemary.git
cd rosemary
# Build all platforms and architectures
bash build.sh
# Build specific target
bash build.sh rosemary linux amd64
bash build.sh agent windows arm64
# Output goes to dist/
対応アーキテクチャ:
amd64 arm64 arm 386amd64 arm64 386amd64 arm64Windows サーバーはカーネルレベルのパケット傍受に WinDivert を使用します。ビルド前に:
rosemary/ ディレクトリに配置しますこれらはビルド時にバイナリに埋め込まれます。
read / write / adminGNU General Public License v3.0: LICENSE を参照
blue0x1 (Chokri Hammedi)
自分が所有するシステム、または明示的な書面によるテスト許可を得たシステムでのみ使用してください。不正使用は禁止されています。
| カテゴリ | 機能 |
|---|
| 傍受 | 透過的 TCP・UDP・ICMP・DNS、クライアント設定不要 |
| Egress(出口) | 選択したエージェントを経由して全インターネットトラフィックをルーティングするデフォルト Egress エージェント |
| SOCKS5 | エージェントごとの SOCKS5 プロキシ(オプションでユーザー名/パスワード認証) |
| フォワード | TCP/UDP ポートフォワード・リバースポートフォワード(サーバーが待ち受け、エージェントが接続) |
| ディスカバリ | Ping・Ping スイープ・エージェント経由の TCP/UDP ポートスキャン |
| DNS | DNS を傍受し、エージェント経由で解決(プライベート/パブリックドメイン) |
| ピボット | 複数エージェントによるマルチホップ(5 ホップ以上でテスト済み) |
| トランスポート | QUIC/UDP アウトバウンドエージェント・暗号化 TCP バインドエージェント |
| ダッシュボード | リアルタイムのエージェントグラフ、ルーティングテーブル、ログビューアを備えた Web UI |
| API | トークンベース認証(read/write/admin)を備えた完全な REST API |
| CLI | インタラクティブ REPL + Web ベースの CLI パネル |
| 拡張機能 | クイックアクセス用 Chrome 拡張機能 |
| エージェント | バックグラウンドモード・バインドモード・自動サブネット検出・インターネット検出 |
| 設定 | JSON インポート/エクスポート・ライブキーローテーション・ポートごとの設定 |
| プラットフォーム | TCP | UDP | DNS | ICMP | SOCKS5 | Egress |
|---|
| Linux | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Windows | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| macOS | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| FreeBSD | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| OpenBSD | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
サブネットルートをリアルタイムステータスで表示・切り替えます

サーバーを完全に制御するための内蔵 REPL


フィルタリングとエクスポートオプションを備えたリアルタイムイベントストリーミング

オプションの認証付きで任意のエージェント経由の SOCKS5 プロキシを開始/停止します

サーバーポート、暗号化キー、API トークンを設定します

細かい権限を持つ REST API トークンを作成・管理します

クイックアクション: タグ付け、フォワード、ping、ポートスキャン、再接続、切断

| パラメーター | 説明 |
|---|
-Key | サーバーと一致する必要がある Base64 暗号化キー |
-Mode | agent(アウトバウンド)または agent-bind(インバウンド) |
-Server | サーバーアドレス host:port - agent モードで必須 |
-Listen | agent-bind モードのバインドアドレス(デフォルト 0.0.0.0:9001) |
-Background | 非表示のバックグラウンドプロセスとして再起動し、すぐに戻る |
-Verbose | 接続とセッションの診断出力を表示 |