
NebulousAD, herramienta automatizada de auditoría de credenciales.
A partir del 14 de abril, NuID ya no alojará la API de NebulousAD con la que se comunica este código. Como un pequeño equipo de desarrolladores, hemos descubierto que no es factible dar soporte, monitorear y desarrollar activamente tanto el portal de NebulousAD como nuestro Portal de Desarrolladores de Autenticación de manera efectiva.
El código para verificar las contraseñas de Active Directory contra un conjunto de credenciales de autenticación públicas filtradas seguirá viviendo en este repositorio, e incorporaremos todos los excelentes comentarios que hemos recibido a través de nuestra experiencia con NebAD para proporcionar un servicio de listas negras de contraseñas sin problemas junto con nuestra API de Autenticación en los próximos meses. ¡Así que manténganse atentos!
Agradecemos su participación y comentarios en el pasado, y esperamos tener noticias suyas en el futuro. No duden en contactarnos con preguntas sobre NebAD, NuID o cualquier cosa relacionada con la identidad digital.
¡Hasta luego! -el equipo de NuID
NebulousAD es una herramienta para auditar contraseñas de usuarios de Active Directory contra una base de datos de contraseñas comprometidas encontradas en filtraciones de datos. La herramienta fue creada para ayudar a los administradores de sistemas Windows a encontrar y, opcionalmente, remediar el uso de contraseñas comprometidas. Este enfoque es recomendado por NIST 800-63B, y puede ayudar a proteger contra ataques de rociado de credenciales y relleno de credenciales.
Actualmente, la base de datos de Nebulous contiene más de 2.5 mil millones de hashes únicos de contraseñas filtradas.
NebulousAD utiliza el modelo de k-anonimato por defecto para preservar la privacidad y seguridad de las contraseñas verificadas contra la API. Solo se envían a la API los primeros cinco caracteres de un hash SHA-2. Puede leer más sobre k-anon aquí.
La herramienta fue lanzada originalmente en BSides Las Vegas 2019. Un video de la presentación de BSides está aquí.
Funciones próximas:
Simplemente descargue la versión precompilada (no requiere intérprete de Python) o construya desde el código fuente:
Esta herramienta requiere Python 2.7 (por ahora).
Ejecute git clone https://github.com/NuID/nebulousAD.git
Luego, instale con python setup.py install
Luego inicialice su clave. Puede obtener su clave visitando: https://nebulous.nuid.io/#/register
Una vez registrado, haga clic en el botón para generar su clave API y cópiela.
Ahora puede inicializarlas así: nebulousAD -init-key <api_key>
Ahora puede ejecutar la herramienta. Si no encuentra su clave API, es posible que deba reiniciar su sesión de terminal. La clave API se almacena en una variable de entorno. Cerrar sesión y volver a iniciarla también funciona.
Puede descargar el archivo nebulousAD.exe para usarlo sin un intérprete aquí.
Alternativamente, puede compilar la herramienta desde el código fuente usted mismo:
pip install pyinstallergit clone https://github.com/NuID/nebulousAD.gitcd .\nebulousAD\nebulousADpyinstaller --onefile nebulousAD.pyPyinstaller mostrará la ubicación del binario compilado:

