Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
LocalPotato_CVE-2023-21746 — Proof-of-Concept-Exploit für Windows lokale Berechtigungserweiterung (CVE-2023-21746), der die NTLM-lokale Authentifizierung ausnutzt, um über SMB-Freigabezugriff und DLL-Hijacking SYSTEM-Privilegien zu erlangen. | Kitploit
Tools/GitHubGitHub/muhammad-ali007/localpotato_cve-2023-21746
Privilege EscalationSchwachstellenanalyseExploitationLaterale BewegungPost-ExploitationPenetrationstestsPayload-EntwicklungBinary-Exploitation

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
GitHub
muhammad-ali007/localpotato_cve-2023-21746

LocalPotato_CVE-2023-21746

Proof-of-Concept-Exploit für Windows lokale Berechtigungserweiterung (CVE-2023-21746), der die NTLM-lokale Authentifizierung ausnutzt, um über SMB-Freigabezugriff und DLL-Hijacking SYSTEM-Privilegien zu erlangen.

Repository anzeigen
32vor 3 JahrenNoch nicht geprüft

Eine lokale Privilegienausweitung (LPE) Schwachstelle in Windows wurde Microsoft am 9. September 2022 von Andrea Pierini (@decoder_it) und Antonio Cocomazzi (@splinter_code) gemeldet. Die Schwachstelle würde einem Angreifer mit einem Konto mit niedrigen Berechtigungen auf einem Host ermöglichen, beliebige Dateien mit SYSTEM-Berechtigungen zu lesen/schreiben.

Obwohl die Schwachstelle an sich keinen direkten Befehlssystem als SYSTEM ermöglichen würde, können wir sie mit mehreren Vektoren kombinieren, um dieses Ergebnis zu erzielen. Praktischerweise wurde am 13. Februar ein weiterer Privilegienausweitungs-PoC von BlackArrowSec veröffentlicht, der den StorSvc-Dienst missbraucht und es einem Angreifer ermöglicht, Code als SYSTEM auszuführen, solange er eine DLL-Datei in ein beliebiges Verzeichnis im PATH schreiben kann.

Der LocalPotato-PoC nutzt einen Fehler in einem Sonderfall der NTLM-Authentifizierung namens NTLM-Lokale Authentifizierung aus, um einen privilegierten Prozess dazu zu bringen, eine Sitzung zu authentifizieren, die der Angreifer gegen den lokalen SMB-Server startet. Infolgedessen erhält der Angreifer eine Verbindung, die ihm Zugriff auf alle Freigaben mit den Berechtigungen des getäuschten Prozesses gewährt, einschließlich spezieller Freigaben wie C$ oder ADMIN$.

Der vom Exploit befolgte Prozess ist wie folgt:

  • Der Angreifer löst einen privilegierten Prozess aus, der eine Verbindung zu einem betrügerischen Server unter seiner Kontrolle herstellt. Dies funktioniert ähnlich wie frühere Potato-Exploits, bei denen ein nicht privilegierter Benutzer das Betriebssystem zwingen kann, Verbindungen zu erstellen, die einen privilegierten Benutzer (normalerweise SYSTEM) verwenden.
  • Der betrügerische Server instanziiert einen Sicherheitskontext A für die privilegierte Verbindung, sendet ihn aber nicht sofort zurück. Stattdessen startet der Angreifer einen betrügerischen Client, der gleichzeitig eine Verbindung zum lokalen SMB-Server (Windows-Dateifreigabe) mit seinen aktuellen, nicht privilegierten Anmeldeinformationen initiiert. Der Client sendet die Type1-Nachricht, um die Verbindung zu initiieren, und der Server antwortet durch Senden einer Type2-Nachricht mit der ID für einen neuen Sicherheitskontext B.
  • Der Angreifer tauscht die Kontext-IDs beider Verbindungen aus, sodass der privilegierte Prozess den Kontext der SMB-Serververbindung anstelle seines eigenen erhält. Infolgedessen verknüpft der privilegierte Client seinen Benutzer (SYSTEM) mit Sicherheitskontext B der vom Angreifer erstellten SMB-Verbindung. Dadurch kann der Client des Angreifers nun mit SYSTEM-Berechtigungen auf jede Netzwerkfreigabe zugreifen!

