Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
EternalBlueC — EternalBlue suíte refeita em C/C++ que inclui: Exploit MS17-010, detector de vulnerabilidade EternalBlue, detector DoublePulsar e carregador de Shellcode & DLL do DoublePulsar | Kitploit
Ferramentas/GitHubGitHub/bhassani/eternalbluec
Frameworks de ExploraçãoAnálise de VulnerabilidadesExploraçãoShellcodeAnálise de MalwareTestes de PenetraçãoAprendizado e EducaçãoGeração de ShellcodeDesenvolvimento de PayloadsExploração de Binários
GitHubbhassani/eternalbluec
613138há 1 mêsRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

EternalBlueC

EternalBlue suíte refeita em C/C++ que inclui: Exploit MS17-010, detector de vulnerabilidade EternalBlue, detector DoublePulsar e carregador de Shellcode & DLL do DoublePulsar

Ver Repositório

License: GPL v3

EternalBlueC

Suite EternalBlue refeita em C/C++ que inclui:

  • MS17-010 Exploit ( Contains DoublePulsar )
  • EternalBlue/MS17-010 vulnerability detector
  • DoublePulsar detector
  • DoublePulsar Upload DLL
  • Doublepulsar Upload Shellcode
  • DoublePulsar Upload DLL with SMB Structure
  • Doublepulsar Upload Shellcode with SMB Structure
  • Doublepulsar Upload Exe inside a DLL

Conquistas do Projeto

  • Upload Shellcode - concluído e funcionando, injete seu shellcode em qualquer processo desejado
  • Upload DLL - concluído e funcionando, injete sua DLL em qualquer processo desejado
  • Upload DLL with an embedded exe - concluído, injete sua DLL em qualquer processo desejado e extrai o executável como "mssecsvc.exe"

Objetivos do Projeto

  • Permitir que os pacotes de negociação, configuração de sessão, conexão de árvore, TransNamedPipe e Transaction2 do DoublePulsar sejam gerados dinamicamente com estruturas SMB e capturas hexadecimais
  • Permitir a edição do payload do exploit EternalBlue para remover o implante DoublePulsar e permitir o envio de shellcodes personalizados
  • Permitir que os pacotes do EternalBlue sejam gerados dinamicamente
  • Solicitar entrada do usuário para todos os endereços IP, payloads como shellcode ou caminhos de arquivo e autorização para continuar
  • Ser mais verboso
  • Adicionar a versão do Windows a partir da resposta SMB na tela
  • Adicionar suporte a parâmetros de linha de comando (DoublepulsarExecute.exe -h 192.168.0.8 -f PopCalculatorShellcode.bin )
  • Adicionar mais verificação de erros, como timeout de socket

Suite EternalBlue e DoublePulsar

  • ms17_vuln_status.cpp - Este programa envia 4 pacotes SMB. 1 negociação, 1 configuração de sessão, 1 conexão de árvore e 1 requisição TransNamedPipe. Este programa então lê a resposta NT_STATUS da requisição TransNamedPipe (requisição PeekNamedPipe) e determina se o NT_STATUS no pacote SMB é igual a 0xC0000205 (STATUS_INSUFF_SERVER_RESOURCES). Se estiver correto, o alvo é vulnerável ao MS17-010. Testado no Windows 7 x64 bit sem patch.

ms17vulnstatus

  • doublepulsar_check.cpp - Este programa envia 4 pacotes SMB. 1 negociação, 1 configuração de sessão, 1 conexão de árvore e 1 pacote Trans2 SESSION_SETUP. Ao enviar o pacote Trans2 SESSION_SETUP, o ID de multiplexação enviado pode ser comparado no pacote de resposta Trans2 com o ID de multiplexação: 0x51 ou 81. O DoublePulsar lê o ID de multiplexação enviado e, após o comando ping ser bem-sucedido, retorna um +10 em hexadecimal para o ID de multiplexação na resposta Trans2 SESSION_SETUP. Em seguida, comandos são enviados para queimar o backdoor DoublePulsar. O comando de queima do DoublePulsar está nos parâmetros de timeout do pacote SMB. Depois disso, o DoublePulsar se torna dormente e não é removido do sistema. Testado no Windows 7 x64 bit.

doublepulsar_check

  • DoublePulsarXORKeyCalculator.cpp - Este programa envia 4 pacotes SMB. 1 pacote de negociação e 3 requisições. A última requisição é uma requisição Trans2 SESSION_SETUP. Uma resposta Trans2 SESSION_SETUP é recebida e a assinatura SMB é extraída de (Recvbuff[18] -> Recvbuff[22]). Recvbuff[22] indica o tipo de arquitetura. Se 1, o alvo é x64 bits; se 0, o alvo é x86/32 bits. A assinatura SMB é convertida dos caracteres unsigned char para um inteiro unsigned.

