Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Stowaway — 침투 테스터를 위한 다중 홉 프록시 도구로, 여러 노드를 통한 트래픽 라우팅, SOCKS5/SSH 터널링, 포트 포워딩, 원격 셸 및 암호화된 노드 통신을 지원합니다. | Kitploit
도구/GitHubGitHub/ph4ntonn/stowaway
Encryption/Decryption ToolsLateral MovementNetwork Access ControlPenetration TestingCommand and ControlRed Teaming
GitHubph4ntonn/stowaway

Stowaway

침투 테스터를 위한 다중 홉 프록시 도구로, 여러 노드를 통한 트래픽 라우팅, SOCKS5/SSH 터널링, 포트 포워딩, 원격 셸 및 암호화된 노드 통신을 지원합니다.

저장소 보기
3.4k442237개월 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

stowaway.png

Stowaway

GitHub issues GitHub forks GitHub stars GitHub license

English

Stowaway는 Go 언어로 작성된, 침투 테스트 작업자를 위해 제작된 다중 계층 프록시 도구입니다.

사용자는 이 프로그램을 사용하여 외부 트래픽을 여러 노드를 통해 내부 네트워크로 프록시하고, 내부 네트워크 접근 제한을 우회하며, 트리 형태의 노드 네트워크를 구성하고 손쉽게 관리 기능을 구현할 수 있습니다.

별 눌러주셔서 감사합니다. 사용 후 문제점이나 버그를 제보해 주시면 감사하겠습니다. 😘

또한 사용 전에 반드시 사용 방법과 문서 끝부분의 주의사항을 자세히 읽어주시기 바랍니다.

선언

본 프로젝트는 오직 네트워크 보안 연구 및 교육 목적으로만 제공되며, 불법적인 목적으로 사용하는 것을 엄격히 금지합니다. 본 도구를 사용하여 테스트를 수행하기 전에 반드시 대상 시스템의 명시적인 승인을 받고, 해당 국가/지역의 관련 법률 및 규정을 엄격히 준수하시기 바랍니다. 본 도구 사용으로 인해 발생하는 모든 직간접적 결과(데이터 손실, 시스템 손상, 법적 책임 등 포함)는 사용자 본인에게 있으며, 본 프로젝트 제작자는 어떠한 오용이나 이로 인한 법적 책임도 지지 않습니다. 본 도구를 사용함으로써 귀하는 본 면책 조항의 전체 내용을 읽고, 이해하고, 동의한 것으로 간주됩니다.

특징

  • 관리자 측의 더욱 친숙한 상호작용, 명령어 자동 완성/히스토리 지원
  • 한눈에 보이는 노드 트리 관리
  • 풍부한 노드 정보 표시
  • 노드 간 정방향/역방향 연결
  • 노드 간 재연결 지원
  • 노드 간 socks5/http 프록시를 통한 연결
  • 노드 간 SSH 터널을 통한 연결
  • 노드 간 트래픽 TCP/HTTP/WS 선택 가능
  • 다중 계층 socks5 트래픽 프록시 전송, UDP/TCP, IPv4/IPv6 지원
  • 노드의 SSH를 통한 원격 호스트 접속 지원
  • 원격 쉘
  • 파일 업로드 및 다운로드
  • 포트 로컬/원격 매핑
  • 노드 포트 재사용 가능
  • 각종 서비스 자유롭게 켜고 끄기
  • 노드 간 상호 인증
  • 노드 간 트래픽 TLS/AES-256-GCM 암호화
  • v1.0 대비 파일 크기 25% 감소
  • 다양한 플랫폼 지원(Linux/Mac/Windows/MIPS/ARM)

컴파일 및 데모

  • make를 사용하여 바로 다중 플랫폼 전체 프로그램을 컴파일하거나, Makefile을 확인하여 특정 프로그램을 컴파일하세요.
  • 컴파일하기 싫으신 분은 release에서 이미 컴파일된 프로그램을 바로 사용할 수 있습니다.
  • 데모 영상: YouTube

사용 방법

역할

Stowaway는 두 가지 역할이 있습니다.

  • admin 침투 테스터가 사용하는 메인 컨트롤러
  • agent 침투 테스터가 배포하는 피제어단

용어 정의

  • 노드: admin || agent를 의미
  • 능동 모드: 현재 조작 중인 노드가 다른 노드에 능동적으로 연결
  • 수동 모드: 현재 조작 중인 노드가 특정 포트를 리스닝하고 다른 노드의 연결을 기다림
  • 상위: 현재 조작 중인 노드와 부모 노드 간의 트래픽
  • 하위: 현재 조작 중인 노드와 모든 자식 노드 간의 트래픽

빠른 시작

다음 명령어로 가장 간단한 Stowaway 인스턴스를 빠르게 시작할 수 있습니다.

  • admin: ./stowaway_admin -l 9999
  • agent: ./stowaway_agent -c <stowaway_admin's IP>:9999

인자 설명

  • admin
