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
EternalBlueC — Suite EternalBlue rifatta in C/C++ che include: MS17-010 Exploit, rilevatore di vulnerabilità EternalBlue, rilevatore DoublePulsar e caricatore di Shellcode e DLL DoublePulsar | Kitploit
Strumenti/GitHubGitHub/bhassani/eternalbluec
Framework di ExploitAnalisi delle VulnerabilitàExploitShellcodeAnalisi MalwarePenetration TestingApprendimento e FormazioneGenerazione di ShellcodeSviluppo PayloadBinary Exploitation
GitHubbhassani/eternalbluec

EternalBlueC

6131381220h 52m faRevisionato da Kitploit

Suite EternalBlue rifatta in C/C++ che include: MS17-010 Exploit, rilevatore di vulnerabilità EternalBlue, rilevatore DoublePulsar e caricatore di Shellcode e DLL DoublePulsar

Vedi Repository

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

License: GPL v3

EternalBlueC

La suite EternalBlue rifatta in C/C++ che include:

  • Exploit MS17-010 (include DoublePulsar)
  • Rilevatore di vulnerabilità EternalBlue/MS17-010
  • Rilevatore di DoublePulsar
  • Caricamento DLL con DoublePulsar
  • Caricamento shellcode con DoublePulsar
  • Caricamento DLL con struttura SMB con DoublePulsar
  • Caricamento shellcode con struttura SMB con DoublePulsar
  • Caricamento di un eseguibile all'interno di una DLL con DoublePulsar

Risultati del progetto

  • Caricamento shellcode - completato e funzionante, inietta il tuo shellcode in qualsiasi processo desideri
  • Caricamento DLL - completato e funzionante, inietta la tua DLL in qualsiasi processo desideri
  • Caricamento DLL con un eseguibile embedded - completato, inietta la tua DLL in qualsiasi processo desideri e rilascia l'eseguibile come "mssecsvc.exe"

