Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
EternalBlueC — Suite EternalBlue rehecha en C/C++ que incluye: Exploit MS17-010, detector de vulnerabilidad EternalBlue, detector de DoublePulsar y cargador de Shellcode y DLL de DoublePulsar | Kitploit
Herramientas/GitHubGitHub/bhassani/eternalbluec
Frameworks de ExploitsAnálisis de VulnerabilidadesExplotaciónShellcodeAnálisis de MalwarePruebas de PenetraciónAprendizaje y EducaciónGeneración de ShellcodeDesarrollo de PayloadsExplotación de Binarios
GitHubbhassani/eternalbluec
613138hace 1 mesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

EternalBlueC

Suite EternalBlue rehecha en C/C++ que incluye: Exploit MS17-010, detector de vulnerabilidad EternalBlue, detector de DoublePulsar y cargador de Shellcode y DLL de DoublePulsar

Ver Repositorio

License: GPL v3

EternalBlueC

Suite EternalBlue rehecha en C/C++ que incluye:

  • Exploit MS17-010 (contiene DoublePulsar)
  • Detector de vulnerabilidad EternalBlue/MS17-010
  • Detector de DoublePulsar
  • Carga de DLL con DoublePulsar
  • Carga de shellcode con DoublePulsar
  • Carga de DLL con DoublePulsar usando estructura SMB
  • Carga de shellcode con DoublePulsar usando estructura SMB
  • Carga de EXE dentro de una DLL con DoublePulsar

Logros del proyecto

  • Carga de shellcode: completado y funcionando, inyecta tu shellcode en cualquier proceso que desees
  • Carga de DLL: completado y funcionando, inyecta tu DLL en cualquier proceso que desees
  • Carga de DLL con un EXE incrustado: completado, inyecta tu DLL en cualquier proceso que desees y extrae el ejecutable como "mssecsvc.exe"

Objetivos del proyecto

  • Permitir que los paquetes de negociación, configuración de sesión, conexión de árbol, TransNamedPipe y Transaction2 de DoublePulsar se generen dinámicamente con estructuras SMB y capturas hexadecimales
  • Permitir la edición del payload del exploit EternalBlue para eliminar el implante DoublePulsar y permitir el envío de shellcodes personalizados en su lugar
  • Permitir que los paquetes de EternalBlue se generen dinámicamente
  • Solicitar entrada del usuario para todas las direcciones IP, payloads como shellcode o rutas de archivos y autorización para continuar
  • Ser más verboso
  • Agregar la versión de Windows desde la respuesta SMB en la pantalla
  • Agregar soporte para parámetros de línea de comandos (DoublepulsarExecute.exe -h 192.168.0.8 -f PopCalculatorShellcode.bin)
  • Agregar más comprobaciones de errores, como tiempo de espera de socket

Suite EternalBlue y DoublePulsar

  • ms17_vuln_status.cpp - Este programa envía 4 paquetes SMB: 1 de negociación, 1 de configuración de sesión, 1 de conexión de árbol y 1 de solicitud TransNamedPipe. Luego lee la respuesta NT_STATUS de la solicitud TransNamedPipe (solicitud PeekNamedPipe) y determina si NT_STATUS en el paquete SMB es 0xC0000205 (STATUS_INSUFF_SERVER_RESOURCES). Si es correcto, el objetivo es vulnerable a MS17-010. Probado en Windows 7 x64 sin parche.

ms17vulnstatus

  • doublepulsar_check.cpp - Este programa envía 4 paquetes SMB: 1 de negociación, 1 de configuración de sesión, 1 de conexión de árbol y 1 paquete Trans2 SESSION_SETUP. Al enviar el paquete Trans2 SESSION_SETUP, el ID de multiplexación enviado se puede comparar en el paquete de respuesta Trans2 con el ID de multiplexación: 0x51 o 81. DoublePulsar lee el ID de multiplexación enviado y, si el comando ping es exitoso, devuelve un +10 en hexadecimal para el ID de multiplexación en la respuesta Trans2 SESSION_SETUP. Luego, se envían comandos para quemar la puerta trasera DoublePulsar. El comando de quema de DoublePulsar está en los parámetros de tiempo de espera del paquete SMB. Después de eso, DoublePulsar se vuelve inactivo y no se elimina del sistema. Probado en Windows 7 x64.

doublepulsar_check

  • DoublePulsarXORKeyCalculator.cpp - Este programa envía 4 paquetes SMB: 1 paquete de negociación y 3 solicitudes. La última solicitud es una solicitud Trans2 SESSION_SETUP. Se recibe una respuesta Trans2 SESSION_SETUP y se extrae la firma SMB en (Recvbuff[18] -> Recvbuff[22]). Recvbuff[22] indica el tipo de arquitectura. Si es 1, el objetivo es x64 bits; si es 0, el objetivo es x86/32 bits. La firma SMB se convierte de los caracteres unsigned char a un entero sin signo.

