
Schnelle Offline-Prüfung von Active Directory-Passwörtern mit Python.
Schnelle Offline-Überprüfung von Active Directory-Passwörtern mit Python.
Lil Pwny ist eine Python-Anwendung zur Offline-Überprüfung von NTLM-Hashes von Benutzerpasswörtern, die aus Active Directory gewonnen wurden, gegen bekannte kompromittierte Passwörter aus Have I Been Pwned. Die Ergebnisse werden im JSON-Format ausgegeben und enthalten den Benutzernamen, den passenden Hash (kann verschleiert werden) und wie oft das passende Passwort in HIBP gefunden wurde.
Weitere Informationen zu Lil Pwny finden Sie auf meinem Blog
Lil Pwny bietet die Möglichkeit, Ihre benutzerdefinierte Passwortliste zu erweitern, indem häufig verwendete Varianten Ihrer benutzerdefinierten Passwörter hinzugefügt werden. Dazu gehören:
P@ssw0rd)PASSWORD, Password)password!, !password)password123!, !passwordabc, passwordpassword)
password1950, password2034)Eine benutzerdefinierte Passwortliste mit 100 Klartext-Passwörtern erzeugt 49.848.660 Variationen.
Lil Pwny sucht nach Benutzern, die Variationen ihres Benutzernamens als Passwort verwenden.
Es konvertiert den Benutzernamen in die folgenden Formate:
Diese werden dann in NTLM-Hashes umgewandelt und gegen die AD-Hashes geprüft.
Diese Anwendung wurde entwickelt, um die Vorteile der Multiprozessierung in Python optimal zu nutzen, mit dem Ziel, auf Consumer-Hardware so schnell wie möglich zu arbeiten.
Da sie Multiprozessierung verwendet, gilt: Je mehr Kerne verfügbar sind, desto schneller sollte Lil Pwny laufen. Ich habe auch mit einer geringen Anzahl logischer Kerne sehr gute Ergebnisse erzielt:
Lil Pwny gibt Ergebnisse entweder an stdout aus:
oder als 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"}}
Sie können die JSON-Ausgabe von Lil Pwny in eine Datei umleiten:
lil-pwny -ad ... > lil-pwny-results.json
Diese JSON-formatierte Protokollierung kann problemlos in ein SIEM oder ein anderes Protokollanalyse-Tool aufgenommen und an andere Skripte oder Plattformen zur automatisierten Behebung weitergeleitet werden.
Installation über pip
pip install lil-pwny
Lil-pwny wird als globaler Befehl installiert und wie folgt verwendet:
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
options:
-h, --help show this help message and exit
-hibp HIBP, --hibp HIBP
The .txt file containing HIBP NTLM hashes
-v, --version show program's version number and exit
-c CUSTOM, --custom CUSTOM
.txt file containing additional custom passwords to check for
-custom-enhance CUSTOM_ENHANCE, --custom-enhance CUSTOM_ENHANCE
generate an enhanced custom password list based on the provided custom password list. Must be used with -c/--custom flag. The enhanced list will stored in memory and not
written to disk. Provide the minimum length of the passwords you want. Default is 8
-ad AD_HASHES, --ad-hashes AD_HASHES
The .txt file containing NTLM hashes from AD users
-d, --duplicates Output a list of duplicate password users
-output {file,stdout,json}, --output {file,stdout,json}
Where to send results
-o, --obfuscate Obfuscate hashes from discovered matches by hashing with a random salt
--verbose Turn on verbose logging
Beispiel:
lil-pwny -hibp ~/hibp_hashes.txt -ad ~/ad_user_hashes.txt -c ~/custom_passwords.txt -output stdout -do
Verwenden Sie auf einem Domain-Controller ntdsutil, um einen IFM-Dump Ihrer AD-Domain zu erstellen. Führen Sie Folgendes in einem PowerShell-Fenster mit erhöhten Rechten aus:
ntdsutil
activate instance ntds
ifm
create full **output path**
Um die NTLM-Hashes aus den AD-IFM-Daten wiederherzustellen, wird das PowerShell-Modul DSInternals benötigt.
Nach der Installation verwenden Sie die SYSTEM-Hive in den IFM-Daten, um die Hashes im Format usernme:hash wiederherzustellen und in der Datei ad_ntlm_hashes.txt zu speichern:
$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
Die Datei kann mit einem .NET-Tool von der HIBP-API heruntergeladen werden hier
Das PowerShell-Skript im Verzeichnis scripts kann verwendet werden, um unerwünschte Konten aus der IFM-Ausgabe zu entfernen, bevor sie verarbeitet werden. Dazu gehören: