
NebulousAD strumento automatizzato di audit delle credenziali.
A partire dal 14 aprile, NuID non ospiterà più l'API NebulousAD con cui questo codice comunica. In quanto piccolo team di sviluppatori, abbiamo scoperto che non è fattibile supportare, monitorare e sviluppare attivamente sia il portale NebulousAD che il nostro portale per sviluppatori di autenticazione Developer Portal in modo efficace.
Il codice per verificare le password di Active Directory rispetto a un insieme di credenziali di autenticazione violate pubblicamente continuerà a vivere in questo repository, e integreremo tutto l'ottimo feedback ricevuto attraverso la nostra esperienza con NebAD per fornire un servizio di blacklisting delle password senza soluzione di continuità insieme alla nostra API di autenticazione nei prossimi mesi. Quindi rimanete sintonizzati!
Apprezziamo il vostro coinvolgimento e feedback passati, e non vediamo l'ora di sentirvi in futuro. Non esitate a contattarci per domande riguardanti NebAD, NuID o qualsiasi cosa relativa all'identità digitale.
Arrivederci! -il team NuID
NebulousAD è uno strumento per il controllo delle password degli utenti di Active Directory rispetto a un database di password compromesse trovate in data breach. Lo strumento è stato realizzato per aiutare gli amministratori di sistema Windows a trovare e, opzionalmente, correggere l'uso di password compromesse. Questo approccio è raccomandato da NIST 800-63B e può aiutare a proteggere da attacchi di credential spraying e stuffing.
Il database Nebulous contiene attualmente oltre 2,5 miliardi di hash unici di password violate.
NebulousAD utilizza il modello di k-anonimato per impostazione predefinita per preservare la privacy e la sicurezza delle password verificate tramite l'API. Solo i primi cinque caratteri di un hash SHA-2 vengono inviati all'API. Puoi leggere ulteriori informazioni sul k-anon qui.
Lo strumento è stato originariamente rilasciato al BSides Las Vegas 2019. Un video della presentazione BSides è qui.
Funzionalità in arrivo:
Basta scaricare la release precompilata (non richiede interprete python) o compilare dal sorgente:
Questo strumento richiede Python2.7 (per ora).
Run git clone https://github.com/NuID/nebulousAD.git
Next, install with python setup.py install
Quindi inizializza la tua chiave. Puoi ottenere la tua chiave visitando: https://nebulous.nuid.io/#/register
Una volta registrato, clicca sul pulsante per generare la tua chiave API e copiala.
Ora puoi inizializzarla così: nebulousAD -init-key <api_key>
Ora puoi eseguire lo strumento. Se non trova la tua chiave API, potrebbe essere necessario riavviare la sessione del terminale. La chiave API è memorizzata in una variabile d'ambiente. Anche disconnettersi e riconnettersi funziona.
Puoi scaricare il file nebulousAD.exe, per utilizzarlo senza interprete qui.
In alternativa, puoi compilare lo strumento dal sorgente tu stesso:
pip install pyinstallergit clone https://github.com/NuID/nebulousAD.gitcd .\nebulousAD\nebulousADpyinstaller --onefile nebulousAD.pyPyinstaller restituirà la posizione del binario compilato:

