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
siofra — Simuliert den Windows-PE-Loader, um DLL-Hijacking-Schwachstellen zu identifizieren, generiert weaponisierte DLLs mit Shellcode-Payloads und erkennt UAC-Auto-Elevation-Bypasses. | Kitploit
Tools/GitHubGitHub/cybereason/siofra
Privilege EscalationSchwachstellenscannerPayload-GenerierungSchwachstellenanalyseBinäranalyseShellcode-GenerierungBinary-Exploitation
GitHubcybereason/siofra

siofra

Simuliert den Windows-PE-Loader, um DLL-Hijacking-Schwachstellen zu identifizieren, generiert weaponisierte DLLs mit Shellcode-Payloads und erkennt UAC-Auto-Elevation-Bypasses.

Repository anzeigen
51185vor 8 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Zusammenfassung

Siofra ist ein Tool zur Identifizierung und Ausnutzung von DLL-Hijacking-Schwachstellen in Windows-Programmen. Es ist in der Lage, den Windows-Loader zu simulieren, um Einblick in alle Abhängigkeiten (und entsprechenden Schwachstellen) einer PE-Datei auf der Festplatte zu geben, oder alternativ in ein Imagefile im Speicher, das einem aktiven Prozess entspricht. Noch wichtiger ist, dass das Tool die Möglichkeit bietet, einfach DLLs zu erzeugen, um diese Arten von Schwachstellen per PE-Infektion mit dynamischer Shellcode-Erstellung auszunutzen. Diese infizierten DLLs behalten den Code (DllMain, exportierte Funktionen) sowie die Ressourcen einer DLL, um die Funktionalität der Anwendung, die sie lädt, nahtlos zu erhalten, und ermöglichen dem Forscher gleichzeitig, ein ausführbares Payload anzugeben, das entweder als separater Prozess ausgeführt oder als Modul in das Ziel geladen wird. Darüber hinaus enthält das Tool automatisierte Methoden, um UAC-Auto-Elevation-Kriterien mit der zuvor genannten Funktionalität zu kombinieren und so nach UAC-Bypass-Schwachstellen zu suchen.

Schwachstellen

Derzeit gibt es eine sehr große Anzahl von Schwachstellen, die dieses Tool offenlegt. Beim Testen dieses Tools bin ich nur auf einige wenige Anwendungen gestoßen, die nicht verwundbar waren – von Hunderten, gegen die ich getestet habe. Beachten Sie, dass diese Schwachstellen trotz SafeDllSearchMode ausgenutzt werden können. Ein häufiges Missverständnis entsteht dadurch, dass das „aktuelle Verzeichnis“ (durch SafeDllSearchMode behoben) mit dem „Anwendungsverzeichnis“ (dem Ordner, der die .exe selbst enthält) verwechselt wird. Die überwiegende Mehrheit der derzeit in Windows-Programmen vorhandenen DLL-Hijacking-Schwachstellen stammt aus dem Anwendungsverzeichnis (das an erster Stelle der Windows-Suchreihenfolge steht). Einige Highlights sind unten in der Ausgabe aufgeführt, die der Scanner im Tool erzeugt. Diese Schwachstellen wurden zuletzt Mitte Juli 2017 getestet.

  • Anwendungsname: Internet Explorer
  • Getestetes Betriebssystem: Windows 10 x64 Home/Pro
  • Befehl/Ausgabe:

Siofra64.exe --mode file-scan -f "c:\Program Files\Internet Explorer\iexplore.exe" --enum-dependency --dll-hijack

======== c:\Program Files\Internet Explorer\iexplore.exe [64-bit PE] ======== iexplore.exe USER32.dll [KnownDLL] win32u.dll [Base] api-ms-win-core-privateprofile-l1-1-1.dll [API set] kernel32.dll [KnownDLL] GDI32.dll [KnownDLL] api-ms-win-gdi-internal-uap-l1-1-0.dll [API set] gdi32full.dll [Base] msvcp_win.dll [Base] api-ms-win-crt-string-l1-1-0.dll [API set] ucrtbase.dll [Base] msvcrt.dll [KnownDLL] api-ms-win-downlevel-shell32-l1-1-0.dll [API set] shcore.dll [KnownDLL] RPCRT4.dll [KnownDLL] combase.dll [KnownDLL] bcryptPrimitives.dll [Base] ADVAPI32.dll [KnownDLL] api-ms-win-eventing-controller-l1-1-0.dll [API set] sechost.dll [KnownDLL] iertutil.dll [!]

