Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Stowaway — Herramienta de proxy de múltiples saltos para pentesters que permite el enrutamiento de tráfico a través de múltiples nodos, túneles SOCKS5/SSH, reenvío de puertos, shell remota y comunicación cifrada entre nodos. | Kitploit
Herramientas/GitHubGitHub/ph4ntonn/stowaway
Herramientas de Cifrado/DescifradoMovimiento LateralControl de Acceso a la RedPruebas de PenetraciónComando y ControlRed Teaming
GitHubph4ntonn/stowaway

Stowaway

Herramienta de proxy de múltiples saltos para pentesters que permite el enrutamiento de tráfico a través de múltiples nodos, túneles SOCKS5/SSH, reenvío de puertos, shell remota y comunicación cifrada entre nodos.

Ver Repositorio
3.4k442hace 5 mesesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

stowaway.png

Stowaway

GitHub issues GitHub forks GitHub stars GitHub license

English

Stowaway es una herramienta de proxy multinivel escrita en Go, diseñada específicamente para profesionales de pruebas de penetración.

Los usuarios pueden usar este programa para enrutar el tráfico externo a través de múltiples nodos hacia la red interna, superar las restricciones de acceso a la red interna, construir una red de nodos en forma de árbol y gestionar fácilmente las funciones.

Gracias a todos por sus estrellas. También damos la bienvenida a preguntas y errores después de usar el programa 😘

También, asegúrese de leer detenidamente las instrucciones de uso y las notas al final antes de usar.

Declaración

Este proyecto está destinado únicamente a la investigación y enseñanza de seguridad en redes. Está estrictamente prohibido su uso con fines ilegales. Asegúrese de obtener autorización explícita del sistema objetivo antes de realizar cualquier prueba con esta herramienta, y cumpla estrictamente con las leyes y regulaciones pertinentes de su país/región. Cualquier consecuencia directa o indirecta derivada del uso de esta herramienta (incluyendo, pero no limitado a: pérdida de datos, daños del sistema, responsabilidad legal) es responsabilidad exclusiva del usuario. El autor de este proyecto no se hace responsable de ningún uso indebido ni de las responsabilidades legales que pueda conllevar. El uso de esta herramienta implica que ha leído, comprendido y aceptado todo el contenido de este descargo de responsabilidad.

Características

  • Interfaz de administración más amigable, con soporte para autocompletado de comandos e historial.
  • Gestión clara del árbol de nodos.
  • Visualización completa de la información de los nodos.
  • Conexión directa/inversa entre nodos.
  • Soporte de reconexión entre nodos.
  • Conexión entre nodos a través de proxy SOCKS5/HTTP.
  • Conexión entre nodos mediante túnel SSH.
  • Tráfico entre nodos seleccionable como TCP/HTTP/WS.
  • Reenvío de tráfico proxy SOCKS5 multicapa, compatible con UDP/TCP, IPv4/IPv6.
  • Acceso SSH remoto a través de nodos.
  • Shell remoto.
  • Subida y descarga de archivos.
  • Reenvío de puertos local/remoto.
  • Reutilización de puertos de nodo.
  • Activación/desactivación libre de varios servicios.
  • Autenticación mutua entre nodos.
  • Cifrado del tráfico entre nodos con TLS/AES-256-GCM.
  • Reducción del 25% del tamaño del archivo en comparación con v1.0.
  • Soporte para múltiples plataformas (Linux/Mac/Windows/MIPS/ARM).

Compilación y demostración

  • Use make para compilar directamente el programa completo para múltiples plataformas, o consulte el Makefile para compilar programas específicos.
  • Si no desea compilar, puede usar los programas ya compilados en release.
  • Video de demostración: YouTube

Instrucciones de uso

Roles

Stowaway incluye dos roles:

  • admin: el controlador principal utilizado por el probador de penetración.
  • agent: el agente controlado desplegado por el probador de penetración.

