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
Spartacus — Spartacus DLL/COM Hijacking Toolkit | Kitploit
Tools/GitHubGitHub/accenture/spartacus
Defensive ToolsPayload GenerationCode AnalysisExploitationReverse EngineeringPenetration TestingBinary AnalysisRed TeamingArchived
GitHubaccenture/spartacus

Spartacus

Spartacus DLL/COM Hijacking Toolkit

Repository anzeigen
1.1k153vor 2 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

[!CAUTION] Dieses Repository wird nicht mehr gewartet. Besuchen Sie https://github.com/sadreck/Spartacus für die neueste Version.

Spartacus DLL/COM Hijacking Toolkit version

Warum „Spartacus“?

Wenn Sie den Film Spartacus aus dem Jahr 1960 gesehen haben, erinnern Sie sich an die Szene, in der die Römer verlangen, dass Spartacus sich ergibt. In dem Moment, als der echte Spartacus aufstand, standen auch viele andere auf und behaupteten, er zu sein, mit dem Satz „ICH BIN SPARTACUS“.

Wenn ein Prozess, der anfällig für DLL-Hijacking ist, nach dem Laden einer DLL fragt, ist es, als würde er fragen: „WER IST VERSION.DLL?“ und zufällige Verzeichnisse beginnen zu behaupten: „ICH BIN VERSION.DLL“ und „NEIN, ICH BIN VERSION.DLL“. Und daher der Name Spartacus.

Wie unterscheidet sich dieses Tool von all den anderen Hijacking-Tools da draußen?

  • Spartacus automatisiert den größten Teil des Prozesses. Es parst rohe SysInternals Process Monitor-Protokolle, und Sie können ProcMon stundenlang laufen lassen und DLL/COM-Hijacking-Schwachstellen der zweiten und dritten Ebene entdecken (d. h. eine App, die eine weitere DLL lädt, die wiederum eine weitere DLL lädt, wenn Sie eine bestimmte Funktion der übergeordneten App verwenden).
  • Automatisch Visual Studio-Projektmappen für anfällige DLLs generieren.
  • Kann große PML-Dateien verarbeiten und alle interessierenden Ereignisse in eine CSV-Datei ausgeben. Lokaler Benchmark verarbeitete eine 3-GB-Datei mit 8 Millionen Ereignissen in 45 Sekunden.
  • Unterstützt das Scannen nach DLL- und COM-Hijacking-Schwachstellen.
  • Unterstützt die Generierung selbstsignierter Zertifikate und das Signieren von DLL-Dateien.
  • Durch die Nutzung der Ghidra-Funktionalität werden Exportfunktionssignaturen extrahiert und Ihr Payload über einzeln weitergeleitete Funktionen ausgeführt, anstatt alles über DllMain laufen zu lassen. Diese Technik wurde inspiriert und implementiert aus der Anleitung unter https://www.redteam.cafe/red-team/dll-sideloading/dll-sideloading-not-by-dllmain, von Shantanu Khandelwal.
  • [Abwehr] Überwachungsmodus, der versucht, laufende Anwendungen zu identifizieren, die Aufrufe weiterleiten, also „DLL-Hijacking im Gange“. Dies dient nur dazu, einfache Funde zu machen, und sollte nicht als zuverlässig angesehen werden.

Inhaltsverzeichnis

  • Installation
  • Unterstützte Funktionen
    • DLL-Hijacking
      • Verwendung
    • COM-Hijacking
      • Verwendung
    • DLL-Proxy-Generierung
      • Verwendung
    • DLL-Dateien signieren
      • Verwendung
    • DLL-Hijacking-Erkennung
  • Kommandozeilenargumente
  • Beiträge
  • Danksagungen

Installation

Finden und laden Sie die neueste Version von Spartacus unter Releases herunter. Klonen Sie andernfalls einfach dieses Repository und bauen Sie aus dem Quellcode.

Unterstützte Funktionen

