Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Spartacus — Spartacus Toolkit per l'hijacking di DLL/COM | Kitploit
Strumenti/GitHubGitHub/accenture/spartacus
Strumenti DifensiviGenerazione di PayloadAnalisi del CodiceExploitReverse EngineeringPenetration TestingAnalisi di BinariRed TeamingArchived
GitHubaccenture/spartacus

Spartacus

Spartacus Toolkit per l'hijacking di DLL/COM

Vedi Repository
1.1k1532 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

[!CAUTION] Questo repository non è più mantenuto, visita https://github.com/sadreck/Spartacus per l'ultima versione.

Spartacus DLL/COM Hijacking Toolkit version

Perché "Spartacus"?

Se hai visto il film Spartacus del 1960, ricorderai la scena in cui i romani chiedono che Spartacus si arrenda. Nel momento in cui il vero Spartacus si alzò, molti altri si alzarono e rivendicarono di essere lui usando la frase "IO SONO SPARTACUS".

Quando un processo vulnerabile al DLL Hijacking richiede il caricamento di una DLL, è come chiedere "CHI È VERSION.DLL?" e directory casuali iniziano a dichiarare "IO SONO VERSION.DLL" e "NO, IO SONO VERSION.DLL". E così, Spartacus.

Cosa rende questo strumento diverso da tutti gli altri tool di hijacking?

  • Spartacus automatizza gran parte del processo. Analizza i log grezzi di SysInternals Process Monitor e puoi lasciare ProcMon in esecuzione per ore e scoprire vulnerabilità di DLL/COM hijacking di secondo e terzo livello (ad es. un'app che carica un'altra DLL che a sua volta ne carica un'altra quando usi una funzione specifica dell'app principale).
  • Genera automaticamente soluzioni Visual Studio per DLL vulnerabili.
  • In grado di elaborare file PML di grandi dimensioni e salvare tutti gli eventi di interesse in un file CSV. Benchmark locale: elaborato un file da 3 GB con 8 milioni di eventi in 45 secondi.
  • Supporta la scansione sia per vulnerabilità di DLL che di COM hijacking.
  • Supporta la generazione di certificati autofirmati e la firma di file DLL.
  • Utilizzando le funzionalità di Ghidra, estrae le firme delle funzioni di esportazione ed esegue il payload tramite funzioni proxied individualmente anziché eseguire tutto da DllMain. Questa tecnica è stata ispirata e implementata dal walkthrough descritto su https://www.redteam.cafe/red-team/dll-sideloading/dll-sideloading-not-by-dllmain, di Shantanu Khandelwal.
  • [Difesa] Modalità di monitoraggio per cercare di identificare applicazioni in esecuzione che fanno proxying delle chiamate, come in "DLL Hijacking in corso". Questo serve solo per individuare frutti a portata di mano e non dovrebbe essere considerato affidabile.

Indice

  • Installazione
  • Funzionalità supportate
    • DLL Hijacking
      • Utilizzo
    • COM Hijacking
      • Utilizzo
    • Generazione proxy DLL
      • Utilizzo
    • Firma di file DLL
      • Utilizzo
    • Rilevamento DLL Hijacking
  • Argomenti da riga di comando
  • Contributi
  • Crediti

Installazione

Trova e scarica l'ultima versione di Spartacus in Releases. Altrimenti clona semplicemente questo repository e compila dal sorgente.

Funzionalità supportate

Di seguito una descrizione di ciascuna delle modalità supportate da Spartacus.

Nota: Gli argomenti da riga di comando sono cambiati notevolmente dalla v1 alla v2.

DLL Hijacking