SMBSignatureWireshark

Estos valores de Recvbuff[18] -> Recvbuff[22] se procesan luego mediante la función calculadora de clave XOR de DoublePulsar, que genera una clave XOR entera sin signo que se puede usar para cifrar el shellcode o el payload DLL que se cargará en DoublePulsar. Probado en Windows 7 x64.

Captura de pantalla de ejemplo:

XORCalculator

Misma clave del binario NSA original en FUZZBUNCH XORCalculatorFromNSAbinary

  • DoublePulsar_structure_ping.cpp - Este programa envía 4 paquetes SMB: 1 de negociación, 1 de configuración de sesión, 1 de conexión de árbol y 1 paquete Trans2 SESSION_SETUP. La diferencia con doublepulsar_check.cpp es que este genera el paquete PING de DoublePulsar Trans2 usando una estructura en lugar de una cadena hexadecimal SMB fija que obtuve de una muestra de Wannacry. Otra diferencia es que este programa genera dinámicamente el paquete TreeConnect en lugar de usar el fijo presente en la muestra de Wannacry. El paquete ping generado en este programa te dirá si DoublePulsar está instalado en la máquina remota.

  • DoublePulsar_structure_exec.cpp - Este programa envía 5 paquetes SMB: 1 de negociación SMB, 1 de configuración de sesión, 1 de conexión de árbol, 1 paquete PING Trans2 SESSION_SETUP de Doublepulsar y 1 paquete de Ejecución Trans2 SESSION_SETUP de Doublepulsar. La diferencia con Doublepulsar_UploadShellcode.cpp es que este genera el paquete de Ejecución Trans2 DoublePulsar usando una estructura en lugar de una cadena hexadecimal SMB fija que obtuve de una muestra de Wannacry.

  • Doublepulsar_UploadDLL.cpp - Este programa está diseñado para DLLs. Envía 4 paquetes SMB junto con los datos de la DLL en paquetes Trans2 SMB: 1 de negociación, 1 de configuración de sesión, 1 de conexión de árbol, 1 solicitud PING Trans2 SESSION_SETUP y un paquete de Ejecución Trans2 SESSION_SETUP. El paquete de solicitud PING Trans2 SESSION_SETUP se envía para obtener la firma SMB en el paquete de respuesta Trans2 SESSION_SETUP. Esta firma se procesa mediante la calculadora de clave XOR de DoublePulsar. Luego, el programa lee un archivo DLL y lo combina con shellcode de kernel de 64 bits y espacio de usuario para ejecutar la DLL y aplica XOR al búfer con la clave XOR de DoublePulsar que calculamos a partir de la firma SMB. Se genera un paquete asignando memoria, copiando el paquete Trans2, editando los valores necesarios para que la transacción SMB funcione (UserID, TreeID, TotalDataCount, DataCount, ByteCount), luego copiando los datos con XOR (shellcode de kernel + DLL) al final y recorriéndolo enviándolo en fragmentos de 4096 bytes a DoublePulsar. Longitud total del paquete = 4178. 4096 son para los datos cifrados con XOR. También se implementará el uso de estructuras SMB y TRANSACTION2 en futuras versiones.

  • Doublepulsar_UploadShellcode.cpp - Este programa envía 5 paquetes SMB: 1 de negociación, 1 de configuración de sesión, 1 de conexión de árbol, 1 paquete PING Trans2 SESSION_SETUP y 1 paquete de ejecución Trans2 SESSION_SETUP. El paquete de solicitud Trans2 SESSION_SETUP se envía para obtener la firma SMB en el paquete de respuesta TRANS2 SESSION_SETUP. Esta firma se procesa mediante la calculadora de clave XOR de DoublePulsar. Luego, el programa copia shellcode de kernel y shellcode de muestra desde un búfer, aplica XOR al búfer con la clave XOR de DoublePulsar que calculamos a partir de la firma SMB. Se genera un paquete asignando memoria, copiando el paquete de ejecución Trans2, editando los valores necesarios para que la transacción SMB funcione (UserID, TreeID, TotalDataCount, DataCount, ByteCount), luego copiando los parámetros SESSION_SETUP y 4096 bytes de datos de shellcode con XOR al final y lo envía con una longitud total de paquete de 4178 bytes a DoublePulsar. Longitud total del paquete = 4178. La longitud NetBIOS será 4174 ya que el encabezado NetBIOS no se cuenta a sí mismo para el tamaño. 12 bytes de este paquete son para los parámetros SESSION_SETUP de Doublepulsar. 4096 son para los datos cifrados con XOR. En una versión futura, se usarán estructuras SMB y TRANSACTION2.