Nachfolgend wird jeder der Modi beschrieben, die Spartacus unterstützt.

Hinweis: Die Kommandozeilenargumente haben sich von v1 zu v2 erheblich geändert.

DLL-Hijacking

Die ursprüngliche Funktionalität von Spartacus war ausschließlich das Auffinden von DLL-Hijacking-Schwachstellen. Die Funktionsweise ist:

  1. Erzeugen einer ProcMon-Konfigurationsdatei (PMC) on-the-fly basierend auf den übergebenen Argumenten. Die gesetzten Filter sind:
    • Operation ist CreateFile.
    • Pfad endet mit .dll.
    • Prozessname ist nicht procmon.exe oder procmon64.exe.
    • Drop Filtered Events aktivieren, um eine minimale PML-Ausgabegröße zu gewährleisten.
    • Auto Scroll deaktivieren.
  2. Process Monitor ausführen und anhalten, bis der Benutzer ENTER drückt.
  3. Der Benutzer startet/beendet Prozesse oder lässt es so lange laufen, wie erforderlich.
  4. Process Monitor beenden, sobald der Benutzer ENTER drückt.
  5. Die ausgegebene Ereignisprotokolldatei (PML) parsen.
    1. Eine CSV-Datei mit allen DLLs, bei denen NAME_NOT_FOUND oder PATH_NOT_FOUND auftritt, erstellen.
    2. Die obigen DLLs vergleichen und versuchen, die DLLs zu identifizieren, die tatsächlich geladen wurden.
    3. Für jede „gefundene“ DLL eine Visual Studio-Projektmappe generieren, die alle Exportfunktionen der identifizierten DLL weiterleitet.

Verwendung von DLL-Hijacking

Sammeln Sie alle Ereignisse und speichern Sie sie in C:\Data\logs.pml. Alle anfälligen DLLs werden in C:\Data\VulnerableDLLFiles.csv gespeichert und alle Proxy-DLL-Projektmappen in C:\Data\Solutions.

root@kitploit:~
--mode dll --procmon C:\SysInternals\Procmon.exe --pml C:\Data\logs.pml --csv C:\Data\VulnerableDLLFiles.csv --solution C:\Data\Solutions --verbose

Ein vorhandenes PML-Ereignisprotokoll parsen, die Ausgabe in CSV speichern und Proxy-Visual-Studio-Projektmappen generieren.

root@kitploit:~
--mode dll --existing --pml C:\MyData\SomeBackup.pml --csv C:\Data\VulnerableDLLFiles.csv --solution C:\Data\Solutions --verbose

Screenshots

DLL-Laufzeit

CSV-Ausgabe

COM-Hijacking

Eine neue Funktionalität von Spartacus ist die Identifizierung lokaler COM-Hijacking-Schwachstellen. Die Funktionsweise ist:

  1. Erzeugen einer ProcMon-Konfigurationsdatei (PMC) on-the-fly basierend auf den übergebenen Argumenten. Die gesetzten Filter sind:
    • Operation ist RegOpenKey.
    • Prozessname ist nicht procmon.exe oder procmon64.exe.
    • Drop Filtered Events aktivieren, um eine minimale PML-Ausgabegröße zu gewährleisten.
    • Auto Scroll deaktivieren.
  2. Process Monitor ausführen und anhalten, bis der Benutzer ENTER drückt.
  3. Der Benutzer startet/beendet Prozesse oder lässt es so lange laufen, wie erforderlich.
  4. Process Monitor beenden, sobald der Benutzer ENTER drückt.
  5. Die ausgegebene Ereignisprotokolldatei (PML) parsen.
    1. Alle fehlenden Registrierungsschlüssel identifizieren, die auf InprocServer32 enden und deren Ergebnis NAME_NOT_FOUND ist.
    2. Wenn der identifizierte Schlüssel unter HKEY_CURRENT_USER liegt, nach seiner GUID unter HKEY_CLASSES_ROOT suchen und deren Details (falls gefunden) in die CSV-Exportdatei aufnehmen.

