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
Certighost_CVE-2026-54121 — Exploit de un clic para CVE-2026-54121 (Certighost) dirigido a la suplantación de identidad de certificados AD CS. Automatiza la creación de cuentas de máquina, la redirección de tráfico, una CA rogue, PKINIT y la extracción de hashes NT para el compromiso del dominio. | Kitploit
Herramientas/GitHubGitHub/trya9ain/certighost_cve-2026-54121
Análisis de VulnerabilidadesExplotaciónPost-ExplotaciónPruebas de PenetraciónRed Teaming
GitHubtrya9ain/certighost_cve-2026-54121

Certighost_CVE-2026-54121

Exploit de un clic para CVE-2026-54121 (Certighost) dirigido a la suplantación de identidad de certificados AD CS. Automatiza la creación de cuentas de máquina, la redirección de tráfico, una CA rogue, PKINIT y la extracción de hashes NT para el compromiso del dominio.

Ver Repositorio
hace 9h 25mAún no revisado

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

certighost-oneclick

Herramienta de explotación de un solo clic para CVE-2026-54121 (Certighost) — solo para laboratorios locales/pruebas autorizadas.

Versión nativa para Windows adaptada del PoC upstream (análisis de @h0j3n / implementación de @aniqfakhrul): Incluye un redireccionador WinDivert propio (pydivert), un solo comando completa "crear cuenta → redirigir → escucha rogue → CA chase → certificado de identidad de DC → PKINIT → hash NT de la cuenta de máquina del DC", sin detener el servicio Server, sin modificar ninguna configuración del host, y se restaura al salir.

Diferencias con el upstream (lista de parches)

ParcheDescripción
--redirectRedireccionador WinDivert integrado (445 → --lsa-port, filtro de dominio estrecho: solo intercepta tráfico de la IP del listener), se inicia/detiene con el proceso y restaura 445 automáticamente al salir. Sustituye al PortBender oficial (cuyo artefacto oficial es un DLL reflectivo de 32 bits específico para CS, no puede ejecutarse de forma independiente)
--lsa-portPuerto de escucha rogue LSA/SMB parametrizado (por defecto 445; con --redirect por defecto 8445)
Guarda os.geteuidLa comprobación de root del upstream falla en Windows → guarda con hasattr + aviso de puerto en Windows
Comprobación de disponibilidad parametrizadaEl upstream tiene hardcodeado port_ok(127.0.0.1, 445) → args.lsa_port
Cabecera PEP 723uv run certighost.py ... se ejecuta directamente, dependencias resueltas automáticamente (incluido impacket git-master), cero contaminación del entorno
--new-computer-nameNombre personalizado para la cuenta creada (evita la firma de detección GHOST*)
--new-computer-passContraseña personalizada para la cuenta creada (debe cumplir la política de contraseñas del dominio)
Polyfill random.randbytesimpacket git-master usa API 3.9+ en la importación de smbserver; necesario para 3.8, implementado con os.urandom
Salida inmediata al finalizarflush + os._exit() tras GGWP (elimina de raíz el cuelgue de minutos causado por hilos no daemon de impacket)
Códigos de salida semánticos0 éxito / 1 fallo
Guardado de <dc>.hash.txtEl hash NT de la cuenta de máquina del DC se escribe en un archivo (solo una línea name:lm:nt)

Uso

① Precomprobación (solo lectura, confirma CA y requisitos de explotación):

root@kitploit:~
uv run check_ca.py -d bingo.com -dc-ip 192.168.16.144 -u zhaolei -p 'pass'

Muestra la lista de Enterprise CA, emisión de plantilla Machine y permisos de registro (requiere que Domain Computers tenga Enroll). En la máquina CA verifique además el indicador chase: certutil -getreg policy\EditFlags (debe tener EDITF_ENABLECHASECLIENTDC; verificado activado por defecto en instalación de Server 2016).

② Explotación de un solo clic (Windows, administrador):

root@kitploit:~
uv run certighost.py -d bingo.com -u zhaolei -p '[email protected]' \
  --dc-ip 192.168.16.144 --listener <IP alcanzable desde este host> --redirect \
  --new-computer-name MACH$ --new-computer-pass 'Your@Pw123!'