인자:
-l  수동 모드의 리스닝 주소 [ip]:<port>
-s  노드 통신 암호화 키, 모든 노드(admin&&agent)가 일치해야 함
-c  능동 모드의 대상 노드 주소
--socks5-proxy socks5 프록시 서버 주소
--socks5-proxyu socks5 프록시 서버 사용자명 (선택)
--socks5-proxyp socks5 프록시 서버 비밀번호 (선택)
--http-proxy HTTP 프록시 서버 주소
--down  하위 프로토콜 유형, 기본값은 Raw TCP 트래픽, HTTP/WS 선택 가능
--tls-enable  노드 통신에 TLS 활성화, TLS 활성화 시 AES 암호화는 비활성화됨
--domain  TLS SNI/WebSocket 도메인 지정, 비어 있으면 기본값은 대상 노드 주소
--heartbeat  하트비트 패킷 활성화
  • agent
인자:
-l  수동 모드의 리스닝 주소 [ip]:<port>
-s  노드 통신 암호화 키
-c  능동 모드의 대상 노드 주소
--socks5-proxy socks5 프록시 서버 주소
--socks5-proxyu socks5 프록시 서버 사용자명 (선택)
--socks5-proxyp socks5 프록시 서버 비밀번호 (선택)
--http-proxy HTTP 프록시 서버 주소
--reconnect  재연결 시간 간격
--rehost  포트 재사용 시 재사용할 IP 주소
--report  포트 재사용 시 재사용할 포트 번호
--up  상위 프로토콜 유형, 기본값은 Raw TCP 트래픽, HTTP/WS 선택 가능
--down  하위 프로토콜 유형, 기본값은 Raw TCP 트래픽, HTTP/WS 선택 가능
--cs  실행 중인 플랫폼의 쉘 인코딩 유형, 기본값 utf-8, gbk 선택 가능
--tls-enable  노드 통신에 TLS 활성화, TLS 활성화 시 AES 암호화는 비활성화됨
--domain  TLS SNI/WebSocket 도메인 지정, 비어 있으면 기본값은 대상 노드 주소

인자 사용법

-l

이 인자는 admin과 agent 모두 동일하게 사용되며, 수동 모드에서만 사용됩니다.

IP 주소를 지정하지 않으면 기본적으로 0.0.0.0에서 리스닝합니다.

  • admin: ./stowaway_admin -l 9999 또는 ./stowaway_admin -l 127.0.0.1:9999

  • agent: ./stowaway_agent -l 9999 또는 ./stowaway_agent -l 127.0.0.1:9999

-s

이 인자는 admin과 agent 모두 동일하게 사용되며, 능동 및 수동 모드에서 사용 가능합니다.

선택 사항이며, 비어 있으면 통신이 암호화되지 않음을 의미하고, 그렇지 않으면 사용자가 제공한 키를 기반으로 통신이 암호화됩니다.

  • admin: ./stowaway_admin -l 9999 -s 123

  • agent: ./stowaway_agent -l 9999 -s 123

-c

이 인자는 admin과 agent 모두 동일하게 사용되며, 능동 모드에서만 사용됩니다.

연결하려는 노드의 주소를 나타냅니다.

  • admin: ./stowaway_admin -c 127.0.0.1:9999

  • agent: ./stowaway_agent -c 127.0.0.1:9999

--socks5-proxy/--socks5-proxyu/--socks5-proxyp/--http-proxy

이 네 가지 인자는 admin과 agent 모두 동일하게 사용되며, 능동 모드에서만 사용됩니다.

--socks5-proxy는 socks5 프록시 서버 주소, --socks5-proxyu 및 --socks5-proxyp는 선택 사항입니다.

--http-proxy는 HTTP 프록시 서버 주소이며, socks5와 동일한 방식으로 사용됩니다.

사용자명/비밀번호 없음:

  • admin: ./stowaway_admin -c 127.0.0.1:9999 --socks5-proxy xxx.xxx.xxx.xxx

  • agent: ./stowaway_agent -c 127.0.0.1:9999 --socks5-proxy xxx.xxx.xxx.xxx

사용자명/비밀번호 있음:

  • admin: ./stowaway_admin -c 127.0.0.1:9999 --socks5-proxy xxx.xxx.xxx.xxx --socks5-proxyu xxx --socks5-proxyp xxx

  • agent: ./stowaway_agent -c 127.0.0.1:9999 --socks5-proxy xxx.xxx.xxx.xxx --socks5-proxyu xxx --socks5-proxyp xxx

--up/--down

이 두 인자는 admin과 agent 모두 동일하게 사용되며, 능동 및 수동 모드에서 사용 가능합니다.

단, admin에는 --up 인자가 없습니다.

이 인자들은 선택 사항이며, 비어 있으면 상위/하위 트래픽이 Raw TCP 트래픽임을 의미합니다.

상위/하위 트래픽을 HTTP/WS 트래픽으로 설정하려면 이 두 인자를 http 또는 ws로 설정하면 됩니다.

  • admin: ./stowaway_admin -c 127.0.0.1:9999 --down ws

  • agent: ./stowaway_agent -c 127.0.0.1:9999 --up ws 또는 ./stowaway_agent -c 127.0.0.1:9999 --up ws --down ws

또한 두 가지 주의할 점이 있습니다.