Für COM-Hijacking unterstützt Spartacus auch das Scannen des lokalen Systems nach falsch konfigurierten COM-Einträgen:

  1. Alle HKEY_CLASSES_ROOT, HKEY_CURRENT_USER und HKEY_LOCAL_MACHINE aufzählen.
  2. Nach Registrierungsschlüsseln mit den Namen InProcServer, InProcServer32, LocalServer oder LocalServer32 suchen.
  3. Fehlende EXE-/DLL-Speicherorte identifizieren, sowie etwaige ACL-Fehlkonfigurationen wie die Möglichkeit, die Datei durch den aktuellen Benutzer zu ändern oder zu löschen.

Verwendung von COM-Hijacking

Sammeln Sie alle Ereignisse und speichern Sie sie in C:\Data\logs.pml. Alle anfälligen COM-Informationen werden in C:\Data\VulnerableCOM.csv gespeichert.

root@kitploit:~
--mode com --procmon C:\SysInternals\Procmon.exe --pml C:\Data\logs.pml --csv C:\Data\VulnerableCOM.csv --verbose

Eine vorhandene PML-Datei verarbeiten, um anfällige COM-Einträge zu identifizieren.

root@kitploit:~
--mode com --existing --pml C:\Data\logs.pml --csv C:\Data\VulnerableCOM.csv --verbose

Die lokale Systemregistrierung durchsuchen, um fehlende/falsch konfigurierte COM-Bibliotheken und -Executables zu identifizieren.

root@kitploit:~
--mode com --acl --csv C:\Data\VulnerableCOM.csv --verbose

Screenshots

COM-Laufzeit

CSV-Ausgabe

DLL-Proxy-Generierung

Spartacus unterstützt die Generierung von Visual Studio-Projektmappen, indem Skelettprojekte erstellt werden, die Sie basierend auf der DLL, die Sie ausnutzen möchten, verwenden können.

  • Weiterleitung aller Aufrufe durch Exportieren von Funktionen zurück zur legitimen DLL.
    • Dies bedeutet, dass Sie Ihren Payload aus der DllMain-Funktion ausführen müssen.
  • Mit Ghidra so viele Funktionssignaturen/-definitionen wie möglich aus der Zieldll extrahieren und Proxy-Funktionen dafür erstellen.
    • Für jede Funktion, deren Signatur nicht extrahiert werden konnte, wird sie direkt an die legitime Funktion/DLL weitergeleitet.
    • Dies bedeutet, dass Sie Ihren Payload aus einer Funktion außerhalb von DllMain ausführen können.
    • Wenn Sie beispielsweise version.dll ausnutzen möchten, könnten Sie Ihren Implantat von GetFileVersionInfoExW ausführen, falls diese Funktion von der anfälligen Anwendung aufgerufen wird.

Verwendung der DLL-Proxy-Generierung

Generieren Sie eine Projektmappe, die alle Exporte weiterleitet (keine Funktionsproxys).

root@kitploit:~
--mode proxy --dll C:\Windows\System32\version.dll --solution "C:\data\tmp\refactor-version" --overwrite --verbose --external-resources

Es ist möglich, mehrere DLLs gleichzeitig einzugeben.

root@kitploit:~
--mode proxy --dll C:\Windows\System32\version.dll --dll C:\Windows\System32\userenv.dll --solution "C:\data\tmp\dll-collection" --overwrite --verbose --external-resources

Erstellen Sie Proxys für so viele Funktionen wie möglich (basierend auf der Ghidra-Ausgabe).

root@kitploit:~
--mode proxy --ghidra C:\ghidra\support\analyzeHeadless.bat --dll C:\Windows\System32\userenv.dll --solution C:\Projects\spartacus-userenv --overwrite --verbose