Durch eine privilegierte Verbindung zu SMB-Freigaben kann der Angreifer Dateien an jedem Speicherort auf dem Zielcomputer lesen oder schreiben. Obwohl dies nicht erlaubt, Befehle direkt gegen den angreifbaren Rechner auszuführen, werden wir dies mit einem anderen Angriffsvektor kombinieren, um dieses Ziel zu erreichen.

Beachten Sie, dass die Schwachstelle im NTLM-Protokoll und nicht im SMB-Server liegt, sodass dieser Angriffsvektor theoretisch gegen jeden Dienst verwendet werden könnte, der Authentifizierung über NTLM nutzt. In der Praxis müssen jedoch einige Einschränkungen bei der Auswahl des anzugreifenden Protokolls berücksichtigt werden. Der PoC verwendet den SMB-Server, um einige zusätzliche Schutzmaßnahmen zu umgehen, die für andere Protokolle gegen ähnliche Angriffsvektoren bestehen, und implementiert sogar einen schnellen Bypass, um den Exploit gegen den SMB-Server zum Laufen zu bringen. Originalbeitrag des Exploit-Autors – (https://decoder.cloud/2023/02/13/localpotato-when-swapping-the-context-leads-you-to-system/)

Bisher haben wir LocalPotato verwendet, um beliebige Dateien auf den Zielcomputer zu schreiben. Um eine privilegierte Shell zu erhalten, müssen wir noch herausfinden, wie wir das beliebige Schreiben nutzen können, um einen Befehl auszuführen.

Kürzlich wurde ein weiterer Privilegienausweitungsvektor gefunden, bei dem ein Angreifer eine fehlende DLL kapern kann, um beliebige Befehle mit SYSTEM-Berechtigungen auszuführen. Das einzige Problem bei diesem Vektor war, dass ein Angreifer eine DLL in den PATH des Systems schreiben müsste, um ihn auszulösen. Standardmäßig enthält der Windows PATH nur Verzeichnisse, in die nur privilegierte Konten schreiben können. Obwohl es möglich sein könnte, Maschinen zu finden, auf denen die Installation bestimmter Anwendungen die PATH-Variable geändert und die Maschine angreifbar gemacht hat, gilt der Angriffsvektor nur für bestimmte Szenarien. Die Kombination dieses Angriffs mit LocalPotato ermöglicht es uns, diese Einschränkung zu überwinden und einen voll funktionsfähigen Privilegienausweitungs-Exploit zu haben.

StorSvc und DLL-Hijacking Wie von BlackArrowSec entdeckt (https://github.com/blackarrowsec/redteam-research/tree/26e6fc0c0d30d364758fa11c2922064a9a7fd309/LPE via StorSvc), kann ein Angreifer einen RPC-Aufruf an die Methode "SvcRebootToFlashingMode" des Dienstes "StorSvc" senden, der wiederum den Versuch auslöst, eine fehlende DLL namens "SprintCSP.dll" zu laden. Falls Sie mit RPC nicht vertraut sind: Stellen Sie es sich wie eine API vor, die Funktionen bereitstellt, sodass sie remote verwendet werden können. In diesem Fall stellt der StorSvc-Dienst die Methode SvcRebootToFlashingMode zur Verfügung, die jeder mit Zugriff auf die Maschine aufrufen kann. Da StorSvc mit SYSTEM-Berechtigungen läuft, führt die Erstellung von SprintCSP.dll irgendwo im PATH dazu, dass sie geladen wird, sobald ein Aufruf von SvcRebootToFlashingMode erfolgt.

Kompilieren des Exploits Exploit-Link – (https://github.com/decoder-it/LocalPotato) Um diesen Exploit zu nutzen, müssen Sie zuerst beide bereitgestellten Dateien kompilieren:

  • SprintCSP.dll: Dies ist die fehlende DLL, die wir kapern werden. Wir müssen den Befehl ändern, um eine Reverse-Shell auszuführen.
  • RpcClient.exe: Dieses Programm löst den RPC-Aufruf an SvcRebootToFlashingMode aus. Je nach der von Ihnen angegebenen Windows-Version müssen Sie möglicherweise den Code des Exploits ein wenig bearbeiten, da verschiedene Windows-Versionen unterschiedliche Schnittstellenkennungen verwenden, um SvcRebootToFlashingMode bereitzustellen. Die Projekte für beide Dateien befinden sich im Verzeichnis "LPE via StorSvc".

Beginnen wir mit "RpcClient.exe". Wie bereits erwähnt, müssen wir den Exploit je nach Windows-Version des Zielcomputers ändern. Dazu müssen wir die ersten Zeilen von "LPE via StorSvc\RpcClient\RpcClient\storsvc_c.c" ändern, sodass das richtige Betriebssystem ausgewählt wird. Dadurch wird der Exploit so eingestellt, dass er die richtige RPC-Schnittstellenkennung verwendet. Nachdem der Code korrigiert wurde, öffnen wir eine Entwickler-Eingabeaufforderung und erstellen das Projekt mit dem folgenden Befehl: Befehle: C:\LPE via StorSvc\RpcClient> msbuild RpcClient.sln C:\LPE via StorSvc\RpcClient> move x64\Debug\RpcClient.exe C:\Users\user\Desktop\ (Die kompilierte ausführbare Datei befindet sich auf Ihrem Desktop.)

Um nun "SprintCSP.dll" zu kompilieren, müssen wir nur die Funktion "DoStuff()" in "C:\LPE via StorSvc\SprintCSP\SprintCSP\main.c" ändern, sodass sie einen Befehl ausführt, der uns privilegierten Zugriff auf die Maschine verschafft. Der Einfachheit halber lassen wir die DLL unseren aktuellen Benutzer zur Gruppe "Administratoren" hinzufügen. Wir können auch eine Reverse-Shell von diesem Ziel zu unserer Maschine erhalten. Wir kompilieren die DLL nun mit dem folgenden Befehl und verschieben das Ergebnis zurück auf unseren Desktop: Befehle: C:\LPE via StorSvc\SprintCSP> msbuild SprintCSP.sln C:\LPE via StorSvc\SprintCSP> move x64\Debug\SprintCSP.dll C:\Users\user\Desktop\

Wir sind nun bereit, den Exploit zu starten. Stellen Sie sicher, dass Sie die Dateien "LocalPotato.exe", "RpcClient.exe" und "SprintCSP.dll" haben.

  • Überprüfen wir zunächst, ob unser aktueller Benutzer nicht Teil der Gruppe "Administratoren" ist.
  • Um "StorSvc" erfolgreich zu exploiten, müssen wir "SprintCSP.dll" in ein beliebiges Verzeichnis im aktuellen PATH kopieren. Wir können den PATH mit dem folgenden Befehl überprüfen: C:> reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" -v Path
  • Wir werden das Verzeichnis %SystemRoot%\system32 anvisieren, das zu "C:\windows\system32" expandiert. Sie sollten jedoch jedes der Verzeichnisse verwenden können.
  • Mit LocalPotato können wir SprintCSP.dll in system32 kopieren, selbst wenn wir einen unprivilegierten Benutzer verwenden: C:\Users\user\Desktop> LocalPotato.exe -i SprintCSP.dll -o \Windows\System32\SprintCSP.dll
  • Nachdem unsere DLL vorhanden ist, können wir nun "RpcClient.exe" ausführen, um den Aufruf von "SvcRebootToFlashingMode" auszulösen und so die Payload in unserer DLL auszuführen. C:\Users\user\Desktop> RpcClient.exe
  • Um zu überprüfen, ob unser Exploit wie erwartet funktioniert hat, können wir prüfen, ob unser Benutzer jetzt Teil der Gruppe "Administratoren" ist. C:> net user user

Erkennung & Eindämmung

Erkennung Nachdem wir nun verstanden haben, wie der LocalPotato-Exploit funktioniert und wie er mit dem StorSrv-Dienst verkettet werden kann, um als SYSTEM Code auszuführen, ist es an der Zeit zu sehen, wie dies im System erkannt werden kann und wie solche Angriffe verhindert werden können.

YARA-Regel: Da dieser Angriff eine ausführbare Datei beinhaltet, die mit Argumenten im Befehlszeilenterminal ausgeführt wird, wären zwei gängige Methoden zur Erkennung dieser Aktivität die Verwendung des Mustermatching-Tools YARA zur Erkennung der Dateimuster und die Untersuchung der Ereignisse, die durch die Ausführung dieses Hacking-Tools localpotato.exe generiert werden. Da der Angriff das Hacking-Tool namens localpotato.exe verwendet, können wir eine YARA-Regel erstellen, um das Vorhandensein dieses Tools im System mithilfe von YARA oder anderen Erkennungstools wie THOR zu überprüfen, um den Host zu scannen. (Die YARA-Regel ist in diesem Repository enthalten. Diese minimale Regel sucht nach häufigen Zeichenfolgenmustern in der ausführbaren Datei localpotato.)

Sigma-Regel: SIGMA ist eine generische Signatursprache, mit der Erkennungsregeln basierend auf den in Ereignisprotokollen gefundenen Mustern geschrieben werden können. Um LocalPotato im Netzwerk zu erkennen, wird erwartet, dass eine zentralisierte Protokollüberwachung eingerichtet ist. Die folgende SIGMA-Regel stammt aus dem offiziellen SIGMA-Repository (https://github.com/SigmaHQ/sigma/blob/master/rules/windows/process_creation/proc_creation_win_hktl_localpotato.yml).

  • Erkennung von LocalPotato (Regel ist im Repository enthalten)
  • Erkennung von Storsvc- und SprintCSP.dll-Hijacking Wir haben gelernt, dass die LocalPotato-Schwachstelle mit Storsvc kombiniert wird, um SprintCSP.dll zu kapern und als SYSTEM auszuführen. Die folgende enthaltene SIGMA-Regel aus dem offiziellen GitHub kann verwendet werden, um diese Aktivität zu erkennen.

Wir können diese Sigma-Regeln in das vorhandene Erkennungs-/Überwachungstool konvertieren und die Ereignisprotokolle durchsuchen, um nach potenziellen Angriffen zu jagen.

Eindämmung

  • Patch-Updates: Der LocalPotato-Exploit zielt auf eine Schwachstelle im Windows-Betriebssystem ab. Stellen Sie sicher, dass alle Systeme mit den neuesten Sicherheitspatches aktualisiert sind, um zu verhindern, dass Angreifer diese Schwachstelle ausnutzen. Diese Schwachstelle betrifft nicht das gepatchte Betriebssystem.
  • Prinzip der geringsten Rechte: Eine Möglichkeit, Angreifer daran zu hindern, den LocalPotato-Exploit zu nutzen, ist die Implementierung des Prinzips der geringsten Rechte. Dies bedeutet, den Benutzerzugriff auf nur die Ressourcen zu beschränken, die sie zur Ausführung ihrer beruflichen Aufgaben benötigen. Dadurch ist es weniger wahrscheinlich, dass Angreifer die erhöhten Berechtigungen erlangen, die zur Ausführung des Exploits erforderlich sind.
  • Überwachung auf verdächtige Aktivitäten: Verwenden Sie Tools wie "Splunk", um verdächtige Aktivitäten in Ihrem Netzwerk zu überwachen. Achten Sie auf Anzeichen eines LocalPotato-Angriffs, wie ungewöhnliche Prozessaktivitäten oder Versuche, schädlichen Code auszuführen.
Tool herunterladen