
Rosemary: Pivoting a nivel de kernel multiplataforma sobre QUIC. Sin TUN/TAP. Sin proxychains. Sin configuración de proxy.
Plataforma de pivoteo a nivel de kernel multiplataforma sobre QUIC. Sin TUN/TAP. Sin proxychains. Sin configuración de proxy.
Rosemary intercepta de forma transparente el tráfico en hosts remotos a nivel de kernel: sin configuración de proxy, sin dispositivos TUN/TAP, sin proxychains. Los agentes se conectan de vuelta al servidor mediante QUIC. Llegas a toda la red remota como si estuvieras directamente en ella.
Ejecuta el servidor en tu máquina y despliega un agente en cualquier host remoto. El agente se conecta de vuelta mediante QUIC, el servidor instala reglas de interceptación a nivel de kernel para las subredes del agente, y a partir de ese momento todo el tráfico hacia esas subredes, incluido DNS, se reenvía de forma transparente a través del agente, sin configuración de proxy, sin dispositivo TUN, sin cambios en la configuración de DNS, sin cambios en tus aplicaciones.
curl http://192.168.1.50 ───► agent dials 192.168.1.50 and bridges it back
ssh [email protected]
ping 192.168.1.1
Conecta varios agentes a la vez y el tráfico se enruta automáticamente al agente que posee el destino.
Agente se ejecuta en todas las plataformas anteriores. No se requiere root en el lado del agente.
Gráfico de red interactivo que muestra los agentes conectados y sus relaciones
Información detallada del agente, incluidos SO, hostname, subredes y estado de conexión
Extensión de navegador para acceso fácil y enrutamiento de tráfico a través del túnel
Instalación:
chrome://extensions/extension/ del repositorioEl icono de la extensión aparecerá en la barra de herramientas de tu navegador.
Nota: La vista de gráfico distribuye automáticamente los agentes y visualiza las relaciones de subred. Las aristas entre agentes indican subredes compartidas, lo que permite la visualización del pivoteo de múltiples saltos.
# 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/
O descarga los binarios precompilados desde Releases.
# Auto-generate a key
sudo rosemary
# Or provide your own
sudo rosemary -key YOUR_BASE64_KEY
Panel disponible en http://server-ip:1024: inicia sesión con tu clave.
# 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 vez conectado, las subredes del agente se enrutan automáticamente a través de él.
# 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 admite tanto el modo de agente saliente como el modo bind. El modo bind funciona en hosts de Windows PowerShell heredados. El modo de agente saliente usa QUIC y requiere PowerShell 7 en un runtime .NET donde System.Net.Quic y libmsquic estén disponibles.
# 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
Verifica el soporte de QUIC antes de usar el modo saliente de PowerShell:
[type]::GetType('System.Net.Quic.QuicConnection, System.Net.Quic') -ne $null
[System.Net.Quic.QuicConnection]:https://raw.githubusercontent.com/blue0x1/rosemary/HEAD/:IsSupported
Si alguna de las comprobaciones falla, usa el agente Go de Windows para el modo saliente o ejecuta el agente PowerShell en modo agent-bind.
rosemary> egress agent-1
[+] Default egress set to agent-1
Todo el tráfico a IPs fuera de las subredes conocidas del agente ahora fluye a través de agent-1. DNS continúa funcionando para dominios tanto privados como públicos.
Esta versión migra los agentes salientes al transporte QUIC/UDP, mantiene los agentes bind en tramas TCP cifradas, actualiza el agente PowerShell para ambos modos y renueva la salida de la lista de CLI con tablas consistentemente alineadas para agentes, rutas, reenvíos, reenvíos inversos, proxies SOCKS5 y tokens de API.
Notas de compatibilidad:
Escribe help o help <command> dentro del REPL para obtener todos los detalles.
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
Referencia completa de la API
La documentación completa de endpoints con ejemplos está disponible en:
http://<server>:1024/docs
Autentícate una vez para obtener un token y luego úsalo para todas las solicitudes.
# 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"}'
Endpoints: /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
Niveles de permiso de 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/
Arquitecturas soportadas:
amd64 arm64 arm 386amd64 arm64 386amd64 arm64El servidor de Windows usa WinDivert para la interceptación de paquetes a nivel de kernel. Antes de compilar:
rosemary/Se incrustan en el binario en el momento de la compilación.
read / write / adminGNU General Public License v3.0: consulta LICENSE
blue0x1 (Chokri Hammedi)
Úsalo solo en sistemas que sean tuyos o sobre los que tengas permiso explícito por escrito para realizar pruebas. El uso no autorizado está prohibido.
| Categoría | Capacidad |
|---|
| Interceptación | TCP · UDP · ICMP · DNS transparentes, sin configuración de cliente requerida |
| Egress | El agente de egress predeterminado enruta todo el tráfico de Internet a través de un agente elegido |
| SOCKS5 | Proxy SOCKS5 por agente con autenticación opcional de usuario/contraseña |
| Reenvíos | Reenvíos de puertos TCP/UDP · Reenvíos de puertos inversos (el servidor escucha, el agente llama) |
| Descubrimiento | Ping · Barrido de ping · Escaneo de puertos TCP/UDP mediante agente |
| DNS | Intercepta DNS, resuelve a través de agentes, dominios privados y públicos |
| Pivoteo | Múltiples saltos a través de varios agentes (probado con 5+ saltos) |
| Transporte | Agentes salientes QUIC/UDP · agentes bind de TCP cifrado |
| Panel | Interfaz web con gráfico de agentes en tiempo real, tabla de enrutamiento, visor de registros |
| API | API REST completa con autenticación basada en tokens (read/write/admin) |
| CLI | REPL interactivo + panel CLI basado en web |
| Extensión | Extensión de Chrome para acceso rápido |
| Agentes | Modo background · modo bind · descubrimiento automático de subredes · detección de Internet |
| Config | Importación/exportación JSON · rotación de claves en vivo · configuración por puerto |
| Plataforma | TCP | UDP | DNS | ICMP | SOCKS5 | Egress |
|---|
| Linux | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Windows | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| macOS | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| FreeBSD | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| OpenBSD | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Crea y gestiona reenvíos de puertos TCP/UDP a través de cualquier agente


Visualiza y alterna rutas de subred con estado en tiempo real

REPL integrado para el control completo del servidor


Transmisión de eventos en tiempo real con opciones de filtrado y exportación

Inicia/detiene proxies SOCKS5 a través de cualquier agente con autenticación opcional

Configura puertos del servidor, claves de cifrado y tokens de API

Crea y gestiona tokens de API REST con permisos granulares

Acciones rápidas: etiquetar, reenviar, ping, escaneo de puertos, reconectar, desconectar

| Parámetro | Descripción |
|---|
-Key | Clave de cifrado Base64: debe coincidir con la del servidor |
-Mode | agent (saliente) o agent-bind (entrante) |
-Server | Dirección del servidor host:port - requerida en modo agente |
-Listen | Dirección de bind para el modo agent-bind (por defecto 0.0.0.0:9001) |
-Background | Relanza como un proceso oculto en segundo plano y regresa inmediatamente |
-Verbose | Muestra el diagnóstico de salida de conexión y sesión |