[!] Module iertutil.dll vulnerable at c:\Program Files\Internet Explorer\iertutil.dll (real path: C:\WINDOWS\system32\iertutil.dll)

  • Anwendungsname: Windows Defender
  • Getestetes Betriebssystem: Windows 10 x64 Home/Pro
  • Befehl/Ausgabe:

Siofra64.exe --mode file-scan -f "c:\Program Files\Windows Defender\MpCmdRun.exe" --enum-dependency --dll-hijack

======== c:\Program Files\Windows Defender\MpCmdRun.exe [64-bit PE] ======== MpCmdRun.exe msvcrt.dll [KnownDLL] KERNEL32.dll [KnownDLL] OLEAUT32.dll [KnownDLL] msvcp_win.dll [Base] api-ms-win-crt-string-l1-1-0.dll [API set] ucrtbase.dll [Base] combase.dll [KnownDLL] RPCRT4.dll [KnownDLL] bcryptPrimitives.dll [Base] ADVAPI32.dll [KnownDLL] api-ms-win-eventing-controller-l1-1-0.dll [API set] sechost.dll [KnownDLL] OLE32.dll [KnownDLL] GDI32.dll [KnownDLL] api-ms-win-gdi-internal-uap-l1-1-0.dll [API set] gdi32full.dll [Base] USER32.dll [KnownDLL] win32u.dll [Base] SspiCli.dll [!] mpclient.dll [!] CRYPT32.dll [Base] MSASN1.dll [Base] WINTRUST.dll [Base]

[!] Module SspiCli.dll vulnerable at c:\Program Files\Windows Defender\SspiCli.dll (real path: C:\WINDOWS\system32\SspiCli.dll)

  • Anwendungsname: WMI
  • Getestetes Betriebssystem: Windows 10 x64 Home/Pro
  • Befehl/Ausgabe:

Siofra64.exe --mode file-scan -f "c:\WINDOWS\System32\wbem\wmiprvse.exe" --enum-dependency --dll-hijack

======== c:\WINDOWS\System32\wbem\wmiprvse.exe [64-bit PE] ======== wmiprvse.exe msvcrt.dll [KnownDLL] FastProx.dll [!] wbemcomn.dll [!] bcrypt.dll [!] WS2_32.dll [KnownDLL] api-ms-win-eventing-obsolete-l1-1-0.dll [API set] sechost.dll [KnownDLL] RPCRT4.dll [KnownDLL] api-ms-win-core-heap-obsolete-l1-1-0.dll [API set] kernel32.dll [KnownDLL] NCObjAPI.DLL [!]

[!] Module wbemcomn.dll vulnerable at c:\WINDOWS\System32\wbem\wbemcomn.dll (real path: C:\WINDOWS\system32\wbemcomn.dll) [!] Module bcrypt.dll vulnerable at c:\WINDOWS\System32\wbem\bcrypt.dll (real path: C:\WINDOWS\system32\bcrypt.dll) [!] Module NCObjAPI.DLL vulnerable at c:\WINDOWS\System32\wbem\NCObjAPI.DLL (real path: C:\WINDOWS\system32\NCObjAPI.DLL)

  • Anwendungsname: Windows Search Indexer/Search Protocol Host
  • Getestetes Betriebssystem: Windows 10 x64 Home/Pro
  • Befehl/Ausgabe:

Siofra64.exe --mode file-scan -f "c:\WINDOWS\System32\SearchProtocolHost.exe" --enum-dependency --dll-hijack --explicit-loadlibrary

