
Korreliert NTLM-Hashes, BloodHound-Daten und geknackte Passwörter für Active Directory Penetrationstests. Importiert NTDS.dit, synchronisiert mit Neo4j, analysiert die Passwortqualität und erstellt benutzerdefinierte Wortlisten.
KnowsMore unterstützt offiziell Python 3.8+.
knowsmore.py --word-list -o wl.txt --batch --name companyname
knowsmore.py --word-list -o wl.txt --batch --name companyname -l 1
Hinweis: Der Parameter
-lgibt den Leetspeak-Zeichenraum an, wobei 1 für kein Leet und 3 für das maximale Leet steht.
knowsmore --stats
Dieser Befehl erzeugt mehrere Statistiken über die Passwörter, wie unten gezeigt.
KnowsMore v0.1.4 von Helvio Junior
Active Directory, BloodHound, NTDS-Hashes und Passwort-Crack-Korrelationstool
https://github.com/helviojunior/knowsmore
[+] Startparameter
Befehlszeile: knowsmore --stats
Modul: stats
Datenbankdatei: knowsmore.db
[+] Startzeit: 2023-01-11 03:59:20
[?] Allgemeine Statistiken
+-------+----------------+-------+
| top | Beschreibung | qty |
|-------+----------------+-------|
| 1 | Gesamtbenutzer | 95369 |
| 2 | Eindeutige Hashes | 74299 |
| 3 | Geknackte Hashes | 23177 |
| 4 | Geknackte Benutzer | 35078 |
+-------+----------------+-------+
[?] Allgemeine Top-10-Passwörter
+-------+-------------+-------+
| top | Passwort | qty |
|-------+-------------+-------|
| 1 | password | 1111 |
| 2 | 123456 | 824 |
| 3 | 123456789 | 815 |
| 4 | guest | 553 |
| 5 | qwerty | 329 |
| 6 | 12345678 | 277 |
| 7 | 111111 | 268 |
| 8 | 12345 | 202 |
| 9 | secret | 170 |
| 10 | sec4us | 165 |
+-------+-------------+-------+
[?] Top 10 schwache Passwörter nach Unternehmensnamensähnlichkeit
+-------+--------------+---------+----------------------+-------+
| top | Passwort | score | company_similarity | qty |
|-------+--------------+---------+----------------------+-------|
| 1 | company123 | 7024 | 80 | 1111 |
| 2 | Company123 | 5209 | 80 | 824 |
| 3 | company | 3674 | 100 | 553 |
| 4 | Company@10 | 2080 | 80 | 329 |
| 5 | company10 | 1722 | 86 | 268 |
| 6 | Company@2022 | 1242 | 71 | 202 |
| 7 | Company@2024 | 1015 | 71 | 165 |
| 8 | Company2022 | 978 | 75 | 157 |
| 9 | Company10 | 745 | 86 | 116 |
| 10 | Company21 | 707 | 86 | 110 |
+-------+--------------+---------+----------------------+-------+
pipx installiert KnowsMore in eine isolierte virtuelle Umgebung und vermeidet so Konflikte mit Systempaketen. Dies ist die empfohlene Methode auf Kali Linux und anderen extern verwalteten Python-Umgebungen (PEP 668).
# pipx installieren (falls noch nicht vorhanden)
python3 -m pip install --user pipx
# Sicherstellen, dass mit pipx installierte Programme im PATH sind
python3 -m pipx ensurepath
# KnowsMore installieren
pipx install knowsmore
# Auf die neueste Version aktualisieren
pipx upgrade knowsmore
Hinweis: Nach pipx ensurepath müssen Sie möglicherweise ein neues Terminal öffnen (oder source ~/.bashrc / source ~/.zshrc ausführen), damit der Befehl knowsmore verfügbar wird.
Hinweis: Unter Python 3.12+ ist das Modul setuptools/pkg_resources nicht mehr standardmäßig enthalten. Wenn Sie einen Fehler No module named 'pkg_resources' erhalten, injizieren Sie setuptools in die KnowsMore-Umgebung:
pipx inject knowsmore setuptools
pip3 install --upgrade knowsmore
Hinweis: Falls Sie Probleme mit der Abhängigkeitsversion haben, lesen Sie bitte die Virtual ENV-Datei
Es gibt keine verpflichtende Reihenfolge zum Importieren von Daten, aber für eine bessere Datenkorrelation empfehlen wir den folgenden Ablauf:
Alle Daten werden in einer SQLite-Datenbank gespeichert
knowsmore --create-db
Wir können alle vollständigen BloodHound-Dateien in KnowsMore importieren, Daten korrelieren und mit der Neo4J BloodHound-Datenbank synchronisieren. So können Sie nur KnowsMore verwenden, um JSON-Dateien direkt in die Neo4j-Datenbank zu importieren, anstatt die extrem langsame BloodHound-Benutzeroberfläche zu nutzen.
# BloodHound ZIP-Datei
knowsmore --bloodhound --import-data ~/Desktop/client.zip
# BloodHound JSON-Datei
knowsmore --bloodhound --import-data ~/Desktop/20220912105336_users.json
Hinweis: KnowsMore kann BloodHound ZIP- und JSON-Dateien importieren, aber wir empfehlen die ZIP-Datei, da KnowsMore die Dateien automatisch zur besseren Datenkorrelation ordnet.
# BloodHound ZIP-Datei
knowsmore --bloodhound --sync 10.10.10.10:7687 -d neo4j -u neo4j -p 12345678
Hinweis: Die KnowsMore-Implementierung des BloodHound-Importers wurde von der Fox-It BloodHound Import-Implementierung inspiriert. Wir haben mehrere Änderungen vorgenommen, um alle Daten in der KnowsMore SQLite-Datenbank zu speichern und danach eine inkrementelle Synchronisierung mit der Neo4J-Datenbank durchzuführen. Mit dieser Strategie haben wir mehrere Vorteile, darunter eine mindestens 10-fache Geschwindigkeitssteigerung gegenüber der originalen BloodHound-Benutzeroberfläche.
Hinweis: Hashes und Klartext-Passwörter direkt aus NTDS.dit und SYSTEM-Registrierung importieren
knowsmore --secrets-dump -target LOCAL -ntds ~/Desktop/ntds.dit -system ~/Desktop/SYSTEM
Hinweis: Zuerst mit dem folgenden Befehl die NTDS-Hashes mit secretsdump extrahieren
secretsdump.py -ntds ntds.dit -system system.reg -hashes lmhash:ntlmhash LOCAL -outputfile ~/Desktop/client_name
Danach importieren
knowsmore --ntlm-hash --import-ntds ~/Desktop/client_name.ntds
knowsmore --word-list -o "~/Desktop/Wordlist/my_custom_wordlist.txt" --batch --name company_name
Zuerst alle Hashes in eine Textdatei extrahieren
# NTLM-Hashes in Datei extrahieren
nowsmore --ntlm-hash --export-hashes "~/Desktop/ntlm_hash.txt"
# Oder NTLM-Hashes aus NTDS-Datei extrahieren
cat ~/Desktop/client_name.ntds | cut -d ':' -f4 > ntlm_hashes.txt
Zum Knacken der Hashes verwende ich normalerweise hashcat mit dem folgenden Befehl
# Wortlistenangriff
hashcat -m 1000 -a 0 -O -o "~/Desktop/cracked.txt" --remove "~/Desktop/ntlm_hash.txt" "~/Desktop/Wordlist/*"
# Maskenangriff
hashcat -m 1000 -a 3 -O --increment --increment-min 4 -o "~/Desktop/cracked.txt" --remove "~/Desktop/ntlm_hash.txt" ?a?a?a?a?a?a?a?a
knowsmore --ntlm-hash --company clientCompanyName --import-cracked ~/Desktop/cracked.txt
Hinweis: Ersetzen Sie clientCompanyName durch den Namen Ihres Unternehmens.
Da die Passwörter und deren Hashes extrem sensible Daten sind, gibt es ein Modul, um die Klartext-Passwörter und die entsprechenden Hashes zu ersetzen.
Hinweis: Dieser Befehl behält alle generierten Statistiken und importierten Benutzerdaten.
knowsmore --wipe
Während der Bewertung können Sie auf verschiedene Weise Benutzerpasswörter finden. Sie können diese dann der Knowsmore-Datenbank hinzufügen.
knowsmore --user-pass --username administrator --password Sec4US@2023
# oder mit Firmennamen
knowsmore --user-pass --username administrator --password Sec4US@2023 --company sec4us
Alle geknackten Zugangsdaten in die Neo4j Bloodhound-Datenbank integrieren
knowsmore --bloodhound --mark-owned 10.10.10.10 -d neo4j -u neo4j -p 123456
Stellen Sie bei einer Remote-Verbindung sicher, dass der Neo4j-Datenbankserver Remote-Verbindungen akzeptiert. Ändern Sie dazu die folgende Zeile in der Konfigurationsdatei /etc/neo4j/neo4j.conf und starten Sie den Dienst neu.
server.bolt.listen_address=0.0.0.0:7687