SMBSignatureWireshark

Esses valores de Recvbuff[18] -> Recvbuff[22] são então processados pela função calculadora de chave XOR do DoublePulsar, que gera uma chave XOR inteira unsigned que pode ser usada para criptografar o shellcode ou payload DLL que será carregado no DoublePulsar. Testado no Windows 7 x64 bit.

Captura de tela de exemplo:

XORCalculator

Mesma chave do binário original da NSA no FUZZBUNCH XORCalculatorFromNSAbinary

  • DoublePulsar_structure_ping.cpp - Este programa envia 4 pacotes SMB. 1 negociação, 1 configuração de sessão, 1 conexão de árvore e 1 pacote Trans2 SESSION_SETUP. A diferença entre este e o doublepulsar_check.cpp é que este gera o pacote PING DoublePulsar Trans2 usando uma estrutura, em vez de uma string hexadecimal SMB fixa que obtive de uma amostra do Wannacry. Outra diferença é que este programa gera dinamicamente o pacote TreeConnect, em vez de usar o fixo presente na amostra do Wannacry. O pacote ping gerado neste programa informará se o DoublePulsar está instalado na máquina remota.

  • DoublePulsar_structure_exec.cpp - Este programa envia 5 pacotes SMB. 1 negociação SMB, 1 configuração de sessão, 1 conexão de árvore, 1 pacote Ping DoublePulsar Trans2 SESSION_SETUP e 1 pacote de Execução DoublePulsar Trans2 SESSION_SETUP. A diferença entre este e o Doublepulsar_UploadShellcode.cpp é que este gera o pacote de Execução DoublePulsar Trans2 usando uma estrutura, em vez de uma string hexadecimal SMB fixa que obtive de uma amostra do Wannacry.

  • Doublepulsar_UploadDLL.cpp - Este programa é destinado a DLLs. Ele envia 4 pacotes SMB junto com os dados da DLL em pacotes Trans2 SMB. 1 negociação, 1 configuração de sessão, 1 conexão de árvore, 1 requisição Ping Trans2 SESSION_SETUP e um pacote de Execução Trans2 SESSION_SETUP. O pacote de requisição Ping Trans2 SESSION_SETUP é enviado para obter a assinatura SMB no pacote de resposta Trans2 SESSION_SETUP. Esta assinatura é processada pela calculadora de chave XOR do DoublePulsar. O programa então lê um arquivo DLL e o combina com shellcode de kernel e userland de 64 bits para executar a DLL e aplica XOR no buffer com a chave XOR do DoublePulsar que calculamos a partir da assinatura SMB. Um pacote é gerado alocando memória, copiando o pacote Trans2, editando os valores necessários para a transação SMB funcionar (UserID, TreeID, TotalDataCount, DataCount, ByteCount), depois copia os dados com XOR (shellcode de kernel + DLL) para o final e o percorre enviando-o em um comprimento total de pacote de 4096 bytes por vez para o DoublePulsar. Comprimento total do pacote = 4178. 4096 é para os dados criptografados com XOR. Também implementarei o uso de estruturas SMB & TRANSACTION2 em versões futuras.

  • Doublepulsar_UploadShellcode.cpp - Este programa envia 5 pacotes SMB. 1 negociação, 1 configuração de sessão, 1 conexão de árvore, 1 pacote Ping Trans2 SESSION_SETUP e 1 pacote de execução Trans2 SESSION_SETUP. O pacote de requisição Trans2 SESSION_SETUP é enviado para obter a assinatura SMB no pacote de resposta TRANS2 SESSION_SETUP. Esta assinatura é processada pela calculadora de chave XOR do DoublePulsar. O programa então copia o shellcode de kernel e o shellcode de exemplo de um buffer, aplica XOR no buffer com a chave XOR do DoublePulsar que calculamos a partir da assinatura SMB. Um pacote é gerado alocando memória, copiando o pacote de execução Trans2, editando os valores necessários para a transação SMB funcionar (UserID, TreeID, TotalDataCount, DataCount, ByteCount), depois copia os Parâmetros SESSION_SETUP e 4096 bytes de dados de shellcode com XOR para o final e o envia com comprimento total de pacote de 4178 bytes para o DoublePulsar. Comprimento total do pacote = 4178. O comprimento NetBIOS será 4174, pois o cabeçalho NetBIOS não conta a si mesmo para o tamanho. 12 bytes deste pacote são para os parâmetros SESSION_SETUP do Doublepulsar. 4096 são para os dados criptografados com XOR. Em uma versão futura, serão usadas estruturas SMB & TRANSACTION2.

UploadShellcode

  • Shellcode gerado a partir de - zerosum0x0 escreveu shellcode personalizado para ETERNALBLUE que poderia ser reutilizado para DOUBLEPULSAR, embora com uma pequena modificação. Como a sobrescrita de chamada de sistema no shellcode copiado era desnecessária para este caso de uso, nós a removemos:
    ;%define SYSCALL_OVERWRITE ; to run at process IRQL in syscall
    recompile com: 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 - Este programa é destinado a executáveis. O executável será lido na memória e colocado em uma DLL inicializadora do Wannacry e enviado via DoublePulsar. 1 negociação, 1 configuração de sessão, 1 conexão de árvore, 1 pacote Trans2 Ping e múltiplos pacotes de execução Trans2 SESSION_SETUP. O pacote de requisição Trans2 Ping é enviado para obter a assinatura SMB no pacote de resposta Trans2. Esta assinatura é processada pela calculadora de chave XOR do DoublePulsar. Em seguida, o programa lê um arquivo EXE e o combina com shellcode de kernel e userland de 64 bits e um arquivo DLL esqueleto e aplica XOR no buffer com a chave XOR do DoublePulsar que calculamos a partir da assinatura SMB. Um pacote é gerado alocando memória, copiando o pacote de execução Trans2, editando os valores necessários para a transação SMB funcionar (UserID, TreeID, TotalDataCount, DataCount, ByteCount), depois copia os dados com XOR (shellcode de kernel + DLL + Executável) para o final e o percorre enviando-o em um comprimento total de pacote de 4096 bytes por vez para o DoublePulsar. Comprimento total do pacote = 4178. O comprimento NetBIOS será 4174, pois o cabeçalho NetBIOS não conta a si mesmo para o tamanho. 12 bytes deste pacote são para os parâmetros SESSION_SETUP do Doublepulsar. 4096 são para os dados criptografados com XOR.

Módulo Metasploit

Criei um módulo Metasploit personalizado que tornei funcional usando o módulo RCE DoublePulsar de código aberto do Metasploit.

Mudei a lógica para permitir que uma DLL seja gerada, mesclando-a com o shellcode do kernel x64 (prefixado) que peguei do Wannacry, para permitir que o DoublePulsar execute a DLL.

msfconsole

Código educacional extra

O repositório também contém o seguinte para fins educacionais e NÃO é suportado por mim:

  • DoublePulsar x86/x64 Upload DLL python script

  • EternalBlue All in one binary

  • Multi arch kernel queue apc assembly code & Windows x86/x64 Multi-Arch Kernel Ring 0 to Ring 3 via Queued APC kernel code

  • EternalBlue x64/x86 kernel payload shellcode from worawit

  • Eternalblue replay file

Baixar ferramenta
  • EternalBlue.cpp - Este programa envia múltiplos pacotes SMB. Negociação, SessionSetup, TreeConnect e múltiplos pacotes NT trans e Trans2. Esses pacotes NT trans são malformados, o que prepara o exploit na memória do computador vítima. Mais pacotes SMB em branco ou vazios são enviados para a vítima através de múltiplos sockets para a mesma porta na vítima. A maior parte do payload base64 do EternalBlue está sendo enviada pelo socket 1, onde os pacotes de Negociação, SessionSetup e TreeConnect foram enviados. Em seguida, outros 20 sockets são criados e dados são enviados para esses sockets (Socket 3 ao Socket 21). Depois, o DoublePulsar é enviado no Socket 3 ao Socket 21. Os sockets são então fechados pelo programa, o que detona o EternalBlue e o DoublePulsar no computador vítima. Uma requisição de desconexão SMB e logout SMB é então enviada e a conexão é encerrada. Este exploit funciona e foi testado no Windows 7 x64 bit. Levou cerca de 5 segundos para o backdoor ficar totalmente operacional, conforme já relatado em análises do EternalBlue na internet. Mais tentativas de exploração podem ser necessárias. No entanto, atualmente há um bug com o TreeID e UserID não sendo definidos corretamente nos pacotes, que será corrigido em uma versão posterior. Isso funcionará contra máquinas que foram ligadas recentemente, pois os TreeID e UserIDs estão definidos com os valores padrão. Esses pacotes precisarão ter seus valores de TreeID e UserID atualizados, pois atualmente estão definidos com os valores padrão "08 00". EternalBlue EternalBlue_cmd eternalbluepackets