
Corrèle les hachages NTLM, les données BloodHound et les mots de passe cassés pour les tests de pénétration Active Directory. Importe NTDS.dit, synchronise vers Neo4j, analyse la qualité des mots de passe et génère des listes de mots personnalisées.
KnowsMore prend officiellement en charge 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
Note : le paramètre
-lindique l'espace de caractères leet, où 1 signifie pas de leet et 3 est le leet maximum disponible.
knowsmore --stats
Cette commande produira plusieurs statistiques sur les mots de passe, comme dans l'exemple ci-dessous
KnowsMore v0.1.4 by Helvio Junior
Active Directory, BloodHound, NTDS hashes and Password Cracks correlation tool
https://github.com/helviojunior/knowsmore
[+] Startup parameters
command line: knowsmore --stats
module: stats
database file: knowsmore.db
[+] start time 2023-01-11 03:59:20
[?] General Statistics
+-------+----------------+-------+
| top | description | qty |
|-------+----------------+-------|
| 1 | Total Users | 95369 |
| 2 | Unique Hashes | 74299 |
| 3 | Cracked Hashes | 23177 |
| 4 | Cracked Users | 35078 |
+-------+----------------+-------+
[?] General Top 10 passwords
+-------+-------------+-------+
| top | password | 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 weak passwords by company name similarity
+-------+--------------+---------+----------------------+-------+
| top | password | 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 installe KnowsMore dans un environnement virtuel isolé, évitant les conflits avec les paquets système. C'est la méthode recommandée sur Kali Linux et autres environnements Python gérés de manière externe (PEP 668).
# Install pipx (if you don't have it yet)
python3 -m pip install --user pipx
# Make sure pipx-installed apps are on your PATH
python3 -m pipx ensurepath
# Install KnowsMore
pipx install knowsmore
# Upgrade to the latest version
pipx upgrade knowsmore
Note : après avoir exécuté pipx ensurepath, vous devrez peut-être ouvrir un nouveau terminal (ou exécuter source ~/.bashrc / source ~/.zshrc) pour que la commande knowsmore soit disponible.
Note : sur Python 3.12+, le module setuptools/pkg_resources n'est plus inclus par défaut. Si vous rencontrez une erreur No module named 'pkg_resources', injectez setuptools dans l'environnement KnowsMore :
pipx inject knowsmore setuptools
pip3 install --upgrade knowsmore
Note : Si vous rencontrez un problème avec la version des dépendances, consultez le fichier Virtual ENV
Il n'y a pas d'ordre obligatoire pour importer les données, mais pour obtenir une meilleure corrélation des données, nous suggérons le flux d'exécution suivant :
Toutes les données sont stockées dans une base de données SQLite
knowsmore --create-db
Nous pouvons importer tous les fichiers BloodHound complets dans KnowsMore, corréler les données et les synchroniser avec la base de données Neo4J BloodHound. Ainsi, vous pouvez utiliser uniquement KnowsMore pour importer des fichiers JSON directement dans la base de données Neo4j au lieu d'utiliser l'« interface utilisateur BloodHound extrêmement lente »
# Bloodhound ZIP File
knowsmore --bloodhound --import-data ~/Desktop/client.zip
# Bloodhound JSON File
knowsmore --bloodhound --import-data ~/Desktop/20220912105336_users.json
Note : KnowsMore est capable d'importer des fichiers ZIP et JSON BloodHound, mais nous recommandons d'utiliser le fichier ZIP, car KnowsMore ordonnera automatiquement les fichiers pour une meilleure corrélation des données.
# Bloodhound ZIP File
knowsmore --bloodhound --sync 10.10.10.10:7687 -d neo4j -u neo4j -p 12345678
Note : L'implémentation de l'importateur BloodHound dans KnowsMore s'est inspirée de l'implémentation de Fox-It BloodHound Import. Nous avons implémenté plusieurs changements pour sauvegarder toutes les données dans la base de données SQLite de KnowsMore, puis effectuer une synchronisation incrémentielle vers la base de données Neo4J. Avec cette stratégie, nous avons plusieurs avantages, notamment une vitesse au moins 10 fois supérieure à celle de l'interface utilisateur BloodHound originale.
Note : Importer les hachages et les mots de passe en clair directement depuis NTDS.dit et le registre SYSTEM
knowsmore --secrets-dump -target LOCAL -ntds ~/Desktop/ntds.dit -system ~/Desktop/SYSTEM
Note : Utilisez d'abord secretsdump pour extraire les hachages ntds avec la commande ci-dessous
secretsdump.py -ntds ntds.dit -system system.reg -hashes lmhash:ntlmhash LOCAL -outputfile ~/Desktop/client_name
Ensuite, importez
knowsmore --ntlm-hash --import-ntds ~/Desktop/client_name.ntds
knowsmore --word-list -o "~/Desktop/Wordlist/my_custom_wordlist.txt" --batch --name company_name
Extrayez d'abord tous les hachages dans un fichier texte
# Extract NTLM hashes to file
nowsmore --ntlm-hash --export-hashes "~/Desktop/ntlm_hash.txt"
# Or, extract NTLM hashes from NTDS file
cat ~/Desktop/client_name.ntds | cut -d ':' -f4 > ntlm_hashes.txt
Pour casser les hachages, j'utilise généralement hashcat avec les commandes ci-dessous
# Wordlist attack
hashcat -m 1000 -a 0 -O -o "~/Desktop/cracked.txt" --remove "~/Desktop/ntlm_hash.txt" "~/Desktop/Wordlist/*"
# Mask attack
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
Note : Remplacez clientCompanyName par le nom de votre entreprise
Étant donné que les mots de passe et leurs hachages sont des données extrêmement sensibles, un module permet de remplacer les mots de passe en clair et les hachages correspondants.
Note : Cette commande conservera toutes les statistiques générées et les données utilisateur importées.
knowsmore --wipe
Lors de l'évaluation, vous pouvez trouver (de plusieurs manières) le mot de passe des utilisateurs, vous pouvez donc l'ajouter à la base de données Knowsmore
knowsmore --user-pass --username administrator --password Sec4US@2023
# or adding the company name
knowsmore --user-pass --username administrator --password Sec4US@2023 --company sec4us
Intégrer tous les identifiants craqués à la base de données Neo4j Bloodhound
knowsmore --bloodhound --mark-owned 10.10.10.10 -d neo4j -u neo4j -p 123456
Pour une connexion distante, assurez-vous que le serveur de base de données Neo4j accepte les connexions distantes. Modifiez la ligne ci-dessous dans le fichier de configuration /etc/neo4j/neo4j.conf et redémarrez le service.
server.bolt.listen_address=0.0.0.0:7687