첫째, 특정 노드의 상위/하위를 TCP/HTTP/WS 트래픽으로 설정한 경우, 연결된 부모/자식 노드의 하위/상위 트래픽도 일치해야 합니다. 예시:

  • admin: ./stowaway_admin -c 127.0.0.1:9999 --down ws

  • agent: ./stowaway_agent -l 9999 --up ws

위의 경우, agent는 --up을 ws로 설정해야 하며, 그렇지 않으면 네트워크 오류가 발생합니다.

agent 간에도 동일합니다.

agent-1이 127.0.0.1:10000 포트에서 자식 노드의 연결을 기다리면서 --down ws를 설정했다고 가정합니다.

그러면 agent-2도 --up을 ws로 설정해야 하며, 그렇지 않으면 네트워크 오류가 발생합니다.

  • agent-2: ./stowaway_agent -c 127.0.0.1:10000 --up ws

둘째, HTTP는 반이중 프로토콜이므로 Stowaway의 전이중 통신 특성에 적합하지 않습니다. 따라서 여기서 HTTP 프로토콜은 HTTP 메시지 형식만 구현했을 뿐 완전한 기능의 HTTP 워크플로는 아닙니다. 따라서 이 프로토콜을 여전히 사용할 수는 있지만, Stowaway 간 트래픽이 HTTP 메시지 형식으로 전송될 경우 nginx를 통해 전달할 수 없습니다. 이 코드와 기능의 일부는 특정 상황에서 HTTP 프로토콜을 사용하기 위해 유지되었으며, 다른 한편으로는 사용자 정의 프로토콜을 참조할 수 있는 사용자 정의 트래픽 템플릿을 제공하기 위함입니다.

nginx 등의 리버스 프록시를 통해 통신해야 하는 경우 ws 프로토콜을 사용하고 TLS와 함께 사용하시기 바랍니다.

--reconnect

이 인자는 agent에서만, 그리고 능동 모드에서만 사용됩니다.

선택 사항이며, 설정하지 않으면 노드는 네트워크 연결이 끊어져도 자동으로 재연결을 시도하지 않습니다. 설정하면 노드는 설정된 x초마다 부모 노드에 재연결을 시도합니다.

  • admin: ./stowaway_admin -l 9999

  • agent: ./stowaway_agent -c 127.0.0.1:9999 --reconnect 10

위의 경우, agent와 admin 간의 연결이 끊어지면 agent는 10초마다 admin에 재연결을 시도합니다.

agent 간에도 위와 동일합니다.

그리고 --reconnect 인자는 --socks5-proxy/--socks5-proxyu/--socks5-proxyp/--http-proxy와 함께 사용할 수 있으며, agent는 시작 시 설정된 구성을 참조하여 프록시를 통해 재연결을 시도합니다.

--rehost/--report

이 두 인자는 특별하며, agent에서만 사용됩니다. 자세한 내용은 아래의 포트 재사용 메커니즘을 참조하세요.

--cs

이 인자는 agent에서만 사용되며, 능동 및 수동 모드에서 사용 가능합니다.

주로 'shell' 기능의 글자 깨짐 문제를 해결하기 위한 것입니다. 사용자가 agent를 콘솔 인코딩이 gbk인 플랫폼(예: 일반적인 Windows)에서 실행하고 동시에 admin을 콘솔 인코딩이 utf-8인 플랫폼에서 실행하는 경우, 이 인자를 반드시 'gbk'로 설정해야 합니다.

  • Windows: ./stowaway_agent -c 127.0.0.1:9999 -s 123 --cs gbk

--tls-enable

이 두 인자는 admin과 agent 모두 동일하게 사용되며, 능동 및 수동 모드에서 사용 가능합니다.

이 옵션을 설정하면 노드 간 트래픽을 TLS로 암호화할 수 있습니다.

예시:

  • admin: ./stowaway_admin -l 10000 --tls-enable -s 123
  • agent: ./stowaway_agent -c localhost:10000 --tls-enable -s 123

참고: 이 인자를 활성화하면 AES 암호화는 기본적으로 비활성화되며, -s 인자는 노드 간 상호 인증 및 포트 재사용 기능에만 사용됩니다.

또한 이 인자를 활성화할 경우, 네트워크 내의 모든 노드(admin 포함)가 이 인자를 활성화해야 합니다.

--domain

이 두 인자는 admin과 agent 모두 동일하게 사용되며, 능동 모드에서만 사용 가능합니다.

이 옵션을 설정하면 현재 노드의 TLS 협상 시 SNI 옵션 또는 WebSocket의 대상 Host를 설정할 수 있습니다.

예시:

  • admin: ./stowaway_admin -l 10000 --tls-enable -s 123
  • agent: ./stowaway_agent -c xxx.xxx.xxx.xxx:10000 --tls-enable -s 123 --domain xxx.com

--heartbeat

이 인자는 admin에서만 사용되며, 능동 및 수동 모드에서 사용 가능합니다.

이 옵션을 설정하면 admin이 첫 번째 노드에 지속적으로 하트비트 패킷을 전송하여 중간에 리버스 프록시가 있는 경우에도 긴 연결을 유지할 수 있습니다.

도구 다운로드