
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 바인드 에이전트 |
| 대시보드 | 실시간 에이전트 그래프, 라우팅 테이블, 로그 뷰어를 갖춘 웹 UI |
| API | 토큰 기반 인증(read/write/admin)을 갖춘 전체 REST API |
| CLI | 대화형 REPL + 웹 기반 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 | 연결 및 세션 진단 출력 표시 |