Obiettivi del progetto

  • Consentire la generazione dinamica dei pacchetti DoublePulsar di negoziazione, impostazione sessione, connessione albero, TransNamedPipe e Transaction2 con strutture SMB e catture esadecimali
  • Consentire la modifica del payload dell'exploit EternalBlue per rimuovere l'impianto DoublePulsar e inviare invece shellcode personalizzati
  • Consentire la generazione dinamica dei pacchetti EternalBlue
  • Richiedere input utente per tutti gli indirizzi IP, payload come shellcode o percorsi file e autorizzazione a proseguire
  • Essere più verboso
  • Aggiungere la versione di Windows dalla risposta SMB a schermo
  • Aggiungere supporto per parametri da riga di comando (DoublepulsarExecute.exe -h 192.168.0.8 -f PopCalculatorShellcode.bin)
  • Aggiungere più controlli degli errori come il timeout del socket
  • Suite EternalBlue e DoublePulsar

    • ms17_vuln_status.cpp - Questo programma invia 4 pacchetti SMB: 1 negoziazione, 1 impostazione sessione, 1 connessione albero e 1 richiesta TransNamedPipe. Il programma legge quindi la risposta NT_STATUS dalla TransNamedPipeRequest (richiesta PeekNamedPipe) e determina se NT_STATUS nel pacchetto SMB è uguale a 0xC0000205 (STATUS_INSUFF_SERVER_RESOURCES). Se è corretto, il target è vulnerabile a MS17-010. Testato su Windows 7 x64 non aggiornato.

    ms17vulnstatus

    • doublepulsar_check.cpp - Questo programma invia 4 pacchetti SMB: 1 negoziazione, 1 impostazione sessione, 1 connessione albero e 1 pacchetto Trans2 SESSION_SETUP. Inviando il pacchetto Trans2 SESSION_SETUP, l'ID multiplex inviato può essere confrontato nel pacchetto di risposta Trans2 con l'ID multiplex: 0x51 o 81. DoublePulsar legge l'ID multiplex inviato e, dopo che il comando ping è riuscito, restituisce +10 in esadecimale per l'ID multiplex nella risposta Trans2 SESSION_SETUP. Successivamente, vengono inviati comandi per disattivare il backdoor DoublePulsar. Il comando di disattivazione di DoublePulsar si trova nei parametri di timeout del pacchetto SMB. Dopodiché, DoublePulsar diventa dormiente e non viene rimosso dal sistema. Testato su Windows 7 x64.

    doublepulsar_check

    • DoublePulsarXORKeyCalculator.cpp - Questo programma invia 4 pacchetti SMB: 1 pacchetto di negoziazione e 3 richieste. L'ultima richiesta è una richiesta Trans2 SESSION_SETUP. Viene ricevuta una risposta Trans2 SESSION_SETUP e la firma SMB viene estratta da (Recvbuff[18] -> Recvbuff[22]). Recvbuff[22] indica il tipo di architettura: se 1, il target è a 64 bit; se 0, il target è a 32 bit. La firma SMB viene convertita dai caratteri unsigned char in un intero senza segno.

    SMBSignatureWireshark

    Questi valori da Recvbuff[18] -> Recvbuff[22] vengono poi elaborati tramite la funzione calcolatrice della chiave XOR di DoublePulsar, che genera una chiave XOR intera senza segno utilizzabile per crittografare il shellcode o il payload DLL da caricare su DoublePulsar. Testato su Windows 7 x64.

    Screenshot di esempio:

    XORCalculator

    Stessa chiave dal binario NSA originale in FUZZBUNCH XORCalculatorFromNSAbinary

    • DoublePulsar_structure_ping.cpp - Questo programma invia 4 pacchetti SMB: 1 negoziazione, 1 impostazione sessione, 1 connessione albero e 1 pacchetto Trans2 SESSION_SETUP. La differenza rispetto a doublepulsar_check.cpp è che questo genera il pacchetto PING di DoublePulsar Trans2 utilizzando una struttura anziché una stringa esadecimale SMB hardcoded presa da un campione di WannaCry. Un'altra differenza è che questo programma genera dinamicamente il pacchetto TreeConnect invece di usare quello hardcoded presente nel campione di WannaCry. Il pacchetto ping generato in questo programma ti dirà se DoublePulsar è installato sulla macchina remota.

    • DoublePulsar_structure_exec.cpp - Questo programma invia 5 pacchetti SMB: 1 negoziazione SMB, 1 impostazione sessione, 1 connessione albero, 1 pacchetto Ping Trans2 SESSION_SETUP di DoublePulsar e 1 pacchetto di esecuzione Trans2 SESSION_SETUP di DoublePulsar. La differenza rispetto a Doublepulsar_UploadShellcode.cpp è che questo genera il pacchetto di esecuzione Trans2 DoublePulsar utilizzando una struttura anziché una stringa esadecimale SMB hardcoded presa da un campione di WannaCry.

    • Doublepulsar_UploadDLL.cpp - Questo programma è pensato per DLL. Invia 4 pacchetti SMB insieme ai dati DLL in pacchetti Trans2 SMB: 1 negoziazione, 1 impostazione sessione, 1 connessione albero, 1 richiesta Ping Trans2 SESSION_SETUP e un pacchetto di esecuzione Trans2 SESSION_SETUP. Il pacchetto di richiesta Ping Trans2 SESSION_SETUP viene inviato per ottenere la firma SMB nel pacchetto di risposta Trans2 SESSION_SETUP. Questa firma viene elaborata tramite la calcolatrice della chiave XOR di DoublePulsar. Il programma legge quindi un file DLL e lo combina con shellcode del kernel a 64 bit e userland per eseguire la DLL e XORa il buffer con la chiave XOR di DoublePulsar calcolata dalla firma SMB. Viene generato un pacchetto allocando memoria, copiando il pacchetto Trans2, modificando i valori necessari per il funzionamento della transazione SMB (UserID, TreeID, TotalDataCount, DataCount, ByteCount), quindi copiando i dati XORati (shellcode del kernel + DLL) alla fine e iterando inviandoli a blocchi di 4096 byte per volta a DoublePulsar. La lunghezza totale del pacchetto è 4178. 4096 sono per i dati crittografati XOR. In futuro verrà implementato anche l'uso delle strutture SMB e TRANSACTION2.

    • Doublepulsar_UploadShellcode.cpp - Questo programma invia 5 pacchetti SMB: 1 negoziazione, 1 impostazione sessione, 1 connessione albero, 1 pacchetto Ping Trans2 SESSION_SETUP e 1 pacchetto di esecuzione Trans2 SESSION_SETUP. Il pacchetto di richiesta Trans2 SESSION_SETUP viene inviato per ottenere la firma SMB nel pacchetto di risposta TRANS2 SESSION_SETUP. Questa firma viene elaborata tramite la calcolatrice della chiave XOR di DoublePulsar. Il programma copia quindi lo shellcode del kernel e uno shellcode di esempio da un buffer, XORa il buffer con la chiave XOR di DoublePulsar calcolata dalla firma SMB. Viene generato un pacchetto allocando memoria, copiando il pacchetto di esecuzione Trans2, modificando i valori necessari per il funzionamento della transazione SMB (UserID, TreeID, TotalDataCount, DataCount, ByteCount), quindi copiando i parametri SESSION_SETUP e 4096 byte di dati shellcode XORati alla fine e inviandoli a una lunghezza totale del pacchetto di 4178 byte a DoublePulsar. La lunghezza totale del pacchetto è 4178. La lunghezza NetBIOS sarà 4174 poiché l'intestazione NetBIOS non conta se stessa per la dimensione. 12 byte di questo pacchetto sono per i parametri SESSION_SETUP di DoublePulsar. 4096 sono per i dati crittografati XOR. In una versione futura verranno utilizzate le strutture SMB e TRANSACTION2.

    UploadShellcode

    • Shellcode generato da - zerosum0x0 ha scritto shellcode personalizzato per ETERNALBLUE che potrebbe essere riadattato per DOUBLEPULSAR, sebbene con una piccola modifica. Poiché la sovrascrittura della syscall nello shellcode copiato non era necessaria per questo caso d'uso, l'abbiamo rimossa:
      ;%define SYSCALL_OVERWRITE ; per eseguire al livello IRQL del processo in syscall
      ricompila con: nasm -w-other -o >(xxd -p -c 16 | sed 's/../\x&/g') external/source/shellcode/windows/multi_arch_kernel_queue_apc.asm
      https://github.com/rapid7/metasploit-framework/blob/master/external/source/shellcode/windows/multi_arch_kernel_queue_apc.asm
      https://raw.githubusercontent.com/ninp0/eternalblue/master/eternalblue_kshellcode_x64.asm
      https://raw.githubusercontent.com/ninp0/eternalblue/master/eternalblue_kshellcode_x86.asm
      https://www.rapid7.com/blog/post/2019/10/02/open-source-command-and-control-of-the-doublepulsar-implant/

    • DoublePulsar_UploadExe.cpp - Questo programma è pensato per eseguibili. L'eseguibile viene letto in memoria e inserito in una DLL di lancio di WannaCry e inviato tramite DoublePulsar: 1 negoziazione, 1 impostazione sessione, 1 connessione albero, 1 pacchetto Trans2 Ping e più pacchetti Trans2 exec SESSION_SETUP. Il pacchetto di richiesta Trans2 Ping viene inviato per ottenere la firma SMB nel pacchetto di risposta Trans2. Questa firma viene elaborata tramite la calcolatrice della chiave XOR di DoublePulsar. Quindi il programma legge un file EXE e lo combina con shellcode del kernel a 64 bit e userland e un file DLL scheletro e XORa il buffer con la chiave XOR di DoublePulsar calcolata dalla firma SMB. Viene generato un pacchetto allocando memoria, copiando il pacchetto di esecuzione Trans2, modificando i valori necessari per il funzionamento della transazione SMB (UserID, TreeID, TotalDataCount, DataCount, ByteCount), quindi copiando i dati XORati (shellcode del kernel + DLL + eseguibile) alla fine e iterando inviandoli a blocchi di 4096 byte per volta a DoublePulsar. La lunghezza totale del pacchetto è 4178. La lunghezza NetBIOS sarà 4174 poiché l'intestazione NetBIOS non conta se stessa per la dimensione. 12 byte di questo pacchetto sono per i parametri SESSION_SETUP di DoublePulsar. 4096 sono per i dati crittografati XOR.

    • EternalBlue.cpp - Questo programma invia multipli pacchetti SMB: negoziazione, impostazione sessione, connessione albero e multipli pacchetti NT trans e Trans2. Questi pacchetti NT trans sono malformati e preparano l'exploit in memoria sulla macchina vittima. Vengono inviati più pacchetti SMB vuoti o di spaziatura alla vittima su più socket sulla stessa porta. La maggior parte del payload base64 di EternalBlue viene inviata tramite il socket 1, dove sono stati inviati i pacchetti di negoziazione, impostazione sessione e connessione albero. Quindi vengono creati altri 20 socket e i dati vengono inviati a tali socket (Socket 3 a Socket 21). Successivamente, DoublePulsar viene inviato sui socket 3 a 21. I socket vengono poi chiusi dal programma, che fa esplodere EternalBlue e DoublePulsar sulla macchina vittima. Vengono quindi inviate una richiesta di disconnessione SMB e una richiesta di logout SMB e la connessione si chiude. Questo exploit funziona ed è stato testato su Windows 7 x64. Ci sono voluti circa 5 secondi perché il backdoor fosse completamente operativo, come già riportato nelle descrizioni di EternalBlue su internet. Potrebbero essere necessari più tentativi di sfruttamento. Tuttavia, attualmente c'è un bug con TreeID e UserID non impostati correttamente nei pacchetti, che verrà corretto in una versione successiva. Funzionerà contro macchine appena accese poiché TreeID e UserID sono impostati ai valori predefiniti. Questi pacchetti dovranno avere i loro valori TreeID e UserID aggiornati poiché attualmente sono impostati ai valori predefiniti "08 00". EternalBlue EternalBlue_cmd eternalbluepackets

    Modulo Metasploit

    Ho creato un modulo Metasploit personalizzato che ho reso funzionante utilizzando il modulo DoublePulsar RCE open source di Metasploit.

    Ho modificato la logica per consentire la generazione di una DLL, unirla con lo shellcode del kernel x64 (premesso) che ho preso da WannaCry, per permettere a DoublePulsar di eseguire la DLL.

    msfconsole

    Codice educativo aggiuntivo

    Il repository contiene anche quanto segue per scopi educativi e NON sono supportati da me:

    • Script Python per caricamento DLL x86/x64 di DoublePulsar

    • Binario EternalBlue tutto in uno

    • Codice assembly multi-architettura kernel queue apc e codice kernel Windows x86/x64 Multi-Arch Kernel Ring 0 a Ring 3 tramite Queued APC

    • Shellcode del payload del kernel EternalBlue x64/x86 da worawit

    • File di replay di Eternalblue

    Scarica lo strumento