Tres artefactos de salida (guardados automáticamente en el directorio de ejecución):

ArchivoContenido
<dc>.pfxCertificado de identidad del DC (material PKINIT)
<dc>.ccacheCaché de tickets Kerberos
<dc>.hash.txtHash NT de la cuenta de máquina del DC (solo una línea name:lm:nt)

③ Limpieza (eliminar la cuenta creada):

root@kitploit:~
uv run cleanup_ghost.py -d bingo.com -dc-ip 192.168.16.144 -u administrator -p 'pass' --prefix MACH

Parámetros (estilo impacket)

ParámetroDescripción
-d / -u / -p / -HDominio / usuario de bajos privilegios / contraseña / hash NTLM
--dc-ipDirección del DC (obligatorio)
--listener IPIP del listener rogue (especificar explícitamente si hay múltiples NIC)
--redirectNúcleo de Windows: redirección WinDivert integrada de 445 (requiere administrador + pydivert)
--lsa-port NPuerto LSA rogue (por defecto 8445 con --redirect)
--new-computer-nameNombre personalizado para la cuenta creada (añade $ automáticamente)
--new-computer-passContraseña personalizada para la cuenta creada (mutuamente excluyente con la ruta existing)
--computer-name/--computer-pass/--computer-hashSin MAQ: reutilizar una cuenta de máquina ya controlada
--target-san DC01$Especificar el objetivo a suplantar (por defecto descubre el DC automáticamente)
--templatePlantilla de certificado (por defecto Machine)
--ca / --ca-ipEspecificar CA manualmente
--debugTrazado completo de todas las fases del protocolo

Flujo interno

root@kitploit:~
Phase1  Usuario de bajos privilegios crea cuenta de máquina (ruta MAQ automática / --new-computer-* personalizada / --computer-* reutiliza existente)
Phase2  [Windows] Redireccionador WinDivert integrado: listener_ip:445 -> :lsa_port
        Filtro de dominio estrecho (solo esa IP), los paquetes reescritos salen del filtro = sin bucle de reinyección; el handle se cierra con el proceso
Phase3  Servidor rogue: LDAP:389 + LSA/SMB:lsa_port (responde al chase cdc/rmd, alimenta datos de identidad del DC)
Phase4  Envía solicitud de certificado como identidad de máquina (plantilla Machine), el CA se conecta de vuelta al rogue → emite certificado de identidad del DC
Phase5  PKINIT → el KDC devuelve el hash NT de la cuenta de máquina del DC en el PAC → se extrae y escribe en .hash.txt
Phase6  (Posterior) secretsdump DCSync → krbtgt → control total del dominio; cleanup_ghost elimina la cuenta creada

El uso en Linux no cambia (root enlaza directamente 445/389, sin --redirect).

Mecanismo de extracción de hash (no es DCSync)

La extracción de hash de la cadena de ataque usa PKINIT → PAC → hash NT, no DCSync:

  1. Se engaña al CA para que emita un certificado con "identidad = cuenta de máquina del DC"
  2. El script usa el certificado para Kerberos PKINIT (preautenticación de clave pública)
  3. El KDC devuelve el hash NT de esa cuenta en PAC_CREDENTIAL_INFO del AS-REP (comportamiento de diseño del protocolo Kerberos: al autenticar con certificado, inserta el hash NT en el PAC para compatibilidad con aplicaciones NTLM antiguas)
  4. El script descifra el PAC, extrae el hash → lo imprime + lo guarda en disco

Usar secretsdump para DCSync después de obtener el hash es una operación de segundo paso, no la fuente del hash.

Empaquetado (exe de un solo archivo, formato de entrega Arquitectura A)

root@kitploit:~
# PowerShell 7
./build_exe.ps1              # Nivel por defecto  (Win10 / Server 2016+)
./build_exe.ps1 3.10         # Nivel compatible  (Win8.1 / Server 2012 R2+)
./build_exe.ps1 legacy       # Nivel heredado  (Win7 SP1 / Server 2008 R2 x64)

Artefacto dist\certighost_x64.exe: 19-27MB (según nivel), auto-elevación --uac-admin, cero dependencias, el script genera automáticamente la suma de verificación SHA256.

Requisitos de compilación del nivel heredado (legacy)