Wie oben, aber verwenden Sie externe Asset-Dateien, um die Projektmappe zu generieren (falls Sie sie ändern müssen).

root@kitploit:~
--mode proxy --ghidra C:\ghidra\support\analyzeHeadless.bat --dll C:\Windows\System32\userenv.dll --solution C:\Projects\spartacus-userenv --overwrite --verbose --external-resources

Nutzen Sie vorab generierte Funktionsprototypen für Funktionen, für die Ghidra keine Funktionsdefinitionen extrahieren konnte.

root@kitploit:~
--mode proxy --ghidra C:\ghidra\support\analyzeHeadless.bat --dll C:\Windows\System32\userenv.dll --solution C:\Projects\spartacus-userenv --overwrite --verbose --external-resources --prototypes C:\data\prototypes.csv

Generieren Sie Proxys nur für die Funktionen GetFileVersionInfoExW und GetFileVersionInfoExA.

root@kitploit:~
--mode proxy --ghidra C:\ghidra\support\analyzeHeadless.bat --dll C:\Windows\System32\version.dll --solution C:\Projects\spartacus-version --verbose --overwrite --external-resources --only "GetFileVersionInfoExW, GetFileVersionInfoExA"

Generieren Sie eine Funktionsprototyp-Datenbank aus vorhandenen *.h-Dateien, um bei der Generierung von Proxy-Funktionen für solche zu helfen, für die Ghidra keine Funktionsdefinition extrahieren konnte.

root@kitploit:~
--mode proxy --action prototypes --path "C:\Program Files (x86)\Windows Kits" --csv C:\data\prototypes.csv --verbose

Listet die Exporte einer DLL auf und prüft, ob für jede Funktion ein vorab generierter Prototyp vorhanden ist.

root@kitploit:~
--mode proxy --action exports --dll C:\Windows\System32\version.dll --dll C:\Windows\System32\amsi.dll --prototypes ./Assets/prototypes.csv

DLL-Dateien signieren

Spartacus unterstützt nun die Generierung selbstsignierter Zertifikate (unter Kopieren von Attributen vorhandener Dateien) und das Signieren von DLL-Dateien.

Verwendung zum Signieren von DLL-Dateien

Erstellen Sie ein Signaturzertifikat unter Verwendung von Eigenschaften aus C:\Windows\System32\version.dll (muss eine signierte DLL sein).

root@kitploit:~
--mode sign --action generate --pfx "C:\Output\certificate.pfx" --password "Welcome1" --not-before "2022-12-31 00:00:55" --not-after "2026-01-01 00:00:01" --copy-from C:\Windows\System32\version.dll --verbose

Signieren Sie eine DLL mit einem vorhandenen/generierten Zertifikat.

root@kitploit:~
--mode sign --action sign --pfx "C:\Output\certificate.pfx" --password "Welcome1" --path "C:\Input\MyFakeVersion.dll" --algorithm SHA256 --verbose

DLL-Hijacking-Erkennung

Spartacus hat auch einen --detect-Modus, der versucht, aktives DLL-Proxying zu identifizieren. Die Logik dahinter ist:

  • Alle Prozesse aufzählen.
  • Für jeden Prozess die DLLs (Module) laden, die er in den Speicher geladen hat (vorausgesetzt, Sie haben die entsprechenden Berechtigungen).
  • Wenn Sie eine DLL mit demselben Namen finden:
    • Wenn sich beide Dateien in einem Betriebssystempfad befinden (z. B. Windows, System32, Program Files), ignorieren.
    • Wenn sich nur eine der Dateien in einem Betriebssystempfad und die andere an einem vom Benutzer beschreibbaren Speicherort befindet, die Datei markieren.

Um diese Funktion zu nutzen, führen Sie Spartacus einfach mit --detect aus.

Selbstsignieren von Executables/DLLs

Spartacus unterstützt den --sign-Modus, der es Ihnen ermöglicht, sowohl selbstsignierte Zertifikate zu generieren als auch kompilierte DLLs damit zu signieren.

