
Auditing offline rapido delle password di Active Directory usando Python.
Auditing offline veloce delle password di Active Directory usando Python.
Lil Pwny è un'applicazione Python per eseguire un audit offline degli hash NTLM delle password degli utenti, recuperati da Active Directory, confrontandoli con password compromesse note di Have I Been Pwned. I risultati verranno prodotti in formato JSON contenenti il nome utente, l'hash corrispondente (può essere offuscato) e il numero di volte che la password corrispondente è stata vista in HIBP.
Maggiori informazioni su Lil Pwny si trovano sul mio blog
Lil Pwny fornisce la funzionalità per migliorare la tua lista di password personalizzate aggiungendo varianti comunemente usate. Queste includono:
P@ssw0rd)PASSWORD, Password)password!, !password)password123!, !passwordabc, passwordpassword)
password1950, password2034)Una lista di 100 password in chiaro genera 49848660 varianti.
Lil Pwny cerca utenti che stanno usando varianti del loro nome utente come password.
Converte il nome utente nei seguenti formati:
Questi vengono poi convertiti in hash NTLM e controllati rispetto agli hash AD.
Questa applicazione è stata sviluppata per sfruttare al massimo il multiprocessing in Python, con l'obiettivo di funzionare il più velocemente possibile su hardware consumer.
Poiché utilizza il multiprocessing, più core hai a disposizione, più velocemente Lil Pwny dovrebbe funzionare. Ho comunque ottenuto ottimi risultati con un numero ridotto di core logici:
Lil Pwny produrrà i risultati su stdout:
o JSON:
{"localtime": "2021-00-00 00:00:00,000", "level": "NOTIFY", "source": "Lil Pwny", "match_type": "hibp", "detection_data": {"username": "RICKON.STARK", "hash": "32ED87BDB5FDC5E9CBA88547376818D4", "matches_in_hibp": "24230577", "obfuscated": "True"}}
Puoi reindirizzare l'output JSON di Lil Pwny su file:
lil-pwny -ad ... > lil-pwny-results.json
Questo logging in formato JSON può essere facilmente inserito in un SIEM o altro strumento di analisi dei log, e può essere inviato ad altri script o piattaforme per azioni di risoluzione automatizzate.
Installa tramite pip
pip install lil-pwny
Lil-pwny verrà installato come comando globale, usalo come segue:
usage: lil-pwny [-h] -hibp HIBP [-v] [-c CUSTOM] [-custom-enhance CUSTOM_ENHANCE] -ad AD_HASHES [-d] [-output {file,stdout,json}] [-o] [--verbose]
Fast offline auditing of Active Directory passwords using Python
opzioni:
-h, --help mostra questo messaggio di aiuto ed esci
-hibp HIBP, --hibp HIBP
Il file .txt contenente gli hash NTLM HIBP
-v, --version mostra il numero di versione ed esci
-c CUSTOM, --custom CUSTOM
file .txt contenente password personalizzate aggiuntive da controllare
-custom-enhance CUSTOM_ENHANCE, --custom-enhance CUSTOM_ENHANCE
genera una lista di password personalizzate avanzata basata sulla lista fornita. Deve essere usato con il flag -c/--custom. La lista avanzata verrà memorizzata in memoria e non scritta su disco. Fornisci la lunghezza minima delle password desiderata. Il valore predefinito è 8
-ad AD_HASHES, --ad-hashes AD_HASHES
Il file .txt contenente gli hash NTLM degli utenti AD
-d, --duplicates Mostra una lista di utenti con password duplicate
-output {file,stdout,json}, --output {file,stdout,json}
Dove inviare i risultati
-o, --obfuscate Offusca gli hash delle corrispondenze trovate tramite hash con un sale casuale
--verbose Attiva logging dettagliato
Esempio:
lil-pwny -hibp ~/hibp_hashes.txt -ad ~/ad_user_hashes.txt -c ~/custom_passwords.txt -output stdout -do
Su un controller di dominio usa ntdsutil per generare un dump IFM del tuo dominio AD. Esegui il seguente comando in una finestra PowerShell con privilegi elevati:
ntdsutil
activate instance ntds
ifm
create full **output path**
Per recuperare gli hash NTLM dai dati IFM AD, è necessario il modulo PowerShell DSInternals.
Una volta installato, usa il hive SYSTEM nei dati IFM per recuperare gli hash nel formato usernme:hash e salvali nel file ad_ntlm_hashes.txt
$bootKey = Get-BootKey -SystemHivePath '.\registry\SYSTEM'
Get-ADDBAccount -All -DBPath '.\Active Directory\ntds.dit' -BootKey $bootKey | Format-Custom -View HashcatNT | Out-File ad_ntlm_hashes.txt -Encoding ASCII
Il file può essere scaricato dall'API HIBP usando un'utility .NET qui
Lo script PowerShell nella directory scripts può essere usato per rimuovere account indesiderati dall'output IFM prima dell'elaborazione. Questi includono: