
Ein Open-Source-Schweizer Taschenmesser für beliebige Kommunikation über Anwendungsprotokolle
![]() |
|---|
| Mística-Logo von JoelGMSec |
Mística ist ein Tool, das das Einbetten von Daten in Felder der Anwendungsschichtprotokolle ermöglicht, mit dem Ziel, einen bidirektionalen Kanal für beliebige Kommunikation herzustellen. Derzeit wurden Kapselungen in HTTP-, HTTPS-, DNS- und ICMP-Protokolle implementiert, aber in naher Zukunft sollen weitere Protokolle hinzukommen.
Mística hat ein modulares Design, das auf einem benutzerdefinierten Transportprotokoll namens SOTP: Simple Overlay Transport Protocol aufbaut. Daten werden verschlüsselt, in Stücke zerlegt und in SOTP-Pakete verpackt. SOTP-Pakete werden kodiert und in das gewünschte Feld des Anwendungsprotokolls eingebettet und an das andere Ende gesendet.
Das Ziel der SOTP-Schicht ist es, ein generisches binäres Transportprotokoll mit minimalem Overhead anzubieten. SOTP-Pakete können leicht in legitime Anwendungsprotokolle versteckt oder eingebettet werden. Außerdem stellt SOTP sicher, dass Pakete vom anderen Ende empfangen werden, verschlüsselt die Daten mit RC4 (dies könnte sich in Zukunft ändern) und stellt durch einen Polling-Mechanismus sicher, dass Informationen transparent in beide Richtungen fließen können.
Module interagieren für unterschiedliche Zwecke mit der SOTP-Schicht:
Wrapper- und Overlay-Module arbeiten zusammen, um benutzerdefinierte Anwendungen zu erstellen, z.B. Eingabeumleitung über DNS oder entfernte Portweiterleitung über HTTP.
Místicas modulares Design ermöglicht eine einfache Entwicklung neuer Module. Außerdem kann der Benutzer problemlos vorhandene Module forken, um ein benutzerdefiniertes Feld oder eine Kodierung zu verwenden oder das Verhalten eines Overlay-Moduls zu ändern.
Es gibt zwei Hauptkomponenten der Software:
ms.py): Verwendet Module, die als Server des gewünschten Anwendungsschichtprotokolls (HTTP, HTTPS, DNS, ICMP...) fungieren. Es ist außerdem so konzipiert, dass mehrere Server, Wrapper und Overlays gleichzeitig mit nur einer Instanz von ms.py ausgeführt werden können, auch wenn diese Funktion noch nicht vollständig implementiert ist.mc.py): Verwendet Module, die als Client des gewünschten Anwendungsschichtprotokolls (HTTP, HTTPS, DNS, ICMP...) fungieren. Es kann immer nur ein Overlay und ein Wrapper gleichzeitig verwendet werden.Sie können einige Mística-Demos in der folgenden Playlist ansehen
Das Projekt hat sehr wenige Abhängigkeiten. Derzeit:
dnslib.```
python3.7 -m pip install pip --user
pip3.7 install dnslib --userWenn Sie Python nicht auf Ihrem System installieren möchten, können Sie eine der folgenden portablen Versionen verwenden:
- https://www.anaconda.com/distribution/#download-section (für Windows, Linux und macOS)
- https://github.com/winpython/winpython/releases/tag/2.1.20190928 (nur für Windows)
## Aktuelle Module
Overlay-Module:
- `io`: Liest von stdin, sendet über SOTP-Verbindung. Liest von SOTP-Verbindung, gibt auf stdout aus.
- `shell`: Führt über die SOTP-Verbindung empfangene Befehle aus und gibt die Ausgabe zurück. Kompatibel mit dem io-Modul.
- `tcpconnect`: Verbindet sich mit einem TCP-Port. Liest vom Socket, sendet über SOTP-Verbindung. Liest von SOTP-Verbindung, sendet über Socket.
- `tcplisten`: Bindet an einen TCP-Port. Liest vom Socket, sendet über SOTP-Verbindung. Liest von SOTP-Verbindung, sendet über Socket.
Wrap-Module:
- `dns`: Kodiert/Dekodiert Daten in DNS-Abfragen/-Antworten mit verschiedenen Methoden
- `http`: Kodiert/Dekodiert Daten in HTTP- oder HTTPS-Anfragen/-Antworten mit verschiedenen Methoden
- `icmp`: Kodiert/Dekodiert Daten in ICMP-Echo-Anfragen/-Antworten im Datenbereich
## Verwendung
`ms.py`: Mística-Server
So sieht die Hilfemeldung aus:```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)
Es gibt zwei Hauptmodi im Mística Server:
ms.py mit Parametern gestartet wird, ermöglicht es einem einzelnen Overlay-Modul, mit einem einzelnen Wrapper-Modul zu interagieren.ms.py ohne Parameter ausgeführt wird, gelangt der Benutzer in eine interaktive Konsole, in der mehrere Overlay- und Wrapper-Module gestartet werden können. Diese Module können mit wenigen Einschränkungen miteinander interagieren.mc.py: Mística-Client
So sieht die Hilfe-Nachricht aus:```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)
### Parameter