======== c:\WINDOWS\System32\SearchProtocolHost.exe [64-bit PE] ======== SearchProtocolHost.exe msvcrt.dll [KnownDLL] TQUERY.DLL [!] OLEAUT32.dll [KnownDLL] msvcp_win.dll [Base] api-ms-win-crt-string-l1-1-0.dll [API set] ucrtbase.dll [Base] combase.dll [KnownDLL] RPCRT4.dll [KnownDLL] api-ms-win-core-heap-obsolete-l1-1-0.dll [API set] kernel32.dll [KnownDLL] bcryptPrimitives.dll [Base] cryptdll.dll [!] api-ms-win-security-lsalookup-l2-1-1.dll [API set] advapi32.dll [KnownDLL] api-ms-win-eventing-controller-l1-1-0.dll [API set] sechost.dll [KnownDLL] api-ms-win-shell-namespace-l1-1-0.dll [API set] windows.storage.dll [Base] api-ms-win-shlwapi-winrt-storage-l1-1-1.dll [API set] shlwapi.dll [KnownDLL] GDI32.dll [KnownDLL] api-ms-win-gdi-internal-uap-l1-1-0.dll [API set] gdi32full.dll [Base] USER32.dll [KnownDLL] win32u.dll [Base] api-ms-win-appmodel-state-l1-2-0.dll [API set] kernel.appcore.dll [Base] api-ms-win-shcore-path-l1-1-0.dll [API set] shcore.dll [KnownDLL] api-ms-win-power-base-l1-1-0.dll [API set] powrprof.dll [Base] profapi.dll [Base] msfte.dll [Potential explicit Unicode] [!] msTracer.dll [Potential explicit Unicode] [!] Msidle.dll [Potential explicit Unicode] [!] winhttp.dll [Potential explicit Unicode] [!]

[!] Module msfte.dll vulnerable at C:\WINDOWS\system32\msfte.dll (real path: Unknown) [!] Module msTracer.dll vulnerable at C:\WINDOWS\system32\msTracer.dll (real path: Unknown)

Funktionen

Die Funktionen dieses Tools lassen sich in 3 separate Kategorien unterteilen, die jeweils einem der Ausführungsmodi dieses Tools entsprechen.

Infektionsmodus

Im Infektionsmodus ist das Tool in der Lage, infizierte Kopien von 32-Bit- und 64-Bit-DLL-Dateien zu erzeugen. Diese infizierten Dateien können den Ausführungsfluss einer Zielanwendung kapern, wenn sie während der Prozessinitialisierung geladen werden, und bewirken, dass entweder eine Payload-DLL geladen oder eine ausführbare Payload-Datei gestartet wird, bevor der Einstiegspunkt der Zielanwendung ausgeführt wird.

Datei-Scanmodus

Im Datei-Scanmodus kann dem Tool entweder ein Pfad zu einer ausführbaren Datei oder ein Ordner übergeben werden (der optional rekursiv nach ausführbaren Dateien durchsucht wird). Dessen PE-Importe, Delay-Load-Importe, API-Sets, Assembly-Abhängigkeiten und explizit geladene Bibliotheken werden rekursiv aufgezählt und verarbeitet, um den Pfad zu bestimmen, unter dem jede einzelne während der Laufzeit-Prozessinitialisierung geladen wird. Mit diesen Informationen kann das Tool Module identifizieren, die für Hijacking anfällig sind. Während der PE-Verarbeitung und der Loader-Simulation ist das Tool in der Lage, Folgendes zu verarbeiten: 1. Module, die über den primären PE-Importabschnitt importiert werden. 2. Module, die über Delay Load importiert werden. 3. Auflösung von WinSxS-Assembly-Abhängigkeiten (die PE-Manifestressource wird geparst, Assembly-Abhängigkeits-IDs werden extrahiert und der WinSxS-Modulpfad wird mithilfe einer benutzerdefinierten Implementierung ermittelt). 4. Explizit geladene Module, die zur Laufzeit über LoadLibrary importiert werden. 5. API-Set-Auflösung aller oben genannten Importtypen. Dies wird über eine benutzerdefinierte Implementierung eines Parsers für die undokumentierten Datenstrukturen in ApiSetSchema.dll erreicht (beachten Sie, dass nur die Versionen 2, 4 und 6 getestet wurden). 6. Suche nach bestimmten importierten Modulen anhand des Namens. 7. Identifizierung von Windows-Komponenten, die für UAC-Bypass-Angriffe genutzt werden können (die UAC-Auto-Elevation-Kriterien werden automatisiert auf eine angegebene Ziel-PE angewendet und dann in Verbindung mit einem Hijacking-Angriff verwendet, sofern einer vorhanden ist). 8. Automatisches Erkennen und Filtern von Modulabhängigkeiten, die nicht verwundbar sind, auf der Grundlage von: * KnownDLLs * Ausgenommener („Base“-)DLL-Status. Kernelbase.dll, ntdll.dll, usw. * Sicherheitsmechanismus für Manifest-Overrides (von Microsoft in sysprep.exe verwendet)