Definiciones

  • Nodo: se refiere a admin o agent.
  • Modo activo: el nodo actual se conecta activamente a otro nodo.
  • Modo pasivo: el nodo actual escucha en un puerto y espera que otro nodo se conecte.
  • Upstream: tráfico entre el nodo actual y su nodo padre.
  • Downstream: tráfico entre el nodo actual y todos sus nodos hijos.

Inicio rápido

Los siguientes comandos inician rápidamente la instancia más simple de Stowaway.

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

Parámetros

  • admin
root@kitploit:~
Parámetros:
-l Dirección de escucha en modo pasivo [ip]:<puerto>
-s Clave de cifrado de comunicación entre nodos; todos los nodos (admin && agent) deben ser iguales.
-c Dirección del nodo objetivo en modo activo.
--socks5-proxy Dirección del servidor proxy SOCKS5.
--socks5-proxyu Nombre de usuario del servidor proxy SOCKS5 (opcional).
--socks5-proxyp Contraseña del servidor proxy SOCKS5 (opcional).
--http-proxy Dirección del servidor proxy HTTP.
--down Tipo de protocolo downstream; por defecto tráfico TCP puro, opcional HTTP/WS.
--tls-enable Habilita TLS para la comunicación entre nodos; al habilitar TLS, se deshabilitará el cifrado AES.
--domain Especifica el dominio SNI TLS/WebSocket; si está vacío, por defecto es la dirección del nodo objetivo.
--heartbeat Habilita paquetes de heartbeat.
  • agent
root@kitploit:~
Parámetros:
-l Dirección de escucha en modo pasivo [ip]:<puerto>
-s Clave de cifrado de comunicación entre nodos.
-c Dirección del nodo objetivo en modo activo.
--socks5-proxy Dirección del servidor proxy SOCKS5.
--socks5-proxyu Nombre de usuario del servidor proxy SOCKS5 (opcional).
--socks5-proxyp Contraseña del servidor proxy SOCKS5 (opcional).
--http-proxy Dirección del servidor proxy HTTP.
--reconnect Intervalo de reconexión en segundos.
--rehost Dirección IP para reutilización de puertos.
--report Puerto para reutilización de puertos.
--up Tipo de protocolo upstream; por defecto tráfico TCP puro, opcional HTTP/WS.
--down Tipo de protocolo downstream; por defecto tráfico TCP puro, opcional HTTP/WS.
--cs Codificación de shell de la plataforma de ejecución; por defecto utf-8, opcional gbk.
--tls-enable Habilita TLS para la comunicación entre nodos; al habilitar TLS, se deshabilitará el cifrado AES.
--domain Especifica el dominio TLS SNI/WebSocket; si está vacío, por defecto es la dirección del nodo objetivo.

Uso de parámetros

-l

Este parámetro se usa igual en admin y agent, solo en modo pasivo.

Si no se especifica la IP, por defecto escucha en 0.0.0.0.

  • admin: ./stowaway_admin -l 9999 o ./stowaway_admin -l 127.0.0.1:9999

  • agent: ./stowaway_agent -l 9999 o ./stowaway_agent -l 127.0.0.1:9999

-s

Este parámetro se usa igual en admin y agent, tanto en modo activo como pasivo.

Opcional. Si está vacío, la comunicación no está cifrada; de lo contrario, la comunicación se cifra con la clave proporcionada por el usuario.

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

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

-c

Este parámetro se usa igual en admin y agent, solo en modo activo.

Representa la dirección del nodo al que se desea conectar.

  • 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

Estos cuatro parámetros se usan igual en admin y agent, solo en modo activo.

--socks5-proxy representa la dirección del servidor proxy SOCKS5; --socks5-proxyu y --socks5-proxyp son opcionales.

--http-proxy representa la dirección del servidor proxy HTTP, se usa de la misma manera que SOCKS5.

Sin nombre de usuario y contraseña:

  • 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

Con nombre de usuario y contraseña:

  • 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

Estos dos parámetros se usan igual en admin y agent, tanto en modo activo como pasivo.

Pero tenga en cuenta que admin no tiene el parámetro --up.