La funzionalità originale di Spartacus era esclusivamente la ricerca di vulnerabilità di DLL hijacking. Il funzionamento è il seguente:

  1. Genera al volo un file di configurazione ProcMon (PMC) basato sugli argomenti passati. I filtri che verranno impostati sono:
    • Operazione è CreateFile.
    • Il percorso termina con .dll.
    • Il nome del processo non è procmon.exe o procmon64.exe.
    • Abilita Drop Filtered Events per garantire una dimensione minima dell'output PML.
    • Disabilita Auto Scroll.
  2. Esegue Process Monitor e si ferma fino a quando l'utente non preme INVIO.
  3. L'utente esegue/termina i processi, o lo lascia in esecuzione per tutto il tempo necessario.
  4. Termina Process Monitor quando l'utente preme INVIO.
  5. Analizza il file Event Log (PML) di output.
    1. Crea un file CSV con tutte le DLL con risultato NAME_NOT_FOUND e PATH_NOT_FOUND.
    2. Confronta le DLL di cui sopra e cerca di identificare le DLL che sono state effettivamente caricate.
    3. Per ogni DLL "trovata", genera una soluzione Visual Studio per il proxying di tutte le funzioni di esportazione identificate della DLL.

Utilizzo DLL Hijacking

Raccogli tutti gli eventi e salvali in C:\Data\logs.pml. Tutte le DLL vulnerabili verranno salvate in C:\Data\VulnerableDLLFiles.csv e tutte le soluzioni proxy DLL 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

Analizza un file PML di log eventi esistente, salva l'output in CSV e genera soluzioni Visual Studio proxy.

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

Screenshot

DLL Runtime

CSV Output

COM Hijacking

Una nuova funzionalità di Spartacus è l'identificazione di vulnerabilità di COM hijacking locali. Il funzionamento è il seguente:

  1. Genera al volo un file di configurazione ProcMon (PMC) basato sugli argomenti passati. I filtri che verranno impostati sono:
    • Operazione è RegOpenKey.
    • Il nome del processo non è procmon.exe o procmon64.exe.
    • Abilita Drop Filtered Events per garantire una dimensione minima dell'output PML.
    • Disabilita Auto Scroll.
  2. Esegue Process Monitor e si ferma fino a quando l'utente non preme INVIO.
  3. L'utente esegue/termina i processi, o lo lascia in esecuzione per tutto il tempo necessario.
  4. Termina Process Monitor quando l'utente preme INVIO.
  5. Analizza il file Event Log (PML) di output.
    1. Identifica tutte le chiavi di registro mancanti che terminano con InprocServer32 e il cui risultato è NAME_NOT_FOUND.
    2. Se la chiave identificata si trova sotto HKEY_CURRENT_USER, cerca il suo GUID sotto HKEY_CLASSES_ROOT e include i suoi dettagli nel CSV di esportazione (se trovato).

Per il COM hijacking, Spartacus supporta anche la scansione del sistema locale per voci COM malconfigurate:

  1. Enumerare tutte le chiavi in HKEY_CLASSES_ROOT, HKEY_CURRENT_USER e HKEY_LOCAL_MACHINE.
  2. Cerca chiavi di registro chiamate InProcServer, InProcServer32, LocalServer o LocalServer32.
  3. Identifica qualsiasi posizione EXE/DLL mancante, insieme a eventuali configurazioni ACL errate come la possibilità per l'utente corrente di Modificare o Eliminare il file.

Utilizzo COM Hijacking

Raccogli tutti gli eventi e salvali in C:\Data\logs.pml. Tutte le informazioni COM vulnerabili verranno salvate in C:\Data\VulnerableCOM.csv.

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

Elabora un file PML esistente per identificare voci COM vulnerabili.

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

Enumera il registro di sistema locale per identificare librerie ed eseguibili COM mancanti/malconfigurati.

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

Screenshot

COM Runtime

CSV Output

Generazione proxy DLL

Spartacus supporta la generazione di soluzioni Visual Studio creando progetti scheletro da utilizzare, basati sulla DLL che si desidera sfruttare.

  • Reindirizzamento di tutte le chiamate esportando funzioni alla DLL legittima.
    • Ciò significa che dovrai eseguire il payload dalla funzione DllMain.
  • Utilizzando Ghidra, estrai quante più firme/definizioni di funzioni possibile dalla DLL di destinazione e crea funzioni proxy per queste.
    • Per qualsiasi funzione di cui non è stato possibile estrarre la firma, verrà reindirizzata direttamente alla funzione/DLL legittima.
    • Ciò significa che puoi eseguire il payload da una funzione al di fuori di DllMain.
    • Ad esempio, se desideri sfruttare version.dll, potresti eseguire il tuo implant da GetFileVersionInfoExW se tale funzione viene chiamata dall'applicazione vulnerabile.