Speicher-Scanmodus

Im Speicher-Scanmodus kann das Tool entweder lokale Prozessnamen/-IDs aufzählen oder es kann eine Prozess-ID zum Scannen erhalten. Anstatt das zur angegebenen PID gehörende Imagefile auf der Festplatte zu parsen, zählt das Tool die aktuell in den Prozess geladenen Module auf und identifiziert, welche von ihnen möglicherweise für Hijacking anfällig sind. Dies ist nützlich, wenn eine ausführbare Datei auf der Festplatte gepackt/verschleiert ist und ihre Importe nicht durch Parsen des PE-Headers identifiziert werden können.

Verwendung

Um die Verwendungsinformationen des Tools anzuzeigen, führen Sie es einfach ohne Parameter aus (Ausgabe unten). Es ist sehr wichtig, die passende Kompilierung des Tools (32 oder 64 Bit) für das gewünschte Ziel zu verwenden, je nachdem, ob es sich um eine 32-Bit-PE- oder 64-Bit-PE-Datei handelt. Ebenso kann die 32-Bit-Version des Tools nur 32-Bit-Prozesse aufzählen und/oder anvisieren (Wow64 auf einem x64-OS), und die 64-Bit-Version kann nur 64-Bit-Prozesse aufzählen und/oder anvisieren. Dieses Prinzip gilt sowohl für das Scannen (Siofra64.exe überspringt 32-Bit-PEs und Siofra32.exe überspringt 64-Bit-PEs) als auch für die PE-Infektion. Siofra32.exe sollte zum Infizieren von 32-Bit-DLLs verwendet werden und Siofra64.exe zum Infizieren von 64-Bit-DLLs.

Wenn die 32-Bit-Version des Tools auf x64-Systemen ausgeführt wird, wird die Wow64-Pfadumleitung vom Tool explizit deaktiviert. Das bedeutet: Wenn Sie \Windows\System32\notepad.exe anvisieren, wäre dies eine 64-Bit-PE (und daher sollte stattdessen \Windows\Syswow64\notepad.exe verwendet werden). Wenn Sie \Program Files\Common Files\microsoft shared\MSInfo\msinfo32.exe anvisieren, wäre dies ebenfalls eine 64-Bit-PE, und daher sollte stattdessen \Program Files (x86)\Common Files\microsoft shared\MSInfo\msinfo32.exe verwendet werden.

