
Récupère les identifiants en clair d'Active Directory si vous êtes sur le réseau interne mais en dehors de l'environnement AD.
Brisez la glace avec cet environnement Active Directory là-bas. Quand vous avez froid et que vous êtes seul à regarder une fête Active Directory sans posséder une seule information d'identification AD pour vous joindre à la fête, cet outil est pour vous.
Il automatise séquentiellement 5 attaques réseau internes contre Active Directory pour vous fournir des identifiants en texte clair. Utilisez l'option --auto pour acquérir automatiquement les privilèges d'administrateur de domaine après avoir obtenu un point d'appui.
Les attaques suivantes sont exécutées séquentiellement jusqu'à la quatrième et la cinquième attaque qui s'exécutent en parallèle et indéfiniment.
Tous les hachages NetNTLMv2 qui sont capturés dans les techniques ci-dessous sont automatiquement craqués avec JohnTheRipper et une liste de mots de passe spécifique à AD de 1 million de mots.
Il effectuera les 5 attaques réseau ci-dessus dans l'ordre. Le bruteforce inversé et les téléchargements de fichiers SCF sont généralement assez rapides, puis il s'attarde sur l'attaque 3, Responder.py, pendant 10 minutes par défaut. Après ce laps de temps, ou le temps spécifié par l'utilisateur, il passera aux deux dernières attaques qui s'exécutent en parallèle et indéfiniment.
Si des hôtes sont découverts permettant des sessions SMB nulles, icebreaker utilisera ridenum pour effectuer un cyclage RID pour trouver des noms d'utilisateurs valides. Si vous utilisez l'option "-d <somedomain.com>", theHarvester récupérera toutes les adresses e-mail du site web spécifié. Tous les noms d'utilisateurs d'e-mail compatibles AD seront ajoutés à la liste de noms d'utilisateurs du bruteforce inversé. Icebreaker utilise la bibliothèque asyncio pour effectuer le bruteforce inversé en utilisant l'outil Linux rpcclient avec 10 travailleurs asynchrones.
L'attaque de téléchargement SCF abuse des fichiers de commande Shell (Shell Command Files) contre les partages réseau anonymement inscriptibles. Les SCF sont des fichiers pouvant effectuer des actions de base comme afficher le bureau ou ouvrir une fenêtre de l'Explorateur de fichiers. Ils ont la curieuse propriété de permettre de définir leur icône de fichier sur un chemin réseau. Si vous définissez ce chemin réseau vers votre propre machine, les utilisateurs qui ouvrent le partage de fichiers dans l'Explorateur de fichiers enverront automatiquement leur hachage de mot de passe NetNTLMv2 vers vous. Icebreaker utilise le script Nmap smb-enum-shares pour trouver les partages anonymement inscriptibles, puis génère et télécharge automatiquement le SCF chargé.
L'attaque 3 utilise Responder.py pour empoisonner les protocoles de multidiffusion/diffusion LLMNR, NBT-NS et mDNS. Lorsque les utilisateurs naviguent vers un chemin réseau inexistant, Responder leur indiquera que votre machine attaquante est le bon chemin. Le hachage de mot de passe NetNTLMv2 de l'utilisateur est désormais à vous. Responder capturera les hachages envoyés via l'attaque SCF, mais l'attaque suivante est généralement plus utile pour capturer les hachages SCF car elle a le potentiel d'utiliser le hachage pour une exécution de commande.
Le relais SMB est une ancienne attaque réseau où les attaquants se placent entre le client SMB et le serveur SMB. Cela permet aux attaquants de capturer et de relayer les hachages NetNTLMv2 vers des hôtes qui ont SMBv1 activé et la signature SMB désactivée. ntlmrelayx.py de la bibliothèque Impacket est utilisé pour le relais tandis que Responder.py est utilisé pour l'attaque de l'homme du milieu sur les connexions SMB. Si l'utilisateur client SMB a des droits d'administration sur un hôte du réseau qui a la signature SMB désactivée, ntlmrelayx.py effectuera une exécution de commande sur cet hôte.
Une fois que ntlmrelayx relaie un hachage capturé, il exécutera une commande PowerShell encodée en base64 qui ajoute d'abord un utilisateur administrateur (icebreaker:P@ssword123456), puis exécute une version obfusquée et contournant AMSI de Mimikatz, suivie d'une version obfusquée et contournant AMSI d'Invoke-PowerDump. La sortie d'Invoke-Mimikatz et d'Invoke-PowerDump est analysée pour les mots de passe en clair ou les hachages NTLM et délivrée à l'utilisateur dans la sortie standard ainsi que dans le fichier found-passwords.txt. Les hachages NTLM, contrairement aux hachages NetNTLMv2, peuvent être utilisés comme un mot de passe en clair pour l'authentification auprès d'autres hôtes AD. La seule réserve est que depuis le correctif KB2871997 de Microsoft, seul le compte administrateur local intégré RID 500 peut être utilisé dans les attaques pass-the-hash.
L'attaque finale utilise l'outil mitm6 pour effectuer une attaque DNS IPv6 de l'homme du milieu sur tout le réseau. Cela force les hôtes du réseau à utiliser la machine de l'attaquant comme serveur DNS. Une fois définis comme leur serveur DNS, l'attaquant sert des fichiers de paramètres proxy WPAD malveillants aux victimes et collecte leurs hachages NetNTLMv2. Ces hachages sont relayés en utilisant ntlmrelayx.py pour d'autres possibilités d'exécution de code à distance. Une chose à noter est que cette attaque est sujette à causer des problèmes sur le réseau. Elle provoque souvent des erreurs de certificat sur les machines clientes dans le navigateur. Elle ralentira également probablement le réseau. Cependant, la beauté de cette attaque est que les environnements Windows AD sont vulnérables par défaut.
Si icebreaker est exécuté avec le drapeau --auto [tmux/xterm], alors en atteignant l'attaque 4, icebreaker lancera Empire et DeathStar dans une session tmux ou des fenêtres xterm. Avec cette option, au lieu d'exécuter mimikatz sur l'hôte distant auquel nous avons relayé le hachage, icebreaker ajoutera un utilisateur administrateur puis exécutera le code de lancement PowerShell d'Empire pour obtenir un agent sur la machine distante. DeathStar utilisera cet agent pour automatiser le processus d'obtention des droits d'administrateur de domaine. Empire et DeathStar ne se fermeront pas lorsque vous quitterez icebreaker.
Le cassage de mots de passe est effectué avec JohnTheRipper et une liste de mots personnalisée. L'origine de cette liste provient de merged.txt qui contient tous les mots de passe du compte GitHub SecLists combinés. La liste de mots a été élaguée et ne contient aucun mot de passe avec : tout en minuscules, tout en majuscules, uniquement des symboles, moins de 7 caractères, plus de 32 caractères. Ces règles sont conformes aux exigences par défaut des mots de passe Active Directory et ont réduit la liste de 20 millions à un peu plus d'un million, ce qui rend le cassage de mots de passe extrêmement rapide.
En tant que root :
./setup.sh
pipenv install --three
pipenv shell
Vous pourriez obtenir une erreur après avoir exécuté pipenv install. Mettez à jour vers une version de pipenv supérieure à 11.9.0 si c'est le cas. Vous pouvez cloner pipenv depuis github et simplement apt-get remove python-pipenv && python setup.py install depuis le dossier.
Il reste encore quelques bugs à résoudre avec l'image docker, donc cela risque de générer une erreur pour vous, mais c'est presque fini. Depuis le dépôt Git :
docker build --rm -t danmcinerney/icebreaker .
docker run danmcinery/icebreaker
Ou ajoutez les commandes que vous ajouteriez normalement à icebreaker (n'oubliez pas de mapper les volumes) :
docker run -v $(pwd)/logs:/icebreaker/logs -v $(pwd)/hashes:/icebreaker/hashes -v $(pwd)/icebreaker-scan.xml:/icebreaker/icebreaker-scan.xml -v $(pwd)/submodules:/icebreaker/submodules -e PYTHONUNBUFFERED=0 danmcinerney/icebreaker -x icebreaker-scan.xml
**Remarque : Vous voudrez mapper les ports pour les écouteurs avec le drapeau docker -p <host>:<container>.
Exécutez en tant que root. Lisez à partir d'une liste d'adresses IP séparées par des sauts de ligne (IP uniques ou plages CIDR) et au lieu d'avoir ntlmrelayx qui ajoute un utilisateur et exécute mimikatz sur la victime lors du relais de hachage, faites-lui exécuter une commande personnalisée sur la machine victime. Dans cet exemple, nous lui donnons une commande similaire à ce qu'Empire pourrait nous donner pour un one-liner de lanceur PowerShell.
./icebreaker -l targets.txt -c "powershell -nop -w hidden -exec bypass -enc WwFk..."
Lisez à partir d'une liste d'hôtes, dites à Responder d'utiliser l'interface eth0 plutôt que l'interface de passerelle par défaut, laissez Responder fonctionner pendant 30 minutes au lieu des 10 minutes habituelles, et exécutez les commandes post-relais par défaut de ntlmrelayx pour vider la SAM du serveur victime.
./icebreaker -l targets.txt -i eth0 -t 30 -c default
Utilisez un fichier de sortie XML Nmap, sautez les cinq attaques et ne craquez pas automatiquement les hachages, et utilisez une liste de mots de passe personnalisée pour l'attaque de bruteforce inversé (notez que puisque cet exemple saute l'attaque 1 via '-s rid', la liste de mots de passe spécifiée ne sera même pas utilisée ; ceci est juste utilisé comme exemple)
./icebreaker.py -x nmapscan.xml -s rid,scf,llmnr,relay,dns,crack -p /home/user/password-list.txt
Utilisation "fire-and-forget" : entrez un fichier de cibles, récupérez les noms d'utilisateurs d'e-mail de companydomain.com pour les ajouter à l'attaque de bruteforce inversé, sautez l'empoisonnement DNS IPv6 de mitm6, et exécutez Empire et DeathStar dans des fenêtres tmux ou xterm une fois l'attaque 4 commencée afin d'obtenir un administrateur de domaine automatisé. Le but de cette utilisation est de lancer la commande le lundi à 9h puis de prendre une courte pause ininterrompue jusqu'au vendredi à 16h30, moment auquel nous revenons avec un shell administrateur de domaine qui nous attend. Nous sautons l'attaque 5 (mitm6) car elle peut parfois causer des problèmes réseau et nous ne voulons pas que des clients en colère interrompent notre pause durement gagnée.
./icebreaker.py -l targets.txt -d companydomain.com -s dns --auto [tmux/xterm]