Generieren Sie ein selbstsigniertes Zertifikat, indem Sie den Aussteller/Betreff aus einer vorhandenen Datei kopieren:

root@kitploit:~
--mode sign --action generate --pfx "C:\Output\myCertificate.pfx" --password "Welcome1" --not-before "2023-01-01 00:00:04" --not-after "2025-01-01 00:00:42" --copy-from C:\Windows\System32\version.dll --verbose

Und verwenden Sie dieses Zertifikat, um Ihre kompilierte Datei zu signieren:

root@kitploit:~
--mode sign --action sign --pfx "C:\Output\myCertificate.pfx" --password "Welcome1" --path "C:\Projects\Spartacus-AMSI\amsi.dll" --algorithm SHA256 --verbose

Kommandozeilenargumente

Um Ihnen das Leben zu erleichtern, verwenden Sie die Datei CommandLineGenerator.html.

Beiträge

Ob Tippfehler, Fehler oder neue Funktionen – Spartacus ist offen für Beiträge, solange wir uns auf Folgendes einigen:

  • Sie sind mit der MIT-Lizenz dieses Projekts einverstanden.
  • Bevor Sie einen Pull-Request erstellen, erstellen Sie ein Issue, damit es besprochen werden kann, bevor Sie Arbeit investieren, da die interne Entwicklung nicht über das öffentliche GitHub-Repository verfolgt wird. Andernfalls riskieren Sie, dass ein Pull-Request abgelehnt wird, wenn wir beispielsweise bereits an derselben/ähnlichen Funktion arbeiten, oder aus anderen Gründen.

Danksagungen

  • https://github.com/eronnen/procmon-parser/
  • https://www.redteam.cafe/red-team/dll-sideloading/dll-sideloading-not-by-dllmain
  • https://stmxcsr.com/persistence/com-hijacking.html
  • Icon für Spartacus stammt von Helmet icons created by Darius Dan - Flaticon | https://dariusdan.com/
  • https://github.com/Danielku15/SigningServer