Un comando de ejemplo para volcar todos los hashes y verificarlos contra la API:
nebulousAD.exe -v -snap --check
NuID Credential Auditing tool.
optional arguments:
-h, --help show this help message and exit
-ntds NTDS NTDS.DIT file to parse
-system SYSTEM SYSTEM registry hive to parse
-csv CSV Output results to CSV file at this PATH.
-json JSON Output results to JSON file at this PATH
-init-key INIT_KEY Install your Nu_I.D. API key to the current users
PATH.
-c, --check Check against Nu_I.D. API for compromised
credentials.
-dk, --disable-k-anon
Disable k-anon hash searches against the API (speeds
up the audit).
-snap Use ntdsutil.exe to snapshot the system registry
hive and ntds.dit file to <systemDrive>:\Program
Files\NuID\
-shred When performing delete operations on files, use a 7
pass overwrite with sdelete.exe. Download here:
https://docs.microsoft.com/en-
us/sysinternals/downloads/sdelete
-no-backup Do not backup the existing snapshots, just overwrite
them instead.
-clean-old-snaps CLEAN_OLD_SNAPS
Clean backups older than N days.
display options:
-user-status Display whether or not the user is disabled
-pwd-last-set Shows pwdLastSet attribute for each account found
within the NTDS.DIT database.
-history Dump NTLM hash history of the users.
-v Enable verbose mode.
Desactiva la función de verificación de hash de k-anonimato. Esto es útil para acelerar el tiempo de búsqueda, pero resultará en que el hash completo SHA-256(NTLM) se envíe a la API. No registramos ni almacenamos los hashes enviados a la API.
El parámetro -snap tomará automáticamente una instantánea de Active Directory (usando ntdsutil.exe) y volcará el archivo ntds.dit así como el hive del registro SYSTEM, si tiene los privilegios.
Puede volcar esto manualmente usando varios métodos o la herramienta ntdsutil.exe.
Si lo vuelca manualmente, puede apuntar a los archivos con -system ruta\a\SYSTEM y -ntds ruta\a\ntds.dit. Esto es útil si desea auditar instantáneas antiguas.
Esto requiere una clave API de https://nebulous.nuid.io/#/register. Una vez que la tenga y la haya instalado con -init-key, puede verificar los hashes contra la API de NuID.
Si ha especificado -history, también verificará el historial de contraseñas de cada cuenta para ver si hubo una contraseña que el usuario usó anteriormente y que fue comprometida.
Añade una salida que indica si la cuenta está Habilitada o Deshabilitada en Active Directory.
Añade una salida que indica la fecha en que se estableció por última vez la contraseña de la cuenta. Esto puede ser útil para detectar violaciones de la política de seguridad de cuentas que no se restablecen automáticamente según lo definido en GPO, como las cuentas de servicio.
También audita o vuelca el historial de contraseñas almacenadas de las cuentas.
Utilice una sobrescritura de 7 pasos del DoD al limpiar instantáneas. Esto requiere tener sdelete.exe en su PATH. Puede obtenerlo aquí: https://docs.microsoft.com/en-us/sysinternals/downloads/sdelete
Simplemente descárguelo y colóquelo en su directorio %SYSTEMDRIVE\Windows\System32\, o configure la variable de entorno.
Útil para limpiar copias de seguridad al configurar esta aplicación para que se ejecute con el Programador de tareas. El hive SYSTEM y el archivo .dit pueden ser bastante grandes en dominios más grandes y ocupar una buena cantidad de espacio en disco.
Si usa el Programador de tareas para realizar una auditoría diaria, puede usar esta opción así: -clean-old-snaps 7 para almacenar solo 1 semana de instantáneas.
Si detectamos una instantánea antigua, la respaldamos en %SYSTEMDRIVE%\Program Files\NuID\snapshot-backups por defecto.
Esto se debe a que ntdsutil.exe requiere un directorio vacío.
Si desea deshabilitar esta copia de seguridad y simplemente limpiar la instantánea actual, use este argumento.
Se proporciona una API web RESTful que permitirá a los usuarios utilizar el Token de API de NuID, una vez generado, para su propio cliente personalizado. Esta sección describe la funcionalidad adecuada de la API web, las solicitudes válidas, los tipos de error y más.
La estructura básica de cada respuesta será idéntica. Sin excepción, las respuestas deben contener los siguientes tres campos: success, data y error. Lo primero que debe determinar al recibir la respuesta es el valor de success. Esto determinará si debe continuar manejando el objeto data o manejar el objeto error en su lugar. Los siguientes ejemplos muestran respuestas genéricas del servidor tanto en una situación de éxito como de fracaso:
{
success: True, // Indicates the request completed successfully
data: {
/* value depends on endpoint queried */
},
error: {} // Empty
}
{
success: False, // Indicates the request did not complete successfully
data: { }, // Empty
error: {
"ErrorName": "Helpful description of the error that occurred during the request"
}
}
Cada error ofrece información sobre lo que salió mal durante la solicitud, permitiendo al usuario realizar los cambios necesarios.
En este momento solo se admite un hash_type. Estos valores (sin distinción de mayúsculas y minúsculas) se pueden usar en lugar de hash_type. También se proporciona el tamaño de la representación hexadecimal del hash_value. El hash_prefix no puede exceder este tamaño:
| Hash | Longitud |
|---|---|
| NTLMSHA2 | 64 |
El siguiente encabezado HTTP debe proporcionarse en todas las solicitudes de endpoints de la API, de lo contrario se devolverá un error:
X-NUID-API-KEY: <Your NuID API Key>
Cada endpoint comienza con la siguiente URL:
https://nebulous.nuid.io
/api/search/kanon/<hash_type>/<hash_prefix>Método: GET
Descripción: Consulta la base de datos de hashes utilizando una versión anonimizada de un hash. Se puede proporcionar el hash completo, pero alternativamente se puede usar un hash parcial en forma de un prefijo de al menos 5 caracteres de longitud. Todos los hashes en la base de datos Nebulous que coincidan con este prefijo serán devueltos sin revelar el hash exacto en sí.
Respuesta:
La respuesta de la siguiente URL: https://nebulous.nuid.io/api/search/kanon/5f4dcc
{
"success": true,
"data": {
"matches": [
"5f4dcc3010a3b4ffd56ec97b33a0f837",
"5f4dcc3b5aa765d61d8327deb882cf99",
"5f4dcc3b5bef0f9cc4c0f96d758010b8"
]
},
"error": {}
}
/api/search/kanon/<hash_type>Método: POST Datos POST:
{
"prefix": "<Hash Prefix>"
}
Descripción: Consulta la base de datos de hashes utilizando una versión anonimizada de un hash. Se puede proporcionar el hash completo, pero alternativamente se puede usar un hash parcial en forma de un prefijo de al menos 5 caracteres de longitud. Todos los hashes en la base de datos Nebulous que coincidan con este prefijo serán devueltos sin revelar el hash exacto en sí.
Respuesta:
La respuesta de la siguiente URL: https://nebulous.nuid.io/api/search/kanon con los datos {"prefix": "5f4dcc"}
{
"success": true,
"data": {
"matches": [
"5f4dcc3010a3b4ffd56ec97b33a0f837",
"5f4dcc3b5aa765d61d8327deb882cf99",
"5f4dcc3b5bef0f9cc4c0f96d758010b8"
]
},
"error": {}
}
Parece haber un error en impacket que no permite extraer el nthash correctamente.
Evite usar el argumento -history por ahora.
https://github.com/SecureAuthCorp/impacket/issues/395 https://github.com/SecureAuthCorp/impacket/issues/660
Contáctenos en [email protected]
| Nombre del Error | Descripción | Código de Estado |
|---|
ActionExpired | La acción que intenta invocar ha caducado y ya no es válida | 401 |
ActionInvalid | La acción que intenta invocar no existe | 401 |
AuthFailure | Combinación de usuario/contraseña no válida | 401 |
AuthMissingToken | No se proporcionó ningún token de autenticación | 401 |
FieldMissing | Falta uno o más campos en la solicitud JSON | 422 |
HashInvalidLength | El hash proporcionado y la longitud esperada para el tipo de hash dado no coinciden | 422 |
HashInvalidValue | Se esperaba una representación hexadecimal del hash | 422 |
HashInvalidPrefix | Un prefijo debe tener una longitud mínima de 5 caracteres | 422 |
HashUnsupported | El tipo de hash proporcionado no es compatible | 422 |
InvalidJWT | El JWT proporcionado no era válido | 401 |
InvalidRequest | La solicitud proporcionada estaba mal formada o faltaba un payload JSON | 422 |
KeyBadUser | La clave API proporcionada no coincide con el usuario esperado | 401 |
KeyDisabled | La clave API proporcionada está deshabilitada | 403 |
KeyInvalid | La clave API proporcionada no es válida | 401 |
KeyMissing | No se proporcionó ninguna clave API | 401 |
NotFound | El endpoint al que intenta acceder no es válido | 404 |
PasswordIncorrect | La contraseña actual no coincide | 401 |
UserDisabled | La cuenta está actualmente deshabilitada | 401 |
UserKeyLimit | Ha alcanzado el número máximo de claves API | 403 |
UserNotActivated | La cuenta de usuario aún no ha sido activada | 403 |
UserNotFound | La cuenta de usuario no se puede encontrar | 401 |