Se requiere CPython 3.8.10 oficial de python.org instalado en la siguiente ruta (la última compilación binaria oficial que soporta el kernel de Win7, no depende de las nuevas API UCRT):

root@kitploit:~
D:\网安相关\Tools\Python\cpython-3.8.10-x64\

Comando de instalación (silencioso, sin escribir en PATH, sin instalar el launcher):

root@kitploit:~
python-3.8.10-amd64.exe /quiet InstallAllUsers=0 TargetDir=D:\网安相关\Tools\Python\cpython-3.8.10-x64 PrependPath=0 Include_launcher=0

Además, fijar PyInstaller==5.13.2 (el bootloader 6.x no soporta el kernel de Win7) y cryptography==38.0.4 (las ruedas Rust a partir de 38.x requieren Win10+), ambos ya fijados en el script.

Matriz de verificación en hardware real

NivelSistema realCadena completaNotas
Por defectoWin11✅
Compatible 3.10Win11 / Win10 / Server 2012 R2✅ ×3Incluye WinDivert en hardware real
Heredado legacyWin11 / Server 2008 R2 x64✅ ×23.8.10 oficial + PyInstaller 5.13.2

Nota: PyInstaller+impacket son un foco importante de firmas de antivirus, evalúe usted mismo antes del despliegue.

Arquitectura de despliegue operativo (modelo de dos máquinas)

  • Arquitectura A (formato por defecto de esta herramienta): entregar el exe completo en un punto de apoyo con salida a internet (requiere administrador) y ejecutar directamente;
  • Arquitectura B (punto de apoyo valioso): la herramienta se queda en local, el punto de apoyo solo aloja reenvío remoto por túnel (389 enlace directo + 445 requiere el mismo redireccionador de esta herramienta).

Puntos de detección (equipo azul)

  • Aparece en la base de datos del CA un certificado sospechoso emitido con identidad de DC (residuo permanente) — primer ancla forense
  • Eventos 4886/4887 del CA (emisión de certificados) con discrepancia entre solicitante e identidad objetivo (Elastic/Nextron tienen reglas listas)
  • Cuentas de máquina GHOST*/personalizadas recién creadas (4741) + solicitudes de registro al CA por usuarios de bajos privilegios
  • Evento de carga del driver WinDivert en el punto de apoyo (común a Arquitecturas A/B)

Limitaciones conocidas

  • Requiere Enterprise CA + usuario de bajos privilegios con permiso de registro + DC sin el parche de 2026-07 + indicador chase activado
  • El objetivo solo puede ser una cuenta de computadora (limitado por los permisos de registro de la plantilla Machine y el mecanismo de identidad dNSHostName) pero la cuenta de máquina del DC = DCSync = dominio completo, efecto equivalente a obtener todos los administradores de dominio
  • Cadena completa verificada en Server 2016; 2012R2~2025 inferido como viable (mismo mecanismo chase)
  • La ruta de creación de cuenta es una escalera descendente: si LDAPS falla, retrocede automáticamente a SAMR
  • En la fase PKINIT ocasionalmente aparece ciphertext integrity failure: observado una vez, se resuelve reintentando
  • El redireccionador está diseñado para dominio estrecho IPv4, el escenario IPv6 no está cubierto

Lista de archivos

root@kitploit:~
certighost.py            Exploit principal (upstream + parches de nativización para Windows + PEP 723)
certighost_redirect.py   Redireccionador WinDivert 445 propio (pydivert; autocomprobación --selftest/--e2e)
check_ca.py              Precomprobación: CA/plantilla/permisos de registro/indicador chase (solo lectura)
cleanup_ghost.py         Finalización: eliminar la cuenta creada
build_exe.ps1            Empaquetado de un solo archivo con PyInstaller (pwsh7, matriz de tres niveles, SHA256 automático)

Upstream y agradecimientos

  • Investigación original y PoC: @h0j3n (análisis en gist), @aniqfakhrul/CVE-2026-54121 (implementación upstream)
  • Kudelski Security (descubridor de la vulnerabilidad); PortBender (Praetorian, fuente de la idea de redirección)
  • pydivert (enlaces Python de WinDivert 2.2.2)
Descargar herramienta