Utilizzo Generazione proxy DLL

Genera una soluzione che reindirizza tutte le esportazioni (nessun proxying di funzioni).

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

È possibile inserire più DLL contemporaneamente.

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

Crea proxy per quante più funzioni possibile (basandosi sull'output di Ghidra).

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

Come sopra, ma utilizza file di risorse esterne per generare la soluzione (se è necessario modificarli).

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

Utilizza prototipi di funzioni pre-generati per funzioni per le quali Ghidra non è riuscito a estrarre le definizioni.

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

Genera proxy solo per le funzioni GetFileVersionInfoExW e 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"

Genera un database di prototipi di funzioni da file *.h esistenti, aiutando a generare funzioni proxy per quelle per cui Ghidra non è stato in grado di estrarre la definizione della funzione.

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

Elenca le esportazioni di una DLL e controlla se ogni funzione ha un prototipo pre-generato.

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

Firma di file DLL

Spartacus ora supporta la generazione di certificati autofirmati (copiando attributi da file esistenti) e la firma di file DLL.

Utilizzo per la firma di file DLL

Crea un certificato di firma, utilizzando le proprietà da C:\Windows\System32\version.dll (deve essere una DLL firmata).

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

Firma una DLL utilizzando un certificato esistente/generato.

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

Rilevamento DLL Hijacking

Spartacus ha anche una modalità --detect, che cerca di identificare proxying attivo di DLL. La logica è la seguente:

  • Enumera tutti i processi.
  • Per ogni processo, carica le DLL (moduli) che ha caricato in memoria (supponendo di avere i permessi corretti per farlo).
  • Se trovi una DLL con lo stesso nome:
    • Se entrambi i file si trovano in un percorso di sistema (es. Windows, System32, Program Files), ignora.
    • Se solo uno dei file si trova in un percorso di sistema e l'altro in una posizione scrivibile dall'utente, segnala il file.

Per utilizzare questa funzionalità, basta eseguire Spartacus con --detect.

Auto-firma di eseguibili/DLL

Spartacus supporta la modalità --sign che ti consente sia di generare certificati autofirmati, sia di firmare con essi le DLL compilate.

Genera un certificato autofirmato, copiando l'emittente/soggetto da un file esistente:

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

E usa quel certificato per firmare il tuo file compilato:

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

Argomenti da riga di comando

Per semplificarti la vita, usa il file CommandLineGenerator.html.

Contributi

Che si tratti di un errore di battitura, un bug o una nuova funzionalità, Spartacus è molto aperto ai contributi purché concordiamo sulle seguenti condizioni:

  • Sei d'accordo con la licenza MIT di questo progetto.
  • Prima di creare una pull request, crea un issue in modo che possa essere discusso prima di fare qualsiasi lavoro, poiché lo sviluppo interno non viene tracciato tramite il repository pubblico di GitHub. Altrimenti rischi che la tua pull request venga rifiutata se, ad esempio, stiamo già lavorando sulla stessa funzionalità o su una simile, o per qualsiasi altro motivo.

Crediti

  • 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
  • Icona di Spartacus tratta da Icone casco create da Darius Dan - Flaticon | https://dariusdan.com/
  • https://github.com/Danielku15/SigningServer
Scarica lo strumento
  • Crea un file CSV di output con tutte le informazioni raccolte.
  • Spartacus non crea automaticamente una soluzione Visual Studio per il COM hijacking, tuttavia se hai bisogno di creare una DLL proxy puoi usare la modalità proxy.
  • ModalitàArgomentoDescrizione
    --modeDefinisce la modalità da utilizzare, una tra: dll, proxy, com e detect.
    all--verboseAbilita output verbose.
    all--debugAbilita output di debug.
    all--external-resourcesPer impostazione predefinita Spartacus utilizza risorse incorporate per generare file di soluzione VS, ecc. Se devi modificare i template, usa questo argomento per far caricare a Spartacus tutti i file dalla cartella ./Assets.
    dll, com--procmonPercorso (file) del SysInternals Process Monitor procmon.exe o procmon64.exe
    dll, com--pmlPercorso (file) per salvare il file di log eventi di ProcMon. Se il file esiste, verrà sovrascritto. Se usato con --existing, indica il file di log eventi da leggere e non verrà sovrascritto.
    dll, com--pmcDefinisce un file ProcMon (PMC) personalizzato da utilizzare. Questo file non verrà modificato e sarà utilizzato così com'è.
    dll, com--csvPercorso (file) per salvare l'output CSV dell'esecuzione.
    dll, proxy--solutionPercorso della directory in cui verranno salvate le soluzioni per le DLL proxy.
    dll, com--existingInterruttore per indicare che Spartacus deve elaborare un file di log eventi di ProcMon esistente (PML). Per indicare il file di log eventi usa --pml, utile se hai eseguito ProcMon per ore o lo hai usato in Boot Logging.
    dll--allPer impostazione predefinita, qualsiasi DLL nelle directory di Windows o Program Files verrà saltata. Usa questa opzione per includere tali directory nell'output.
    proxy--ghidraPercorso del file 'analyzeHeadless.bat' di Ghidra. Utilizzato quando vuoi fare il proxy di funzioni specifiche anziché solo DllMain.
    proxy--dllPercorso della DLL che vuoi fare proxy e puoi includere più istanze di questo argomento. Inoltre, può contenere caratteri jolly come C:\Windows\System32\*.dll – tuttavia tutti i percorsi devono terminare con *.dll.
    proxy, sign--overwriteSe il file --solution (proxy) o --pfx (sign) esiste già, usa questo flag per sovrascriverlo.
    proxy--onlyGenera funzioni proxy solo per le funzioni definite in questa variabile. I valori sono separati da virgole come 'WTSFreeMemory,WTSFreeMemoryExA,WTSSetUserConfigA'.
    proxy--actionL'azione predefinita è generare una soluzione VS. --action prototypes prende come input una cartella Windows SDK e analizza i file *.h per generare un database di prototipi di funzioni. --action exports mostra le funzioni di esportazione di una DLL e quando abbinato a --prototypes mostra se la definizione della funzione è stata pre-generata.
    sign--actionQuando si usa --action con il modulo sign, accetta una di due opzioni: generate per creare un PFX e sign per firmare un file.
    proxy--pathAttualmente funziona solo con --action prototypes ed è la posizione di una directory Windows SDK.
    proxy--prototypesPercorso di prototypes.csv (attualmente nella cartella ./Assets).
    com--aclEnumera il sistema locale per librerie ed eseguibili COM mancanti/malconfigurati.
    sign--subjectUsato con --action generate per specificare il soggetto del certificato.
    sign--issuerUsato con --action generate per specificare l'emittente del certificato.
    sign--copy-fromUsato con --action generate per specificare un file firmato esistente da cui copiare l'emittente e il soggetto.
    sign--not-beforeUsato con --action generate per definire la data a partire dalla quale il nuovo certificato sarà valido, formato AAAA-MM-GG HH:MM:SS.
    sign--not-afterUsato con --action generate per definire la data fino alla quale il nuovo certificato sarà valido, formato AAAA-MM-GG HH:MM:SS.
    sign--pfxQuando usato con --action generate indica dove verrà salvato il file PFX. Quando usato con --action sign indica da dove verrà caricato il file PFX.
    sign--passwordQuando usato con --action generate definisce la password per il file --pfx.
    sign--pathQuando usato con --action sign definisce il percorso del file eseguibile/DLL da firmare.
    sign--algorithmQuando usato con --action sign definisce l'algoritmo di hashing che verrà utilizzato per la firma. Opzioni: MD5, SHA1, SHA256, SHA384, SHA512.
    sign--timestampQuando usato con --action sign definisce il server timestamp, come http://timestamp.sectigo.com o http://timestamp.digicert.com.