Estos parámetros son opcionales. Si están vacíos, el tráfico upstream/downstream es TCP puro.

Si desea que el tráfico upstream/downstream sea HTTP/WS, configure estos parámetros como http o ws respectivamente.

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

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

Además, tenga en cuenta dos puntos:

Primero, cuando configure el tráfico upstream/downstream de un nodo como TCP/HTTP/WS, el tráfico downstream/upstream del nodo padre/hijo debe ser consistente. Por ejemplo:

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

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

En este caso, el agente debe configurar --up como ws; de lo contrario, ocurrirán errores de red.

Lo mismo aplica entre agentes.

Supongamos que agent-1 está escuchando en 127.0.0.1:10000 esperando la conexión de un nodo hijo y ha configurado --down ws. Entonces agent-2 también debe configurar --up como ws; de lo contrario, se producirán errores.

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

Segundo, dado que HTTP es un protocolo semidúplex, no es muy adecuado para la comunicación full-duplex de Stowaway. Por lo tanto, aquí el protocolo HTTP solo implementa el formato de mensaje HTTP, no un flujo de trabajo HTTP completo. Así que aún puede usar este protocolo, pero el tráfico entre Stowaway en formato de mensaje HTTP no puede ser reenviado a través de nginx. Esta parte del código y la funcionalidad se mantienen para el uso en ciertas situaciones especiales con HTTP, y también para proporcionar una plantilla de tráfico personalizada para que los usuarios la tomen como referencia al personalizar protocolos.

Si necesita usar nginx u otros proxies inversos, utilice el protocolo WS junto con TLS para la comunicación.

--reconnect

Este parámetro solo se usa en agent y solo en modo activo.

Opcional. Si no se establece, el nodo no intentará reconectarse después de que se desconecte la conexión de red. Si se establece, el nodo intentará reconectarse al nodo padre cada x segundos (el número que configure).

  • admin: ./stowaway_admin -l 9999

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

En el caso anterior, si la conexión entre el agent y el admin se rompe, el agente intentará reconectarse al admin cada diez segundos.

Lo mismo aplica entre agentes.

Además, el parámetro --reconnect se puede usar junto con --socks5-proxy/--socks5-proxyu/--socks5-proxyp/--http-proxy; el agente intentará reconectarse a través del proxy según la configuración inicial.

--rehost/--report

Estos dos parámetros son especiales; solo se usan en agent. Consulte la sección de reutilización de puertos para más detalles.

--cs

Este parámetro solo se usa en agent, tanto en modo activo como pasivo.

Está diseñado principalmente para resolver problemas de codificación en la función 'shell'. Cuando el agente se ejecuta en una plataforma con codificación de consola gbk (por ejemplo, Windows en general) y el admin se ejecuta en una plataforma con codificación utf-8, asegúrese de establecer este parámetro en 'gbk'.

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

--tls-enable

Este parámetro se usa igual en admin y agent, tanto en modo activo como pasivo.

Al habilitar esta opción, el tráfico entre nodos se cifrará con TLS.

Ejemplo:

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

Nota: Cuando esta opción está habilitada, el cifrado AES se deshabilita por defecto; el parámetro -s solo se usará para autenticación mutua entre nodos y para la función de reutilización de puertos.

Además, cuando esta opción está habilitada, asegúrese de que todos los nodos en la red (incluyendo admin) tengan esta opción habilitada.

--domain

Este parámetro se usa igual en admin y agent, solo en modo activo.

Al establecer esta opción, se puede configurar la opción SNI durante la negociación TLS o el Host de destino para WebSocket.

Ejemplo:

  • 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

Este parámetro solo se usa en admin, tanto en modo activo como pasivo.

Al habilitar esta opción, el admin enviará continuamente paquetes de heartbeat al primer nodo, manteniendo así una conexión larga en presencia de un proxy inverso intermedio.

