
Um canivete suíço de código aberto para comunicação arbitrária sobre protocolos de aplicação.
![]() |
|---|
| Logotipo da Mística por JoelGMSec |
Mística é uma ferramenta que permite incorporar dados em campos de protocolos da camada de aplicação, com o objetivo de estabelecer um canal bidirecional para comunicações arbitrárias. Atualmente, a encapsulação nos protocolos HTTP, HTTPS, DNS e ICMP foi implementada, mas espera-se que mais protocolos sejam introduzidos em breve.
Mística possui um design modular, construído em torno de um protocolo de transporte personalizado, chamado SOTP: Simple Overlay Transport Protocol. Os dados são criptografados, fragmentados e colocados em pacotes SOTP. Os pacotes SOTP são codificados e incorporados no campo desejado do protocolo de aplicação e enviados para a outra extremidade.
O objetivo da camada SOTP é oferecer um protocolo de transporte binário genérico, com sobrecarga mínima. Os pacotes SOTP podem ser facilmente ocultados ou incorporados em protocolos de aplicação legítimos. Além disso, o SOTP garante que os pacotes sejam recebidos pela outra extremidade, criptografa os dados usando RC4 (isso pode mudar no futuro) e garante que as informações possam fluir em ambos os sentidos de forma transparente, usando um mecanismo de polling.
Os módulos interagem com a camada SOTP para diferentes propósitos:
Os módulos wrapper e overlay trabalham juntos para construir aplicações personalizadas, como redirecionamento de entrada sobre DNS ou encaminhamento de portas remoto sobre HTTP.
O design modular da Mística permite o fácil desenvolvimento de novos módulos. Além disso, o usuário pode facilmente bifurcar módulos existentes para usar algum campo ou codificação personalizada ou modificar o comportamento de um módulo overlay.
Existem duas principais peças de software:
ms.py): Usa módulos que atuam como servidor do protocolo da camada de aplicação desejado (HTTP, HTTPS, DNS, ICMP...). Também é projetado de forma a permitir que vários servidores, wrappers e overlays sejam executados ao mesmo tempo, com apenas uma instância do ms.py, embora esse recurso ainda não esteja totalmente implementado.mc.py): Usa módulos que atuam como cliente do protocolo da camada de aplicação desejado (HTTP, HTTPS, DNS, ICMP...). Pode usar apenas um overlay e um wrapper ao mesmo tempo.Você pode ver algumas demonstrações da Mística na seguinte playlist
O projeto tem muito poucas dependências. Atualmente:
dnslib.```
python3.7 -m pip install pip --user
pip3.7 install dnslib --userSe não quiser instalar o python no seu sistema, você pode usar uma das seguintes versões portáteis:
- https://www.anaconda.com/distribution/#download-section (para Windows, Linux e macOS)
- https://github.com/winpython/winpython/releases/tag/2.1.20190928 (apenas para Windows)
## Módulos atuais
Módulos de sobreposição:
- `io`: Lê do stdin, envia através da conexão SOTP. Lê da conexão SOTP, imprime no stdout
- `shell`: Executa comandos recebidos através da conexão SOTP e retorna a saída. Compatível com o módulo io.
- `tcpconnect`: Conecta-se à porta TCP. Lê do socket, envia através da conexão SOTP. Lê da conexão SOTP, envia através do socket.
- `tcplisten`: Liga-se à porta TCP. Lê do socket, envia através da conexão SOTP. Lê da conexão SOTP, envia através do socket.
Módulos de encapsulamento:
- `dns`: Codifica/Decodifica dados em consultas/respostas DNS usando diferentes métodos
- `http`: Codifica/Decodifica dados em requisições/respostas HTTP ou HTTPS usando diferentes métodos
- `icmp`: Codifica/Decodifica dados em requisições/respostas de eco ICMP na seção de dados
## Uso
`ms.py`: Servidor Mística
Veja como a mensagem de ajuda se parece:```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)
Existem dois modos principais no Mística Server:
ms.py é iniciado com parâmetros, ele permite que um único módulo overlay interaja com um único módulo wrapper.ms.py é executado sem parâmetros, o usuário entra em um console interativo, onde vários módulos overlay e wrapper podem ser iniciados. Esses módulos poderão interagir entre si, com poucas restrições.mc.py: Cliente Mística
Aqui está como a mensagem de ajuda se parece:```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