UploadShellcode

  • Shellcode generado de - zerosum0x0 escribió shellcode personalizado para ETERNALBLUE que podría reutilizarse para DOUBLEPULSAR, aunque con una pequeña modificación. Dado que la sobrescritura de syscall en el shellcode copiado no era necesaria para este caso de uso, la indefinimos:
    ;%define SYSCALL_OVERWRITE ; to run at process IRQL in syscall
    recompilar 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 - Este programa está diseñado para ejecutables. El ejecutable se leerá en memoria y se colocará en una DLL lanzadora de Wannacry y se enviará a través de DoublePulsar: 1 de negociación, 1 de configuración de sesión, 1 de conexión de árbol, 1 paquete Trans2 Ping y múltiples paquetes exec Trans2 SESSION_SETUP. El paquete de solicitud Trans2 Ping se envía para obtener la firma SMB en el paquete de respuesta Trans2. Esta firma se procesa mediante la calculadora de clave XOR de DoublePulsar. Luego, el programa lee un archivo EXE y lo combina con shellcode de kernel de 64 bits y espacio de usuario y un archivo DLL esqueleto y aplica XOR al búfer con la clave XOR de DoublePulsar que calculamos a partir de la firma SMB. Se genera un paquete asignando memoria, copiando el paquete de ejecución Trans2, editando los valores necesarios para que la transacción SMB funcione (UserID, TreeID, TotalDataCount, DataCount, ByteCount), luego copiando los datos con XOR (shellcode de kernel + DLL + Ejecutable) al final y recorriéndolo enviándolo en fragmentos de 4096 bytes a DoublePulsar. Longitud total del paquete = 4178. La longitud NetBIOS será 4174 ya que el encabezado NetBIOS no se cuenta a sí mismo para el tamaño. 12 bytes de este paquete son para los parámetros SESSION_SETUP de Doublepulsar. 4096 son para los datos cifrados con XOR.

Módulo de Metasploit

Creé un módulo personalizado de Metasploit que hice funcional usando el módulo RCE de DoublePulsar de código abierto de Metasploit.

Cambié la lógica para permitir generar una DLL, fusionarla con el shellcode de kernel x64 (antepuesto) que tomé de Wannacry, para permitir que DoublePulsar ejecute la DLL.

msfconsole

Código educativo adicional

El repositorio también contiene lo siguiente con fines educativos y NO tienen soporte por mi parte:

  • Script de Python de carga de DLL DoublePulsar x86/x64

  • Binario EternalBlue todo en uno

  • Código ensamblador multiarquitectura de cola APC de kernel y código de kernel Windows x86/x64 Multi-Arch Kernel Ring 0 a Ring 3 mediante Queued APC

  • Shellcode de payload de kernel EternalBlue x64/x86 de worawit

  • Archivo de reproducción Eternalblue

Descargar herramienta
  • EternalBlue.cpp - Este programa envía múltiples paquetes SMB: Negotiation, SessionSetup, TreeConnect y múltiples paquetes NT trans y Trans2. Estos paquetes NT trans están malformados, lo que prepara el exploit en la memoria de la computadora víctima. Se envían más paquetes SMB de espacio en blanco o vacíos a la víctima a través de múltiples sockets al mismo puerto en la víctima. La mayor parte del payload base64 de EternalBlue se envía a través del socket 1, donde se enviaron los paquetes Negotiation, SessionSetup y TreeConnect. Luego, se crean otros 20 sockets y se envían datos a esos sockets (Socket 3 a Socket 21). Posteriormente, se envía DoublePulsar en los sockets 3 a 21. Luego, el programa cierra los sockets, lo que detona EternalBlue y DoublePulsar en la computadora víctima. Luego se envía una solicitud de desconexión SMB y cierre de sesión SMB y la conexión se cierra. Este exploit funciona y se probó en Windows 7 x64. Tomó alrededor de 5 segundos para que la puerta trasera estuviera completamente operativa, como ya se informó en los análisis de EternalBlue en Internet. Pueden ser necesarios más intentos de explotación. Sin embargo, actualmente hay un error con TreeID y UserID que no se configuran correctamente en los paquetes, lo que se corregirá en una versión posterior. Esto funcionará contra máquinas recién encendidas, ya que TreeID y UserID están configurados con los valores predeterminados. Estos paquetes deberán tener sus valores TreeID y UserID actualizados, ya que actualmente están configurados con los valores predeterminados "08 00". EternalBlue EternalBlue_cmd eternalbluepackets