Supongamos que hay un proxy inverso como nginx entre admin y agent que proxy el puerto 8080 al puerto 8000. Ejemplo:

  • admin: ./stowaway_admin -l 8000 --tls-enable -s 123 --down ws --heartbeat
  • agent: ./stowaway_agent -c xxx.xxx.xxx.xxx:8080 --tls-enable -s 123 --domain xxx.com --up ws

Mecanismo de reutilización de puertos

Actualmente, Stowaway ofrece reutilización de puertos basada en las características SO_REUSEPORT y SO_REUSEADDR, y reutilización de puertos basada en IPTABLES.

  • En Linux, se pueden reutilizar la mayoría de los puertos funcionales.
  • En Windows, no se pueden reutilizar los puertos IIS, RDP; se pueden reutilizar puertos de servicios MySQL, Apache.

Modos de reutilización

  • Modo SO_REUSEPORT y SO_REUSEADDR

    Suponga que el agente utiliza el mecanismo de reutilización de puertos para reutilizar el puerto 80.

    En este caso, el agente debe configurar los parámetros --rehost, --report y -s.

    • --rehost: Representa la dirección IP que se desea reutilizar; no puede ser 0.0.0.0, generalmente debe ser la dirección externa de la tarjeta de red.
    • --report: Representa el puerto que se desea reutilizar.
    • -s: Representa la clave de comunicación.

    Principalmente compatible con Windows y Mac; también funciona en Linux, pero con más restricciones.

    • admin: ./stowaway_admin -c 192.168.0.105:80 -s 123
    • agent: ./stowaway_agent --report 80 --rehost 192.168.0.105 -s 123
  • Modo IPTABLES

    Suponga que el agente utiliza el mecanismo de reutilización de puertos para reutilizar el puerto 22.

    En este caso, el agente debe configurar los parámetros -l, --report y -s.

    • -l: Representa el puerto que no puede ser accedido normalmente, es decir, el puerto donde realmente desea que el agente escuche y acepte conexiones.
    • --report: Representa el puerto que se desea reutilizar.
    • -s: Representa la clave de comunicación.

    Solo compatible con Linux; el agente modificará automáticamente las reglas de IPTABLES, requiere privilegios root.

    • agent: ./stowaway_agent --report 22 -l 10000 -s 123

      Después de iniciar el agente, use el script reuse.py en el directorio script.

      Primero, establezca el valor de SECRET (el valor de SECRET es la clave de comunicación establecida al iniciar cada nodo).

      Luego ejecute: python reuse.py --start --rhost xxx.xxx.xxx.xxx --rport xxx

      • --rhost: Representa la dirección del agente.
      • --rport: Representa el puerto reutilizado; en este ejemplo, debería ser 22.
    • Ahora el admin puede conectarse: ./stowaway_admin -c 192.168.0.105:22 -s 123

Notas

  • Los ejemplos anteriores solo muestran conexiones entre admin y agente; las conexiones entre agentes son similares, sin diferencias.
  • Si el agente es eliminado con ctrl-c o el comando kill, el programa limpiará automáticamente las reglas de iptables. Pero si se elimina con kill -9, no se limpiarán automáticamente. Por lo tanto, para evitar que las reglas de iptables no se limpien después de una salida anormal del agente y que el servicio reutilizado no se pueda acceder, cuando necesite cerrar, ejecute: python reuse.py --stop --rhost xxx.xxx.xxx.xxx --rport xxx Esto desactivará las reglas de reenvío, permitiendo que el servicio original sea accesible normalmente.
  • Si se usa el modo de reutilización de puertos basado en IPTABLES, se forzará la escucha en 0.0.0.0; no se puede especificar una IP con el parámetro -l.

¿Cómo formar una red multinivel?

En los ejemplos anteriores, solo aparecen admin y un agente.

La característica principal es la red multinivel.

En Stowaway, para formar una red multinivel, se deben usar los comandos listen, connect y sshtunnel en el admin.

Pongamos un ejemplo simple:

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

