
Erhält Klartext-Anmeldeinformationen von Active Directory, wenn Sie sich im internen Netzwerk befinden, aber außerhalb der AD-Umgebung
Das Eis brechen mit dieser niedlichen Active Directory-Umgebung da drüben. Wenn du kalt und einsam vor einer Active Directory-Party stehst, aber nicht einmal eine einzige AD-Anmeldeinformation hast, um mitzumachen, ist dieses Tool für dich gemacht.
Es automatisiert nacheinander fünf interne Netzwerkangriffe gegen Active Directory, um dir Klartext-Anmeldeinformationen zu liefern. Verwende die Option --auto, um nach dem Erlangen eines ersten Zugangs automatisch Domänenadministratorrechte zu erlangen.
Die folgenden Angriffe werden nacheinander durchgeführt, bis der vierte und fünfte Angriff parallel und unbegrenzt läuft.
Alle NetNTLMv2-Hashes, die in den folgenden Techniken erfasst werden, werden mit JohnTheRipper und einer AD-spezifischen Passwortliste von 1 Million Einträgen automatisch geknackt.
Es führt die obigen 5 Netzwerkangriffe in der Reihenfolge aus. Reverse-Brute-Forcing und SCF-Datei-Uploads gehen normalerweise ziemlich schnell, dann verweilt es bei Angriff 3, Responder.py, für standardmäßig 10 Minuten. Nach Ablauf dieser Zeit oder der vom Benutzer festgelegten Zeit fährt es mit den letzten beiden Angriffen fort, die parallel und unbegrenzt laufen.
Wenn Hosts gefunden werden, die Null-SMB-Sitzungen zulassen, verwendet icebreaker ridenum, um RID-Cycling für gültige Benutzernamen durchzuführen. Wenn du die Option "-d <somedomain.com>" verwendest, sammelt theHarvester alle E-Mail-Adressen von der angegebenen Website. Alle AD-kompatiblen E-Mail-Benutzernamen werden zur Reverse-Brute-Force-Benutzernamensliste hinzugefügt. Icebreaker verwendet die asyncio-Bibliothek, um den Reverse-Brute-Force mit dem Linux-Tool rpcclient unter Verwendung von 10 asynchronen Arbeitern durchzuführen.
Der SCF-Upload-Angriff missbraucht Shell-Befehlsdateien gegen anonym beschreibbare Netzwerkfreigaben. SCFs sind Dateien, die grundlegende Aktionen wie das Anzeigen des Desktops oder das Öffnen eines Datei-Explorer-Fensters ausführen können. Sie haben die seltsame Eigenschaft, dass du ihr Dateisymbol auf einen Netzwerkpfad setzen kannst. Wenn du diesen Netzwerkpfad auf deine eigene Maschine setzt, senden Benutzer, die die Dateifreigabe im Datei-Explorer öffnen, automatisch ihren NetNTLMv2-Passwort-Hash an dich. Icebreaker verwendet das Nmap-Skript smb-enum-shares, um anonym beschreibbare Freigaben zu finden, und generiert und lädt dann automatisch die mit Nutzlast versehene SCF-Datei hoch.
Angriff 3 verwendet Responder.py, um LLMNR-, NBT-NS- und mDNS-Multicast/Broadcast-Protokolle zu vergiften. Wenn Benutzer zu einem nicht vorhandenen Netzwerkpfad navigieren, sagt Responder ihnen, dass deine Angreifermaschine der richtige Pfad ist. Der NetNTLMv2-Passwort-Hash des Benutzers gehört jetzt dir. Responder erfasst auch Hashes, die über den SCF-Angriff gesendet werden, aber der nächste Angriff ist im Allgemeinen nützlicher, um SCF-Hashes zu erfassen, da er das Potenzial hat, den Hash zur Befehlsausführung zu verwenden.
SMB-Relay ist ein alter Netzwerkangriff, bei dem sich Angreifer zwischen den SMB-Client und den SMB-Server platzieren. Dies ermöglicht es Angreifern, NetNTLMv2-Hashes zu erfassen und an Hosts weiterzuleiten, die SMBv1 aktiviert und SMB-Signierung deaktiviert haben. ntlmrelayx.py aus der Impacket-Bibliothek wird zum Weiterleiten verwendet, während Responder.py für Man-in-the-Middle-SMB-Verbindungen verwendet wird. Sollte der SMB-Client-Benutzer administrative Rechte auf einem Host im Netzwerk haben, der SMB-Signierung deaktiviert hat, führt ntlmrelayx.py eine Befehlsausführung auf diesem Host durch.
Sobald ntlmrelayx einen erfassten Hash weiterleitet, führt es einen base64-kodierten PowerShell-Befehl aus, der zuerst einen administrativen Benutzer hinzufügt (icebreaker:P@ssword123456), dann eine obfuszierte und AMSI-umgehende Version von Mimikatz ausführt, gefolgt von einer obfuszierten und AMSI-umgehenden Version von Invoke-PowerDump. Die Ausgabe von Invoke-Mimikatz und Invoke-PowerDump wird nach Klartext-Passwörtern oder NTLM-Hashes durchsucht und dem Benutzer sowohl in der Standardausgabe als auch in der Datei found-passwords.txt bereitgestellt. NTLM-Hashes können im Gegensatz zu NetNTLMv2-Hashes wie ein Klartext-Passwort zur Authentifizierung an anderen AD-Hosts verwendet werden. Eine Einschränkung ist, dass seit Microsofts Patch KB2871997 nur das eingebaute RID-500-lokale Administratorkonto für Pass-the-Hash-Angriffe verwendet werden kann.
Der letzte Angriff verwendet das Tool mitm6, um einen Man-in-the-Middle-IPv6-DNS-Angriff gegen das gesamte Netzwerk durchzuführen. Dies zwingt Hosts im Netzwerk, die Maschine des Angreifers als ihren DNS-Server zu verwenden. Sobald dies als ihr DNS-Server festgelegt ist, liefert der Angreifer bösartige WPAD-Proxy-Einstellungsdateien an die Opfer und sammelt deren NetNTLMv2-Hashes. Diese Hashes werden mit ntlmrelayx.py für weitere Möglichkeiten der Remote-Codeausführung weitergeleitet. Eine Sache, die zu beachten ist, ist, dass dieser Angriff dazu neigt, Probleme im Netzwerk zu verursachen. Er verursacht oft Zertifikatsfehler auf den Client-Maschinen im Browser. Er wird das Netzwerk wahrscheinlich auch verlangsamen. Die Schönheit dieses Angriffs liegt jedoch darin, dass Windows-AD-Umgebungen standardmäßig verwundbar sind.
Wenn icebreaker mit dem Flag --auto [tmux/xterm] ausgeführt wird, startet icebreaker beim Erreichen von Angriff 4 Empire und DeathStar entweder in einer tmux-Sitzung oder in xterm-Fenstern. Mit dieser Option wird anstatt der Ausführung von Mimikatz auf dem Remote-Host, an den wir den Hash weitergeleitet haben, icebreaker einen administrativen Benutzer hinzufügen und dann den PowerShell-Launcher-Code von Empire ausführen, um einen Agenten auf dem Remote-Rechner zu erhalten. DeathStar verwendet diesen Agenten, um den Prozess der Erlangung von Domänenadministratorrechten zu automatisieren. Empire und DeathStar werden nicht geschlossen, wenn du icebreaker beendest.
Das Knacken von Passwörtern erfolgt mit JohnTheRipper und einer benutzerdefinierten Wortliste. Der Ursprung dieser Liste ist die merged.txt, die alle Passwörter aus dem SecLists-GitHub-Konto kombiniert. Die Wortliste wurde bereinigt und enthält keine Passwörter mit: nur Kleinbuchstaben, nur Großbuchstaben, nur Symbole, weniger als 7 Zeichen, mehr als 32 Zeichen. Diese Regeln entsprechen den Standardanforderungen an Active Directory-Passwörter und haben die Liste von 20 Millionen auf etwas über 1 Million reduziert, was das Knacken von Passwörtern extrem schnell macht.
Als root:
./setup.sh
pipenv install --three
pipenv shell
Du könntest nach dem Ausführen von pipenv install einen Fehler erhalten. Aktualisiere auf eine Version von pipenv höher als 11.9.0, falls das der Fall ist. Du kannst pipenv von GitHub klonen und einfach apt-get remove python-pipenv && python setup.py install aus dem Ordner ausführen.
Es gibt noch ein paar Fehler im Docker-Image zu beheben, daher wird dies wahrscheinlich bei dir einen Fehler verursachen, aber es ist fast fertig. Vom Git-Repo aus:
docker build --rm -t danmcinerney/icebreaker .
docker run danmcinery/icebreaker
Oder hänge die Befehle an, die du normalerweise an icebreaker anhängen würdest (vergiss nicht, Volumes zu mappen):
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
**Hinweis: Du wirst Ports für Listener mit dem -p <host>:<container> Flag von Docker mappen wollen.
Als root ausführen. Lese aus einer durch Zeilenumbrüche getrennten Liste von IP-Adressen (einzelne IPs oder CIDR-Bereiche) und anstatt dass ntlmrelayx einen Benutzer hinzufügt und Mimikatz auf dem Opfer ausführt, nachdem der Hash weitergeleitet wurde, führe einen benutzerdefinierten Befehl auf dem Opfer aus. In diesem Beispiel geben wir einen Befehl ähnlich dem, den Empire für einen PowerShell-Launcher-One-Liner geben könnte.
./icebreaker -l targets.txt -c "powershell -nop -w hidden -exec bypass -enc WwFk..."
Lese aus einer Hostliste, sage Responder, dass es das eth0-Interface anstelle des Standard-Gateway-Interfaces verwenden soll, lasse Responder 30m anstatt der üblichen 10m laufen und führe die Standard-Ntlmrelayx-Post-Relay-Befehle aus, um die SAM vom Opfer-Server zu extrahieren.
./icebreaker -l targets.txt -i eth0 -t 30 -c default
Verwende eine Nmap-XML-Ausgabedatei, überspringe alle fünf Angriffe und knacke keine Hashes automatisch, und verwende eine benutzerdefinierte Passwortliste für den Reverse-Brute-Force-Angriff (beachte, dass da dieses Beispiel Angriff 1 über '-s rid' überspringt, wird die angegebene Passwortliste nicht einmal verwendet; dies dient nur als Beispiel).
./icebreaker.py -x nmapscan.xml -s rid,scf,llmnr,relay,dns,crack -p /home/user/password-list.txt
Feuer-und-vergiss-Verwendung: Zieledatei eingeben, companydomain.com nach E-Mail-Benutzernamen durchsuchen, die dem Reverse-Brute-Force-Angriff hinzugefügt werden sollen, IPv6-DNS-Vergiftung von mitm6 überspringen und Empire und DeathStar entweder in tmux- oder xterm-Fenstern ausführen, sobald Angriff 4 beginnt, um automatisierte Domänenadministratorrechte zu erlangen. Das Ziel dieser Verwendung ist es, den Befehl am Montag um 9 Uhr zu starten und dann eine kurze, ununterbrochene Pause bis Freitag um 16:30 Uhr zu machen, zu welchem Zeitpunkt wir zu einer Domänenadministrator-Shell zurückkehren, die auf uns wartet. Wir überspringen Angriff 5 (mitm6), weil er manchmal Netzwerkprobleme verursachen kann und wir keine verärgerten Kunden wollen, die unsere hart verdiente Pause unterbrechen.
./icebreaker.py -l targets.txt -d companydomain.com -s dns --auto [tmux/xterm]