Un comando di esempio per scaricare tutti gli hash e verificarli tramite l'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.
Disabilita la funzione di controllo hash con k-anonimato. È utile per accelerare il tempo di ricerca, ma comporterà l'invio dell'intero hash SHA-256(NTLM) all'API. Non registriamo né memorizziamo gli hash inviati all'API.
Il parametro -snap farà automaticamente uno snapshot di Active Directory (usando ntdsutil.exe) e scaricherà il file ntds.dit così come il hive del registro SYSTEM, se hai i privilegi necessari. Puoi scaricarli manualmente usando vari metodi o lo strumento ntdsutil.exe. Se scarichi manualmente, puoi puntare ai file con -system path\to\SYSTEM e -ntds path\to\ntds.dit. Questo è utile se vuoi controllare vecchi snapshot.
Richiede una chiave API da https://nebulous.nuid.io/#/register. Una volta ottenuta e installata con -init-key, puoi verificare gli hash tramite l'API NuID. Se hai specificato -history, controllerà anche la cronologia delle password di ogni account per vedere se c'era una password precedentemente utilizzata dall'utente che è stata compromessa.
Aggiunge un output che indica se l'account è Abilitato o Disabilitato in Active Directory.
Aggiunge un output che indica la data dell'ultima impostazione della password dell'account. Può essere utile per rilevare violazioni delle policy di sicurezza di account che non vengono reimpostati automaticamente come definito in GPO, come gli account di servizio.
Controlla o scarica anche la cronologia delle password memorizzate degli account.
Utilizza una sovrascrittura DoD a 7 passaggi quando si cancellano gli snapshot. Richiede che sdelete.exe sia nel tuo PATH. Puoi ottenerlo qui: https://docs.microsoft.com/en-us/sysinternals/downloads/sdelete Basta scaricarlo e inserirlo nella directory %SYSTEMDRIVE\Windows\System32\, o configurare la variabile d'ambiente.
Utile per pulire i backup quando si imposta l'applicazione per l'esecuzione con l'Utilità di pianificazione. Il hive SYSTEM e il file .dit possono essere piuttosto grandi in domini più estesi e occupare molto spazio su disco. Se utilizzi l'Utilità di pianificazione per eseguire un controllo giornaliero, puoi usare questa opzione così: -clean-old-snaps 7 per conservare solo una settimana di snapshot.
Se rileviamo uno snapshot vecchio, lo salviamo di default in %SYSTEMDRIVE%\Program Files\NuID\snapshot-backups. Questo perché ntdsutil.exe richiede una directory vuota. Se vuoi disabilitare questo backup e semplicemente cancellare lo snapshot corrente, usa questo argomento.
Viene fornita un'API web RESTful che consente agli utenti di utilizzare il token API NuID, una volta generato, per il proprio client personalizzato. Questa sezione delinea le funzionalità corrette dell'API web, le richieste valide, i tipi di errore e altro.
La struttura di base di ogni risposta sarà identica. Senza eccezioni, le risposte devono contenere i seguenti tre campi: success, data e error. La prima cosa da determinare al ricevimento della risposta è il valore di success. Questo determinerà se continuare a gestire l'oggetto data o gestire invece l'oggetto error. I seguenti esempi mostrano risposte generiche dal server in una situazione di successo e di fallimento:
{
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"
}
}
Ogni errore offre una comprensione di cosa è andato storto durante la richiesta, consentendo all'utente di apportare le modifiche necessarie.
Al momento è supportato un solo hash_type. Questi valori (senza distinzione tra maiuscole e minuscole) possono essere utilizzati al posto di hash_type. Viene anche fornita la dimensione della rappresentazione esadecimale del hash_value. Il hash_prefix non può superare questa dimensione:
| Hash | Length |
|---|---|
| NTLMSHA2 | 64 |
Il seguente header HTTP deve essere fornito su tutte le richieste agli endpoint API, altrimenti verrà restituito un errore:
X-NUID-API-KEY: <Your NuID API Key>
Ogni endpoint inizia con il seguente URL:
https://nebulous.nuid.io
/api/search/kanon/<hash_type>/<hash_prefix>Method: GET
Description: Interroga il database degli hash utilizzando una versione anonimizzata di un hash. L'hash completo può essere fornito, ma in alternativa può essere utilizzato un hash parziale sotto forma di prefisso di almeno 5 caratteri. Tutti gli hash nel database Nebulous corrispondenti a questo prefisso verranno restituiti senza rivelare l'hash esatto stesso.
Response:
The response from the following URL: https://nebulous.nuid.io/api/search/kanon/5f4dcc
{
"success": true,
"data": {
"matches": [
"5f4dcc3010a3b4ffd56ec97b33a0f837",
"5f4dcc3b5aa765d61d8327deb882cf99",
"5f4dcc3b5bef0f9cc4c0f96d758010b8"
]
},
"error": {}
}
/api/search/kanon/<hash_type>Method: POST Post Data:
{
"prefix": "<Hash Prefix>"
}
Description: Interroga il database degli hash utilizzando una versione anonimizzata di un hash. L'hash completo può essere fornito, ma in alternativa può essere utilizzato un hash parziale sotto forma di prefisso di almeno 5 caratteri. Tutti gli hash nel database Nebulous corrispondenti a questo prefisso verranno restituiti senza rivelare l'hash esatto stesso.
Response:
The response from the following URL: https://nebulous.nuid.io/api/search/kanon with the data {"prefix": "5f4dcc"}
{
"success": true,
"data": {
"matches": [
"5f4dcc3010a3b4ffd56ec97b33a0f837",
"5f4dcc3b5aa765d61d8327deb882cf99",
"5f4dcc3b5bef0f9cc4c0f96d758010b8"
]
},
"error": {}
}
Sembra esserci un bug in impacket che non consente di estrarre correttamente l'nthash. Evita di usare l'argomento -history per ora.
https://github.com/SecureAuthCorp/impacket/issues/395 https://github.com/SecureAuthCorp/impacket/issues/660
Contattaci a [email protected]
| Error Name | Description | Status Code |
|---|
ActionExpired | L'azione che stai cercando di invocare è scaduta e non è più valida | 401 |
ActionInvalid | L'azione che stai cercando di invocare non esiste | 401 |
AuthFailure | Combinazione utente/password non valida | 401 |
AuthMissingToken | Nessun token di autenticazione fornito | 401 |
FieldMissing | Uno o più campi mancano dalla richiesta JSON | 422 |
HashInvalidLength | L'hash fornito e la lunghezza prevista per il tipo di hash specificato non corrispondono | 422 |
HashInvalidValue | Rappresentazione esadecimale dell'hash prevista | 422 |
HashInvalidPrefix | Un prefisso deve avere una lunghezza minima di 5 caratteri | 422 |
HashUnsupported | Il tipo di hash fornito non è supportato | 422 |
InvalidJWT | Il JWT fornito non era valido | 401 |
InvalidRequest | La richiesta fornita era malformata o mancava di un payload JSON | 422 |
KeyBadUser | La chiave API fornita non corrisponde all'utente previsto | 401 |
KeyDisabled | La chiave API fornita è disabilitata | 403 |
KeyInvalid | La chiave API fornita non è valida | 401 |
KeyMissing | Nessuna chiave API fornita | 401 |
NotFound | L'endpoint che stai cercando di raggiungere non è valido | 404 |
PasswordIncorrect | La password corrente non corrisponde | 401 |
UserDisabled | L'account è attualmente disabilitato | 401 |
UserKeyLimit | Hai raggiunto il numero massimo di chiavi API | 403 |
UserNotActivated | L'account utente non è ancora stato attivato | 403 |
UserNotFound | L'account utente non può essere trovato | 401 |