Ahora agent-1 ya está conectado al admin.

  • agent-1: ./stowaway_agent -c 127.0.0.1:9999 -s 123

    Ahora el usuario quiere conectar agent-2, así:

  • agent-2: ./stowaway_agent -l 10000 -s 123

    Entonces, el usuario puede, a través del admin, escribir use 0 -> connect IP de agent-2:10000 para agregarlo a la red, convirtiéndolo en un nodo hijo de agent-1.

Si el usuario desea conectar otro nodo, agent-3, pero agent-1 no puede acceder a agent-3.

Entonces, el usuario puede, a través del admin, escribir use 0 -> listen -> seleccionar 1.Normal Passive -> introducir 10001, para que agent-1 escuche en el puerto 10001 y espere conexiones de nodos hijos.

Una vez que el admin haya completado la operación, agent-3 se inicia de la siguiente manera:

  • agent-3: ./stowaway_agent -c 127.0.0.1:10001 -s 123

De esta manera, agent-3 se agrega a la red como otro nodo hijo de agent-1.

Para una introducción detallada a listen y sshtunnel, consulte la sección de comandos a continuación.

¿Cómo reconectar?

Stowaway actualmente admite varios métodos de reconexión. Resumiendo brevemente:

En primer lugar, cuando el nodo padre se desconecta, solo un tipo de nodo saldrá activamente: aquellos que se iniciaron en modo activo y no configuraron reconexión.

Si se configuró la reconexión, el nodo intentará reconectarse en el intervalo de tiempo especificado.

Además, todos los nodos iniciados en modo pasivo no saldrán activamente; en su lugar, volverán a escuchar en el puerto especificado según los parámetros de inicio. En ese momento, el usuario aún puede usar connect y sshtunnel para volver a conectar estos nodos a la red.

Notas

  1. Si, debido a fluctuaciones de red o desconexión de un nodo intermedio, una rama se desconecta, al reconectar activamente asegúrese de conectar el nodo principal de la cadena faltante. Por ejemplo: admin seguido de node1, node1 se divide en dos ramas: node1->node2->node3->node4 y node1->node5->node6. Si node2 se desconecta, node3 y node4 no se desconectarán, sino que permanecerán activos. En ese momento, el usuario tiene dos opciones para volver a agregar node3 y node4 a la red: una es que si node1 puede acceder directamente a node3, el usuario puede en cualquier momento desde node1 usar el comando connect o sshtunnel para volver a agregar node3 a la red (recuerde, incluso si node1 también puede acceder a node4, no conecte directamente node4; conecte el nodo principal de la cadena faltante (node3), que es node3, para volver a agregar tanto node3 como node4 a la red). La otra opción es que si node1 no puede acceder directamente a node3 (es decir, debe pasar por node2), entonces primero reinicie node2 y agréguelo a la red, luego desde node2 use el comando connect o sshtunnel para conectar node3, agregando así node3 y node4 a la red.

  2. Cuando un nodo se desconecta, todos los servicios socks, backward y forward relacionados con ese nodo y sus nodos hijos serán forzados a detenerse.

Explicación de comandos

En la consola de admin, el usuario puede usar Tab para autocompletar comandos y las flechas del teclado para navegar por el historial/mover el cursor.

La consola de admin tiene dos niveles. El primer nivel es el panel principal, que contiene los siguientes comandos:

  • help: Muestra la ayuda del panel principal.
root@kitploit:~
(admin) >> help
  help                                            Mostrar ayuda
  detail                                          Mostrar detalles de nodos conectados
  topo                                            Mostrar topología de nodos
  use        <id>                                 Seleccionar el nodo objetivo que desea usar
  exit                                            Salir de Stowaway
  • detail: Muestra información detallada de los nodos en línea.
root@kitploit:~
(admin) >> detail
Node[0] -> IP: 127.0.0.1:10000  Hostname: ph4ntoms-MBP.lan  User: ph4ntom
Memo:
  • topo: Muestra la relación padre-hijo de los nodos en línea.
root@kitploit:~
(admin) >> topo
Node[0]'s children ->
Node[1]

Node[1]'s children ->
  • use: Usa un agente específico.
