
Rosemary: Pivoting a livello di kernel cross-platform tramite QUIC. Nessun TUN/TAP. Nessun proxychains. Nessuna impostazione proxy.
Cross-platform kernel-level pivoting platform over QUIC. No TUN/TAP. No proxychains. No proxy settings.
Rosemary intercetta trasparentemente il traffico su host remoti a livello kernel: nessuna impostazione proxy, nessun dispositivo TUN/TAP, nessun proxychains. Gli agenti si riconnettono al server tramite QUIC. Raggiungi l'intera rete remota come se fossi direttamente su di essa.
Esegui il server sulla tua macchina e distribuisci un agente su qualsiasi host remoto. L'agente si riconnette tramite QUIC, il server installa regole di intercettazione a livello kernel per le sottoreti dell'agente, e da quel momento tutto il traffico verso quelle sottoreti, incluso DNS, viene inoltrato trasparentemente attraverso l'agente, nessuna configurazione proxy, nessun dispositivo TUN, nessuna impostazione DNS da cambiare, nessuna modifica alle tue applicazioni.
curl http://192.168.1.50 ───► agent dials 192.168.1.50 and bridges it back
ssh [email protected]
ping 192.168.1.1
Connetti più agenti contemporaneamente e il traffico viene automaticamente instradato verso l'agente che possiede la destinazione.
Agent funziona su tutte le piattaforme sopra. Non è richiesto root lato agente.
Grafico di rete interattivo che mostra gli agenti connessi e le loro relazioni
Informazioni dettagliate sull'agente inclusi OS, hostname, sottoreti e stato della connessione
Estensione del browser per accesso facile e instradamento del traffico attraverso il tunnel
Installazione:
chrome://extensions/extension/ dal repositoryL'icona dell'estensione apparirà nella barra degli strumenti del browser.
Nota: La vista grafico dispone automaticamente gli agenti e visualizza le relazioni delle sottoreti. I bordi tra agenti indicano sottoreti condivise, consentendo la visualizzazione del pivoting multi-hop.
# 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/
Oppure scarica i binari precompilati da Releases.
# Auto-generate a key
sudo rosemary
# Or provide your own
sudo rosemary -key YOUR_BASE64_KEY
Dashboard disponibile su http://server-ip:1024: accedi con la tua chiave.
# 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
Una volta connesso, le sottoreti dell'agente vengono automaticamente instradate attraverso di esso.
# 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 supporta sia la modalità agente outbound che la modalità bind. La modalità bind funziona su host Windows PowerShell legacy. La modalità agente outbound utilizza QUIC e richiede PowerShell 7 su un runtime .NET dove System.Net.Quic e libmsquic sono disponibili.
# 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
Controlla il supporto QUIC prima di utilizzare la modalità outbound di PowerShell:
[type]::GetType('System.Net.Quic.QuicConnection, System.Net.Quic') -ne $null
[System.Net.Quic.QuicConnection]:https://raw.githubusercontent.com/blue0x1/rosemary/HEAD/:IsSupported
Se uno dei due controlli fallisce, utilizza l'agente Windows Go per la modalità outbound o esegui l'agente PowerShell in modalità agent-bind.
rosemary> egress agent-1
[+] Default egress set to agent-1
Tutto il traffico verso IP al di fuori delle sottoreti conosciute degli agenti ora fluisce attraverso agent-1. Il DNS continua a funzionare sia per domini privati che pubblici.
Questa versione sposta gli agenti outbound su trasporto QUIC/UDP, mantiene gli agenti bind su framing TCP criptato, aggiorna l'agente PowerShell per entrambe le modalità e rinfresca l'output della lista CLI con tabelle allineate in modo consistente per agenti, rotte, forward, reverse forward, proxy SOCKS5 e token API.
Note di compatibilità:
Digita help o help <command> all'interno del REPL per dettagli completi.
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
Riferimento API Completo
La documentazione completa degli endpoint con esempi è disponibile su:
http://<server>:1024/docs
Autenticati una volta per ottenere un token, poi usalo per tutte le richieste.
# 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"}'
Endpoint: /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
Livelli di permesso dei token: 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/
Architetture supportate:
amd64 arm64 arm 386amd64 arm64 386amd64 arm64Il server Windows utilizza WinDivert per l'intercettazione dei pacchetti a livello kernel. Prima di compilare:
rosemary/Vengono incorporati nel binario al momento della compilazione.
read / write / adminGNU General Public License v3.0: see LICENSE
blue0x1 (Chokri Hammedi)
Utilizza solo su sistemi di tua proprietà o per cui hai esplicita autorizzazione scritta. L'uso non autorizzato è vietato.
| Category | Capability |
|---|
| Interception | TCP · UDP · ICMP · DNS trasparenti, nessuna configurazione client richiesta |
| Egress | Agente di egress predefinito che instrada tutto il traffico internet attraverso un agente scelto |
| SOCKS5 | Proxy SOCKS5 per agente con autenticazione opzionale username/password |
| Forwards | Forward di porte TCP/UDP · Reverse port forwards (server ascolta, agente chiama) |
| Discovery | Ping · Ping sweep · Scansione porte TCP/UDP tramite agente |
| DNS | Intercetta DNS, risolve tramite agenti, domini privati e pubblici |
| Pivoting | Multi-hop attraverso più agenti (5+ hop testati) |
| Transport | Agenti outbound QUIC/UDP · Agenti bind TCP criptati |
| Dashboard | Interfaccia web con grafico agenti in tempo reale, tabella di routing, visualizzatore log |
| API | API REST completa con autenticazione basata su token (read/write/admin) |
| CLI | REPL interattivo + pannello CLI basato su web |
| Extension | Estensione Chrome per accesso rapido |
| Agents | Modalità background · modalità bind · scoperta automatica sottoreti · rilevamento internet |
| Config | Import/export JSON · rotazione chiavi in tempo reale · configurazione per porta |
| Platform | TCP | UDP | DNS | ICMP | SOCKS5 | Egress |
|---|
| Linux | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Windows | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| macOS | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| FreeBSD | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| OpenBSD | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Crea e gestisci forward di porte TCP/UDP attraverso qualsiasi agente


Visualizza e attiva/disattiva le rotte delle sottoreti con stato in tempo reale

REPL integrato per il controllo completo del server


Streaming eventi in tempo reale con opzioni di filtro ed esportazione

Avvia/ferma proxy SOCKS5 attraverso qualsiasi agente con autenticazione opzionale

Configura porte del server, chiavi di crittografia e token API

Crea e gestisci token API REST con permessi granulari

Azioni rapide: tag, forward, ping, scansione porte, riconnessione, disconnessione

| Parameter | Description |
|---|
-Key | Chiave di crittografia Base64 - deve corrispondere al server |
-Mode | agent (outbound) o agent-bind (inbound) |
-Server | Indirizzo del server host:port - richiesto in modalità agent |
-Listen | Indirizzo di ascolto per la modalità agent-bind (predefinito 0.0.0.0:9001) |
-Background | Riavvia come processo in background nascosto e ritorna immediatamente |
-Verbose | Mostra output diagnostico di connessione e sessione |