Siofra version 1.13 usage: Siofra32.exe --mode [Supported modes: "file-scan", "mem-scan" and "infect"] -v [Optional. Output verbosity level] Verbosity levels: 0 - No output 1 - Only critical success/failure status (default) 2 - Additional status details for success/failure status, including discarded PEs 3 - Everything File scan mode: -f [File or directory to scan] -r [Optional. Recursive scan] --signed [Optional. Process only signed binaries] --delayload [Optional. Include delayload imports in dependency list] --explicit-loadlibrary [Optional. Include potentially explicit imports in dependency list (these are *.dll strings which may have been called via LoadLibrary(Ex)A/W] --auto-elevate [Optional. Scan only auto-elevate binaries] Memory scan mode: --pid [Target process ID to scan. When not specified, a list of either 32 or 64-bit process names/PIDs will be enumerated (corresponding to either the 32 or 64-bit version of this tool)] Any scan mode: --enum-dependency [Enumerate dependencies] --show-unmapped-apiset [Optional. Include API sets which failed to map to a module from output (ignored by default)] --dll-hijack [Enumerate DLL hijacking vulns] --find-module [Optional. Scan dependencies for a specific module. Note that this excludes KnownDLLs] Infect mode: -f [DLL file to infect] -o [Output file] --payload-path [Path of DLL to be loaded into infected DLL at runtime, or path of executable to be launched at runtime] --payload-type [The type of payload specified in the parasite payload path. This can be "process" (generally indicating a exe) or "library" (generally indicating a DLL)]

Beispiele

  1. Scannen des gesamten Home-Laufwerks nach 32-Bit-Programmen, die anfällig für DLL-Hijacking sind, unter Verwendung von Standard- oder Delay-Load-Importen über ihre PE-Header.

    Siofra32.exe --mode file-scan -f "C:/" -r --enum-dependency --dll-hijack --delayload

  2. Scannen des Windows-Defender-Anwendungsordners unter einer x64-Version von Windows nach verwundbaren Modulen, die über die Standard-Importtabelle in ihrem PE-Header geladen werden.

    Siofra64.exe --mode file-scan -f "C:\Program Files\Windows Defender" -r --enum-dependency --dll-hijack

  3. Scannen des 32-Bit-Programms Java Update Scheduler unter einer x64-Version von Windows nach verwundbaren Modulen, die über jeden bekannten Kanal geladen werden (Standard- oder Delayload-Importe, WinSxS, LoadLibrary).

    Siofra32.exe --mode file-scan -f "C:\Program Files (x86)\Common Files\Java\Java Update\jusched.exe" --enum-dependency --dll-hijack --delayload --explicit-loadlibrary

  4. Scannen des Windows-Ordners (und aller Unterordner) nach verwundbaren Modulen (importiert über die Standard-Importtabelle im PE-Header) in 64-Bit-Programmen, die für einen UAC-Bypass-Angriff verwendet werden könnten (von Microsoft mit einem Auto-Elevate-Manifest signiert).

    Siofra64.exe --mode file-scan -f "C:\Windows" -r --enum-dependency --dll-hijack --auto-elevate --signed

  5. Infizieren einer 32-Bit-Kopie von WININET.dll (kopiert von \Windows\SysWOW64\WININET.dll nach .\WININET_original.dll) mit einem Implantat, das einen neuen notepad-Prozess startet, wenn es während der Prozessinitialisierung von einem verwundbaren Programm geladen wird. Es ist wichtig zu beachten, dass das bloße Laden einer infizierten Kopie dieser DLL (z. B. über LoadLibrary) das Payload nicht auslöst. Infizierte DLLs sind nur dafür gedacht, im Kontext eines verwundbaren Moduls zu funktionieren, das über den Standard-Importabschnitt seines Hostprozesses geladen wird.

    Siofra32.exe --mode infect -f WININET_original.dll -o WININET.dll --payload-type process --payload-path c:\windows\system32\notepad.exe

  6. Infizieren einer 64-Bit-Kopie von USERENV.dll (kopiert von \Windows\System32\USERENV.dll nach .\USERENV_original.dll) mit einem Implantat, das eine hypothetische Payload-DLL lädt, die unter C:\Payload.dll gespeichert ist. Es ist wichtig zu beachten, dass alle DLLs, die von einem 64-Bit-Prozess geladen werden, 64-Bit-DLLs sein müssen, und alle DLLs, die von einem 32-Bit-Prozess geladen werden, 32-Bit-DLLs sein müssen. In diesem hypothetischen Szenario müsste Payload.dll also eine 64-Bit-PE-Datei sein, damit sie vom Implantat in USERENV.dll erfolgreich geladen werden kann.

    Siofra64.exe --mode infect -f USERENV_original.dll -o USERENV.dll --payload-type library --payload-path "C:\Payload.dll"

Zukünftige Verbesserungen

  • Die 32- und 64-Bit-Versionen des Tools sollen zu einer einzigen ausführbaren Datei zusammengeführt werden.
  • Fähigkeit zur Durchführung von PE-Infektionen, die DLL-/ausführbare Payloads in infizierten DLL-Dateien erfolgreich laden können, die explizit über LoadLibrary oder über verzögerte Importe (Delayload-Importe) geladen werden.
  • Unterstützung für alle API-Set-Versionen.

Quellcode

Ich habe beschlossen, einen Teil dieses Tools als Open Source zu veröffentlichen, um anderen Sicherheitsforschern zu helfen, die technischen Details dieses Projekts zu verstehen. Konkret habe ich Assembler-Quellcode für einen der 64-Bit-Implantat-Shellcodes bereitgestellt (für die 64-Bit-PE-DLL-Infektion bei Angabe eines „process“-Payload-Typs).

Details zu weiteren technischen Aspekten des Tools und OS-Details im Zusammenhang mit dem Windows-Loader bzw. der Suchreihenfolge, UAC, WinSxS usw. finden Sie im PDF zu diesem Projekt.

Lizenz

Siofra ist unter der GPL-3-Lizenz lizenziert. Siehe LICENSE.MD für Details.

Kontakt

Forrest Williams - [email protected] / [email protected]

Tool herunterladen