root@kitploit:~
(admin) >> use 0
(node 0) >>
  • exit: Sale de Stowaway.
root@kitploit:~
(admin) >> exit
[*] Do you really want to exit stowaway?(y/n): y
[*] BYE!

Cuando el usuario selecciona un agente con el comando use, entra al segundo nivel, el panel de nodo, que contiene los siguientes comandos:

  • help: Muestra la ayuda del panel de nodo.
root@kitploit:~
(node 0) >> help
  help                                            Mostrar ayuda
  status                                          Mostrar estado del nodo, incluyendo socks/forward/backward
  listen                                          Iniciar escucha de puerto en el nodo actual
  addmemo    <string>                             Agregar memo para el nodo actual
  delmemo                                         Eliminar memo del nodo actual
  ssh        <ip:port>                            Iniciar SSH a través del nodo actual
  shell                                           Iniciar un shell interactivo en el nodo actual
  socks      <lport> [username] [pass]            Iniciar un servidor socks5
  stopsocks                                       Detener servicios socks
  connect    <ip:port>                            Conectar a un nuevo nodo
  sshtunnel  <ip:sshport> <agent port>            Usar túnel SSH para agregar el nodo a nuestra topología
  upload     <local filename> <remote filename>   Subir archivo al nodo actual
  download   <remote filename> <local filename>   Descargar archivo del nodo actual
  forward    <lport> <ip:port>                    Reenviar puerto local a una IP:puerto remota específica
  stopforward                                     Detener servicios forward
  backward   <rport> <lport>                      Reenviar puerto remoto (agent) a puerto local (admin)
  stopbackward                                    Detener servicios backward
  shutdown                                        Terminar el nodo actual
  back                                            Volver al panel padre
  exit                                            Salir de Stowaway
  • status: Muestra el estado de socks/forward/backward del nodo actual.
root@kitploit:~
(node 0) >> status
Socks status:
      ListenAddr: 0.0.0.0:10000    Username:    Password:
-------------------------------------------------------------------------------------------
Forward status:
      [1] Listening Addr: [::]:20000 , Remote Addr: 192.168.1.1:22 , Active Connections: 0
      [2] Listening Addr: [::]:30000 , Remote Addr: 192.168.1.1:22 , Active Connections: 0
-------------------------------------------------------------------------------------------
Backward status:
      [1] Remote Port: 40000 , Local Port: 50000 , Active Connections: 0
  • listen: Ordena al agente escuchar en un puerto y esperar la conexión de nodos hijos.
root@kitploit:~
(node 0) >> listen
[*] MENTION! If you choose IPTables Reuse or SOReuse, you MUST CONFIRM that the node was initially started in the corresponding way!
[*] When you choose IPTables Reuse or SOReuse, the node will use the initial config(when node started) to reuse port!
[*] Please choose the mode(1.Normal passive / 2.IPTables Reuse / 3.SOReuse): 1
[*] Please input the [ip:]<port> : 10001
[*] Waiting for response......
[*] Node is listening on 10001

Tenga en cuenta que listen es un comando especial. Como se puede ver, listen tiene tres modos:

  1. Normal passive: Esta opción significa que el agente escuchará de manera normal en el puerto objetivo y esperará la conexión de nodos hijos.
  2. IPTables Reuse: Esta opción significa que el agente reutilizará el puerto usando el método IPTables Reuse y esperará la conexión de nodos hijos.
  3. SOReuse: Esta opción significa que el agente reutilizará el puerto usando el método SOReuse y esperará la conexión de nodos hijos.

El primer modo es el más común. Si el nodo padre escucha de esta manera, el nodo hijo solo necesita -c ip:puerto del nodo padre para unirse a la red.

El segundo y tercer modo son especiales. Si el usuario elige el segundo o tercer modo, debe asegurarse de que el nodo actual se haya iniciado con el método de reutilización de puertos correspondiente; de lo contrario, no podrá usar estos modos.

En el segundo y tercer modo, el usuario no necesita ingresar ninguna información; el nodo usará automáticamente sus propios parámetros de inicio para reutilizar el puerto y prepararse para aceptar conexiones de nodos hijos.