Tool herunterladen
  • Eine CSV-Ausgabe mit allen gesammelten Informationen erstellen.
  • Spartacus erstellt nicht automatisch eine Visual Studio-Projektmappe für COM-Hijacking. Wenn Sie jedoch eine Proxy-DLL erstellen müssen, können Sie den Modus proxy verwenden.
  • ModusArgumentBeschreibung
    --modeDefiniert den zu verwendenden Modus, einer von: dll, proxy, com und detect.
    alle--verboseAusführliche Ausgabe aktivieren.
    alle--debugDebug-Ausgabe aktivieren.
    alle--external-resourcesStandardmäßig verwendet Spartacus eingebettete Ressourcen zum Generieren von VS-Projektmappendateien usw. Wenn Sie die Vorlagen ändern müssen, verwenden Sie dieses Argument, um Spartacus zu veranlassen, alle Dateien aus dem Ordner ./Assets zu laden.
    dll, com--procmonSpeicherort (Datei) des SysInternals Process Monitor procmon.exe oder procmon64.exe
    dll, com--pmlSpeicherort (Datei) zum Speichern der ProcMon-Ereignisprotokolldatei. Wenn die Datei existiert, wird sie überschrieben. Bei Verwendung mit --existing wird die Ereignisprotokolldatei angegeben, aus der gelesen wird, und sie wird nicht überschrieben.
    dll, com--pmcDefiniert eine benutzerdefinierte ProcMon-Datei (PMC). Diese Datei wird nicht modifiziert und unverändert verwendet.
    dll, com--csvSpeicherort (Datei) zum Speichern der CSV-Ausgabe der Ausführung.
    dll, proxy--solutionPfad zum Verzeichnis, in dem die Projektmappen für die Proxy-DLLs gespeichert werden.
    dll, com--existingSchalter, um anzuzeigen, dass Spartacus eine vorhandene ProcMon-Ereignisprotokolldatei (PML) verarbeiten soll. Verwenden Sie --pml, um die Ereignisprotokolldatei anzugeben; nützlich, wenn Sie ProcMon stundenlang ausgeführt oder im Boot-Logging-Modus verwendet haben.
    dll--allStandardmäßig werden alle DLLs in den Verzeichnissen Windows oder Program Files übersprungen. Verwenden Sie dies, um diese Verzeichnisse in die Ausgabe aufzunehmen.
    proxy--ghidraPfad zur Datei 'analyzeHeadless.bat' von Ghidra. Wird verwendet, wenn Sie bestimmte Funktionen proxen möchten anstatt nur DllMain.
    proxy--dllPfad zu der DLL, die Sie proxen möchten; dieses Argument kann mehrfach vorkommen. Außerdem können Wildcards wie C:\Windows\System32\*.dll enthalten sein – jedoch müssen alle Pfade mit *.dll enden.
    proxy, sign--overwriteWenn die --solution- (proxy) oder --pfx-Datei (sign) bereits existiert, verwenden Sie dieses Flag, um sie zu überschreiben.
    proxy--onlyGenerieren Sie Proxy-Funktionen nur für die in dieser Variablen definierten Funktionen. Werte sind kommagetrennt, z. B. 'WTSFreeMemory,WTSFreeMemoryExA,WTSSetUserConfigA'.
    proxy--actionStandardaktion ist das Generieren einer VS-Projektmappe. --action prototypes nimmt als Eingabe einen Windows SDK-Ordner und parst *.h-Dateien, um eine Datenbank mit Funktionsprototypen zu generieren. --action exports zeigt die Exportfunktionen einer DLL an, und wenn es mit --prototypes ergänzt wird, wird angezeigt, ob die Funktionsdefinition vorab generiert wurde.
    sign--actionBei Verwendung von --action mit dem sign-Modus akzeptiert es eine von zwei Optionen: generate zum Erstellen einer PFX-Datei und sign zum Signieren einer Datei.
    proxy--pathFunktioniert derzeit nur mit --action prototypes und ist der Pfad zu einem Windows SDK-Verzeichnis.
    proxy--prototypesSpeicherort von prototypes.csv (derzeit im Ordner ./Assets).
    com--aclLokales System auf fehlende/falsch konfigurierte COM-Bibliotheken und -Executables durchsuchen.
    sign--subjectWird mit --action generate verwendet, um den Zertifikatsbetreff anzugeben.
    sign--issuerWird mit --action generate verwendet, um den Aussteller des Zertifikats anzugeben.
    sign--copy-fromWird mit --action generate verwendet, um eine vorhandene signierte Datei anzugeben, von der Aussteller und Betreff kopiert werden.
    sign--not-beforeWird mit --action generate verwendet, um das Datum zu definieren, ab dem das neue Zertifikat gültig ist; Format: YYYY-MM-DD HH:MM:SS.
    sign--not-afterWird mit --action generate verwendet, um das Datum zu definieren, bis zu dem das neue Zertifikat gültig ist; Format: YYYY-MM-DD HH:MM:SS.
    sign--pfxBei Verwendung mit --action generate wird hier die PFX-Datei gespeichert. Bei Verwendung mit --action sign wird die PFX-Datei von hier geladen.
    sign--passwordBei Verwendung mit --action generate definiert es das Passwort für die --pfx-Datei.
    sign--pathBei Verwendung mit --action sign definiert es den Speicherort der zu signierenden EXE/DLL-Datei.
    sign--algorithmBei Verwendung mit --action sign definiert es den Hash-Algorithmus, der zum Signieren verwendet wird. Optionen: MD5, SHA1, SHA256, SHA384, SHA512.
    sign--timestampBei Verwendung mit --action sign definiert es den Zeitstempelserver, z. B. http://timestamp.sectigo.com oder http://timestamp.digicert.com.