
Un coltellino svizzero open source per la comunicazione arbitraria su protocolli applicativi
![]() |
|---|
| Logo di Mística by JoelGMSec |
Mística è uno strumento che permette di incorporare dati nei campi dei protocolli del livello applicativo, con l'obiettivo di stabilire un canale bidirezionale per comunicazioni arbitrarie. Attualmente, è stata implementata l'incapsulazione nei protocolli HTTP, HTTPS, DNS e ICMP, ma si prevede che siano introdotti ulteriori protocolli in un futuro prossimo.
Mística ha un design modulare, costruito attorno a un protocollo di trasporto personalizzato, chiamato SOTP: Simple Overlay Transport Protocol. I dati vengono crittografati, suddivisi in blocchi e inseriti in pacchetti SOTP. I pacchetti SOTP vengono codificati e incorporati nel campo desiderato del protocollo applicativo, e inviati all'altra estremità.
L'obiettivo del livello SOTP è offrire un protocollo di trasporto binario generico, con overhead minimo. I pacchetti SOTP possono essere facilmente nascosti o incorporati in protocolli applicativi legittimi. Inoltre, SOTP garantisce che i pacchetti vengano ricevuti dall'altra estremità, crittografa i dati usando RC4 (questo potrebbe cambiare in futuro), e assicura che le informazioni possano fluire in entrambe le direzioni in modo trasparente, utilizzando un meccanismo di polling.
I moduli interagiscono con il livello SOTP per scopi diversi:
I moduli wrapper e overlay lavorano insieme per costruire applicazioni personalizzate, ad esempio reindirizzamento dell'input su DNS o port forwarding remoto su HTTP.
Il design modulare di Mística permette lo sviluppo facile di nuovi moduli. Inoltre, l'utente può facilmente creare fork dei moduli correnti per utilizzare un campo o una codifica personalizzata, o modificare il comportamento di un modulo overlay.
Ci sono due componenti software principali:
ms.py): Utilizza moduli che fungono da server del protocollo desiderato del livello applicativo (HTTP, HTTPS, DNS, ICMP...). È anche progettato in modo da permettere l'esecuzione simultanea di più server, wrapper e overlay con una sola istanza di ms.py, sebbene questa funzionalità non sia ancora completamente implementata.mc.py): Utilizza moduli che fungono da client del protocollo desiderato del livello applicativo (HTTP, HTTPS, DNS, ICMP...). Può utilizzare solo un overlay e un wrapper alla volta.Puoi vedere alcune demo di Mística nella seguente playlist
Il progetto ha pochissime dipendenze. Attualmente:
dnslib.```
python3.7 -m pip install pip --user
pip3.7 install dnslib --userSe non vuoi installare python sul tuo sistema, puoi utilizzare una delle seguenti versioni portatili:
- https://www.anaconda.com/distribution/#download-section (for Windows, Linux and macOS)
- https://github.com/winpython/winpython/releases/tag/2.1.20190928 (only for Windows)
## Moduli correnti
Moduli overlay:
- `io`: Legge da stdin, invia attraverso connessione SOTP. Legge dalla connessione SOTP, stampa su stdout
- `shell`: Esegue comandi ricevuti attraverso la connessione SOTP e restituisce l'output. Compatibile con il modulo io.
- `tcpconnect`: Si connette a una porta TCP. Legge dal socket, invia attraverso connessione SOTP. Legge dalla connessione SOTP, invia attraverso il socket.
- `tcplisten`: Si lega a una porta TCP. Legge dal socket, invia attraverso connessione SOTP. Legge dalla connessione SOTP, invia attraverso il socket.
Moduli wrap:
- `dns`: Codifica/Decodifica dati in query/risposte DNS utilizzando diversi metodi
- `http`: Codifica/Decodifica dati in richieste/risposte HTTP o HTTPS utilizzando diversi metodi
- `icmp`: Codifica/Decodifica dati in richieste/risposte echo ICMP nella sezione dati
## Utilizzo
`ms.py`: Mística Server
Ecco come appare il messaggio di aiuto:```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)
Ci sono due modalità principali in Mística Server:
ms.py viene lanciato con parametri, permette a un singolo modulo overlay di interagire con un singolo modulo wrapper.ms.py viene eseguito senza parametri, l'utente entra in una console interattiva, dove possono essere lanciati molteplici moduli overlay e wrapper. Questi moduli potranno interagire tra loro, con poche restrizioni.mc.py: Client Mística
Ecco come appare il messaggio di aiuto:```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)
### Parametri