Además, listen solo acepta la conexión de un nodo hijo a la vez. Si se necesitan múltiples nodos hijos, ejecute el comando listen tantas veces como sea necesario.

  • addmemo: Agrega una nota al nodo actual.
root@kitploit:~
(node 0) >> addmemo test
[*] Memo added!
(node 0) >> exit
(admin) >> detail
Node[0] -> IP: 127.0.0.1:10000  Hostname: ph4ntoms-MBP.lan  User: ph4ntom
Memo: test
  • delmemo: Elimina la nota del nodo actual.
root@kitploit:~
(node 0) >> delmemo
[*] Memo deleted!
(node 0) >> exit
(admin) >> detail
Node[0] -> IP: 127.0.0.1:10000  Hostname: ph4ntoms-MBP.lan  User: ph4ntom
Memo:
  • ssh: Ordena al nodo conectarse a una máquina objetivo vía SSH.
root@kitploit:~
(node 0) >> ssh 127.0.0.1:22
[*] Please choose the auth method(1.username&&password / 2.certificate): 1
[*] Please enter the username: ph4ntom
[*] Please enter the password: *****
[*] Waiting for response.....
[*] Connect to target host via ssh successfully!
 # ph4ntom @ ph4ntoms-MBP in ~ 👑 [17:03:56]
$ whoami
ph4ntom
 # ph4ntom @ ph4ntoms-MBP in ~ 👑 [17:04:16]
$

En este modo, la tecla Tab está deshabilitada.

  • shell: Obtiene el shell del nodo actual.
root@kitploit:~
(node 0) >> shell
[*] Waiting for response.....
[*] Shell is started successfully!

bash: no job control in this shell

The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.
bash-3.2$ whoami
ph4ntom
bash-3.2$

En este modo, la tecla Tab está deshabilitada.

  • socks: Inicia un servicio socks5 en el nodo actual.
root@kitploit:~
(node 0) >> socks 7777
[*] Trying to listen on 0.0.0.0:7777......
[*] Waiting for response......
[*] Socks start successfully!
(node 0) >>

Tenga en cuenta que el puerto 7777 aquí no se abre en el agente, sino en el admin.

Si necesita configurar nombre de usuario y contraseña, cambie el comando a: socks 7777 <su nombre de usuario> <su contraseña>.

Si necesita especificar la interfaz de escucha, cambie el comando a: socks xxx.xxx.xxx.xxx:7777.

  • stopsocks: Detiene el servicio socks5 en el nodo actual.
root@kitploit:~
(node 0) >> stopsocks
Socks Info ---> ListenAddr: 0.0.0.0:7777    Username: <null>    Password: <null>
[*] Do you really want to shut down socks?(yes/no): yes
[*] Closing......
[*] Socks service has been closed successfully!
(node 0) >>
  • connect: Ordena al nodo actual conectarse a otro nodo hijo.
root@kitploit:~
agent-1: ./stowaway_agent -l 10002
root@kitploit:~
(node 0) >> connect 127.0.0.1:10002
[*] Waiting for response......
[*] New node online! Node id is 1

(node 0) >>
  • sshtunnel: Ordena al nodo actual conectarse a otro nodo hijo a través de un túnel SSH.
root@kitploit:~
agent-2: ./stowaway_agent -l 10003
root@kitploit:~
(node 0) >> sshtunnel 127.0.0.1:22 10003
[*] Please choose the auth method(1.username&&password / 2.certificate): 1
[*] Please enter the username: ph4ntom
[*] Please enter the password: ******
[*] Waiting for response.....
[*] New node online! Node id is 2

(node 0) >>

En entornos de red estrictamente restringidos, se puede usar el túnel SSH para disfrazar el tráfico de Stowaway como tráfico SSH, evitando así las restricciones del firewall.

  • upload: Sube un archivo al nodo actual.
root@kitploit:~
(node 0) >> upload test.7z test.xxx
[*] File transmitting, please wait...
136.07 KiB / 136.07 KiB [-----------------------------------------------------------------------------------] 100.00% ? p/s 0s
  • download: Descarga un archivo del nodo actual.
root@kitploit:~
(node 0) >> download test.xxx test.xxxx
[*] File transmitting, please wait...
136.07 KiB / 136.07 KiB [-----------------------------------------------------------------------------------] 100.00% ? p/s 0s
  • forward: Mapea un puerto del admin a una dirección remota.
root@kitploit:~
(node 0) >> forward 9000 127.0.0.1:22
[*] Trying to listen on 0.0.0.0:9000......
[*] Waiting for response......
[*] Forward start successfully!
(node 0) >>
root@kitploit:~
$ ssh 127.0.0.1 -p 9000
Password:
 # ph4ntom @ ph4ntoms-MBP in ~ 👑 [17:19:51]
$
  • stopforward: Detiene el mapeo remoto del nodo actual.
root@kitploit:~
(node 0) >> stopforward
[0] All
[1] Listening Addr : [::]:9000 , Remote Addr : 127.0.0.1:22 , Active Connections : 1
[*] Do you really want to shut down forward?(yes/no): yes
[*] Please choose one to close: 1
[*] Closing......
[*] Forward service has been closed successfully!
  • backward: Mapea inversamente un puerto del agente actual al puerto local del admin.
root@kitploit:~
(node 0) >> backward 9001 22
[*] Trying to ask node to listen on 0.0.0.0:9001......
[*] Waiting for response......
[*] Backward start successfully!
(node 0) >>
root@kitploit:~
$ ssh 127.0.0.1 -p 9001
Password:
 # ph4ntom @ ph4ntoms-MBP in ~ 🌈 [17:22:14]
$
  • stopbackward: Detiene el mapeo inverso del nodo actual.
root@kitploit:~
(node 0) >> stopbackward
[0] All
[1] Remote Port : 9001 , Local Port : 22 , Active Connections : 1
[*] Do you really want to shut down backward?(yes/no): yes
[*] Please choose one to close: 1
[*] Closing......
[*] Backward service has been closed successfully!
  • shutdown: Ordena al nodo actual desconectarse.
root@kitploit:~
(node 1) >> shutdown
(node 1) >>
[*] Node 1 is offline!
  • back: Vuelve al panel principal.
root@kitploit:~
(node 1) >> back
(admin) >>
  • exit: Sale de Stowaway.
root@kitploit:~
(node 1) >> exit
[*] Do you really want to exit stowaway?(y/n): y
[*] BYE!

TODO

  • Corregir errores
  • Soporte para TLS
  • Soporte para múltiples nodos iniciales (startnode)

Notas importantes

  • Este programa se desarrolló durante el tiempo libre para aprender; la estructura del código puede no ser rigurosa y las funciones pueden tener errores. Agradecemos su comprensión.
  • Cuando el admin no está en línea, no se permitirá la entrada de nuevos nodos.
  • El admin solo admite un nodo agente conectado directamente; los agentes no tienen esta limitación.
  • Si el usuario usa el admin en Windows, primero descargue ansicon o aquí. Luego vaya a la carpeta correspondiente a la arquitectura del sistema y ejecute ansicon.exe -i; de lo contrario, la consola del admin puede mostrar caracteres ilegibles.
  • Este programa solo admite UDP ASSOCIATE según el estándar RFC1928. Al usar el proxy SOCKS5 UDP, tenga en cuenta que el programa que utilice (por ejemplo, escáneres) debe construir paquetes de acuerdo con el estándar RFC1928 y debe manejar la pérdida de paquetes por sí mismo.

Proyecto 404 StarLink

Stowaway ahora se ha unido al Proyecto 404 StarLink

Agradecimientos

Agradecemos la ayuda de los siguientes maestros y proyectos durante el desarrollo de Stowaway:

  • lz520520
  • SignorMercurio
  • MM0x00
  • r0ck3rt
  • Termite
  • Venom
Descargar herramienta