DLL-Spoofing (DLL-Hijacking)

Hallo alle zusammen. Derzeit hat OTUS ein Set für den Start des aktualisierten Reverse Engineering- Kurses im April geöffnet . Im Vorfeld des Kursbeginns haben wir traditionell eine Übersetzung von interessantem Material vorbereitet.




Im Windows-Betriebssystem suchen Anwendungen und Dienste beim Start nach den DLLs, die für deren ordnungsgemäße Funktion erforderlich sind. Wenn diese DLLs nicht gefunden werden oder ihr Laden auf unsichere Weise implementiert wird (DLLs werden aufgerufen, ohne den vollständigen Pfad zu verwenden), können Sie die Berechtigungen erhöhen, indem Sie die Anwendung zwingen, eine schädliche DLL-Datei herunterzuladen und auszuführen.

Es ist zu beachten, dass die Suche in der folgenden Reihenfolge ausgeführt wird, wenn die Anwendung die DLL herunterladen muss:

  • Das Verzeichnis, aus dem die Anwendung heruntergeladen wird
  • C: \ Windows \ System32
  • C: \ Windows \ System
  • C: \ Windows
  • Aktuelles Arbeitsverzeichnis
  • Verzeichnisse in der Umgebungsvariablen PATH des Benutzers
  • Verzeichnisse in der Umgebungsvariablen PATH

Schritt 1 - Prozesse mit fehlenden DLLs


Der erste Schritt besteht darin, Prozesse zu finden, die auf SYSTEM ausgeführt werden, und zu versuchen, die fehlende DLL zu laden. Dies kann mithilfe von Sysinternals Process Monitor erfolgen, indem der unten


aufgeführte Filter angewendet wird : Procmon-Filter zur Suche nach Prozessen, die fehlende DLLs herunterladen

Process Monitor identifiziert die fehlenden DLLs, die die Anwendung zu laden versucht, und zeigt den tatsächlichen Pfad an, nach dem diese DLL gesucht wird.


Ein Prozess mit einer fehlenden DLL

In diesem Beispiel verfügt ein Prozess Bginfo.exenicht über mehrere DLL-Dateien, mit denen Berechtigungen erhöht werden können.

Schritt 2 - Ordnerberechtigungen


Wenn die Software C:\stattdessen im Verzeichnis installiert ist C:\Program Files, haben authentifizierte Benutzer standardmäßig Schreibzugriff auf dieses Verzeichnis. Außerdem wird der PATH-Variablen normalerweise Software wie Perl, Python, Ruby usw. hinzugefügt. Dies ermöglicht es, die Berechtigungen zu erhöhen, da der Benutzer eine schädliche DLL in dieses Verzeichnis schreiben kann, die beim nächsten Start des Prozesses geladen wird und die Rechte für diesen Prozess erhält.


Schwache Ordnerberechtigungen

Schritt 3 - DLL ersetzen


Mit Metasploit können Sie eine Payload-DLL als Sitzung mit Dienstberechtigungen generieren.


Generierung bösartiger DLLs

Der Prozess wird Bginfo.exeunter SYSTEM gestartet. Nach dem Neustart verfügt die böswillige DLL daher über dieselben Berechtigungen, da die DLL von diesem Prozess geladen und ausgeführt wird.


Der Prozess wird unter SYSTEM gestartet.

Wie oben angegeben, kann der Prozess nicht gefunden Riched32.dllwerden. pentestlab.dllSie müssen ihn daher in umbenennen Riched32.dll. Dies verwirrt die Anwendung und versucht, die DLL zu laden, da sie glaubt, dass es sich um eine legitime DLL handelt. Die schädliche DLL muss in einem der Ordner abgelegt werden, in denen Windows nach DLL-Dateien sucht.


Schädliche DLL umbenannt und gehostet

Wie Sie unten sehen können, wird beim Neustart des Dienstes mithilfe der Spoofing-DLL eine Meterpreter-Sitzung mit SYSTEM-Berechtigungen geöffnet.


Metasploit - Eskalation von Berechtigungen durch Spoofing von DLL

Powersploit


Das Ersetzen von DLLs kann über PowerSploit erfolgen. In drei Modulen können Sie Dienste mit fehlenden DLLs suchen, Ordner mit Änderungsrechten suchen und DLLs generieren.

Das Modul Find-ProcessDLLHijackfindet alle Prozesse im System, die versuchen, die fehlende DLL zu laden.


PowerSploit - Erkennen von Prozessen mit fehlenden DLLs

Der nächste Schritt besteht darin, die Ordner zu identifizieren, in denen der Benutzer den Inhalt ändern kann. Es werden Ordner gefunden, in denen schädliche DLLs abgelegt werden sollen.


Suchen von Ordnern mit Änderungsrechten

Der letzte Schritt besteht darin, eine schädliche DLL in einem der Ordner mit den Berechtigungen "Ändern" (M) zu erstellen.


Erstellen Sie eine DLL in einem Ordner mit schwachen Berechtigungen

Fazit


Um Berechtigungen durch eine Spoofing-DLL erhöhen zu können, müssen die folgenden Bedingungen erfüllt sein:

  • Berechtigungen zum Schreiben in den Systemordner
  • Installieren der Software in einem anderen Verzeichnis als dem Standardverzeichnis
  • Ein Dienst, der unter SYSTEM ausgeführt wird und versucht, eine fehlende DLL zu laden
  • Neustart des Dienstes

Das Auffinden von Anwendungen, in denen nicht installiert Program Filesist, ist nicht schwierig, da sich neben Anwendungen von Drittanbietern, die nicht auf diesem Pfad installiert werden müssen, verschiedene benutzerdefinierte Softwareprogramme außerhalb dieser geschützten Ordner befinden. Darüber hinaus gibt es eine Reihe von Windows-Diensten wie IKEEXT (IKE- und AuthIP-IPSec-Schlüsselmodule) mit fehlenden DLLs ( wlbsctrl.dll), die entweder manuell oder automatisch verwendet werden können. Es gibt ein spezielles Metasploit-Modul für IKEEXT:

exploit/windows/local/ikeext_service



.



All Articles