
Un couteau suisse open source pour la communication arbitraire sur les protocoles d'application.
![]() |
|---|
| Logo Mística par JoelGMSec |
Mística est un outil qui permet d'incorporer des données dans les champs de protocoles de la couche application, dans le but d'établir un canal bidirectionnel pour des communications arbitraires. Actuellement, l'encapsulation dans les protocoles HTTP, HTTPS, DNS et ICMP a été implémentée, mais d'autres protocoles devraient être introduits dans un avenir proche.
Mística a une conception modulaire, construite autour d'un protocole de transport personnalisé, appelé SOTP : Simple Overlay Transport Protocol. Les données sont chiffrées, fragmentées et placées dans des paquets SOTP. Les paquets SOTP sont encodés et intégrés dans le champ souhaité du protocole d'application, puis envoyés à l'autre extrémité.
Le but de la couche SOTP est d'offrir un protocole de transport binaire générique, avec un encombrement minimal. Les paquets SOTP peuvent être facilement cachés ou intégrés dans des protocoles d'application légitimes. De plus, SOTP garantit que les paquets sont reçus par l'autre extrémité, chiffre les données à l'aide de RC4 (cela pourrait changer à l'avenir), et assure que les informations peuvent circuler dans les deux sens de manière transparente, en utilisant un mécanisme de sondage.
Les modules interagissent avec la couche SOTP à différentes fins :
Les modules d'encapsulation et de superposition fonctionnent ensemble pour construire des applications personnalisées, par exemple la redirection d'entrée sur DNS ou la redirection de ports à distance sur HTTP.
La conception modulaire de Mística permet un développement facile de nouveaux modules. De plus, l'utilisateur peut facilement forker les modules existants afin d'utiliser un champ ou un encodage personnalisé, ou de modifier le comportement d'un module de superposition.
Il existe deux principaux logiciels :
ms.py) : Utilise des modules qui agissent comme le serveur du protocole de couche application souhaité (HTTP, HTTPS, DNS, ICMP...). Il est également conçu de manière à permettre l'exécution simultanée de plusieurs serveurs, wrappers et superpositions avec une seule instance de ms.py, bien que cette fonctionnalité ne soit pas encore entièrement implémentée.mc.py) : Utilise des modules qui agissent comme le client du protocole de couche application souhaité (HTTP, HTTPS, DNS, ICMP...). Il ne peut utiliser qu'une seule superposition et un seul wrapper à la fois.Vous pouvez voir quelques démos de Mística dans la playlist suivante
Le projet a très peu de dépendances. Actuellement :
dnslib.```
python3.7 -m pip install pip --user
pip3.7 install dnslib --userSi vous ne souhaitez pas installer python sur votre système, vous pouvez utiliser l'une des versions portables suivantes :
- https://www.anaconda.com/distribution/#download-section (pour Windows, Linux et macOS)
- https://github.com/winpython/winpython/releases/tag/2.1.20190928 (seulement pour Windows)
## Modules actuels
Modules d'encapsulation :
- `io` : Lit depuis stdin, envoie via la connexion SOTP. Lit depuis la connexion SOTP, imprime sur stdout
- `shell` : Exécute les commandes reçues via la connexion SOTP et retourne la sortie. Compatible avec le module io.
- `tcpconnect` : Se connecte à un port TCP. Lit depuis la socket, envoie via la connexion SOTP. Lit depuis la connexion SOTP, envoie via la socket.
- `tcplisten` : Se lie à un port TCP. Lit depuis la socket, envoie via la connexion SOTP. Lit depuis la connexion SOTP, envoie via la socket.
Modules d'enveloppement :
- `dns` : Encode/Décode les données dans les requêtes/réponses DNS en utilisant différentes méthodes
- `http` : Encode/Décode les données dans les requêtes/réponses HTTP ou HTTPS en utilisant différentes méthodes
- `icmp` : Encode/Décode les données dans les requêtes/réponses d'écho ICMP sur la section de données
## Utilisation
`ms.py` : Mística Server
Voici à quoi ressemble le message d'aide :```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)
Il existe deux modes principaux dans Mística Server :
ms.py est lancé avec des paramètres, il permet à un seul module de superposition d'interagir avec un seul module wrapper.ms.py est exécuté sans paramètres, l'utilisateur entre dans une console interactive, où plusieurs modules de superposition et wrapper peuvent être lancés. Ces modules pourront interagir entre eux, avec peu de restrictions.mc.py : Client Mística
Voici à quoi ressemble le message d'aide :```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)
### Paramètres