
Una navaja suiza de código abierto para comunicación arbitraria sobre protocolos de aplicación
![]() |
|---|
| Logotipo de Mística por JoelGMSec |
Mística es una herramienta que permite incrustar datos en campos de protocolos de la capa de aplicación, con el objetivo de establecer un canal bidireccional para comunicaciones arbitrarias. Actualmente, se ha implementado la encapsulación en los protocolos HTTP, HTTPS, DNS e ICMP, pero se espera introducir más protocolos en un futuro próximo.
Mística tiene un diseño modular, construido alrededor de un protocolo de transporte personalizado, llamado SOTP: Simple Overlay Transport Protocol. Los datos se cifran, se dividen en fragmentos y se colocan en paquetes SOTP. Los paquetes SOTP se codifican e incrustan en el campo deseado del protocolo de aplicación, y se envían al otro extremo.
El objetivo de la capa SOTP es ofrecer un protocolo de transporte binario genérico, con una sobrecarga mínima. Los paquetes SOTP se pueden ocultar o incrustar fácilmente en protocolos de aplicación legítimos. Además, SOTP se asegura de que los paquetes sean recibidos por el otro extremo, cifra los datos usando RC4 (esto puede cambiar en el futuro), y garantiza que la información pueda fluir en ambos sentidos de manera transparente, mediante un mecanismo de sondeo.
Los módulos interactúan con la capa SOTP para diferentes propósitos:
Los módulos envolventes y de superposición trabajan juntos para construir aplicaciones personalizadas, por ejemplo, redirección de entrada a través de DNS o reenvío remoto de puertos a través de HTTP.
El diseño modular de Mística permite un fácil desarrollo de nuevos módulos. Además, el usuario puede bifurcar fácilmente los módulos actuales para usar algún campo o codificación personalizados o modificar el comportamiento de un módulo de superposición.
Hay dos piezas principales de software:
ms.py): Utiliza módulos que actúan como servidor del protocolo de la capa de aplicación deseado (HTTP, HTTPS, DNS, ICMP...). También está diseñado de una manera que permitirá ejecutar múltiples servidores, envolventes y superposiciones al mismo tiempo, con una sola instancia de ms.py, aunque esta funcionalidad aún no está completamente implementada.mc.py): Utiliza módulos que actúan como cliente del protocolo de la capa de aplicación deseado (HTTP, HTTPS, DNS, ICMP...). Solo puede usar una superposición y un envolvente al mismo tiempo.Puedes ver algunas demostraciones de Mística en la siguiente lista de reproducción
El proyecto tiene muy pocas dependencias. Actualmente:
dnslib.```
python3.7 -m pip install pip --user
pip3.7 install dnslib --userSi no deseas instalar Python en tu sistema, puedes usar una de las siguientes versiones portátiles:
- https://www.anaconda.com/distribution/#download-section (para Windows, Linux y macOS)
- https://github.com/winpython/winpython/releases/tag/2.1.20190928 (solo para Windows)
## Módulos actuales
Módulos de superposición:
- `io`: Lee desde stdin, envía a través de la conexión SOTP. Lee desde la conexión SOTP, imprime a stdout
- `shell`: Ejecuta comandos recibidos a través de la conexión SOTP y devuelve la salida. Compatible con el módulo io.
- `tcpconnect`: Se conecta a un puerto TCP. Lee desde el socket, envía a través de la conexión SOTP. Lee desde la conexión SOTP, envía a través del socket.
- `tcplisten`: Se vincula a un puerto TCP. Lee desde el socket, envía a través de la conexión SOTP. Lee desde la conexión SOTP, envía a través del socket.
Módulos de envoltura:
- `dns`: Codifica/Decodifica datos en consultas/respuestas DNS usando diferentes métodos
- `http`: Codifica/Decodifica datos en solicitudes/respuestas HTTP o HTTPS usando diferentes métodos
- `icmp`: Codifica/Decodifica datos en solicitudes/respuestas de eco ICMP en la sección de datos
## Uso
`ms.py`: Servidor Mística
Así es como se ve el mensaje de ayuda:```txt
usage: ms.py [-h] [-k KEY] [-l LIST] [-m MODULES] [-w WRAPPER_ARGS]
[-o OVERLAY_ARGS] [-s WRAP_SERVER_ARGS]
Mistica server. Anything is a tunnel if you're brave enough. Run without
parameters to launch multi-handler mode.
optional arguments:
-h, --help show this help message and exit
-k KEY, --key KEY RC4 key used to encrypt the comunications
-l LIST, --list LIST Lists modules or parameters. Options are: all,
overlays, wrappers, <overlay name>, <wrapper name>
-m MODULES, --modules MODULES
Module pair in single-handler mode. format:
'overlay:wrapper'
-w WRAPPER_ARGS, --wrapper-args WRAPPER_ARGS
args for the selected overlay module (Single-handler
mode)
-o OVERLAY_ARGS, --overlay-args OVERLAY_ARGS
args for the selected wrapper module (Single-handler
mode)
-s WRAP_SERVER_ARGS, --wrap-server-args WRAP_SERVER_ARGS
args for the selected wrap server (Single-handler
mode)
-v, --verbose Level of verbosity in logger (no -v None, -v Low, -vv
Medium, -vvv High)
Hay dos modos principales en Mística Server:
ms.py se ejecuta con parámetros, permite que un único módulo de superposición interactúe con un único módulo envolvente.ms.py se ejecuta sin parámetros, el usuario ingresa a una consola interactiva, donde se pueden lanzar múltiples módulos de superposición y envolventes. Estos módulos podrán interactuar entre sí, con pocas restricciones.mc.py: Cliente de Mística
Así es como se ve el mensaje de ayuda:```txt usage: mc.py [-h] [-k KEY] [-l LIST] [-m MODULES] [-w WRAPPER_ARGS] [-o OVERLAY_ARGS]
Mistica client.
optional arguments: -h, --help show this help message and exit -k KEY, --key KEY RC4 key used to encrypt the comunications -l LIST, --list LIST Lists modules or parameters. Options are: all, overlays, wrappers, , -m MODULES, --modules MODULES Module pair. Format: 'overlay:wrapper' -w WRAPPER_ARGS, --wrapper-args WRAPPER_ARGS args for the selected overlay module -o OVERLAY_ARGS, --overlay-args OVERLAY_ARGS args for the selected wrapper module -v, --verbose Level of verbosity in logger (no -v None, -v Low, -vv Medium, -vvv High)
### Parámetros