
Correlaciona hashes NTLM, datos de BloodHound y contraseñas descifradas para pruebas de penetración en Active Directory. Importa NTDS.dit, sincroniza con Neo4j, analiza la calidad de las contraseñas y genera listas de palabras personalizadas.
KnowsMore es compatible oficialmente con 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
Nota: el parámetro
-lindica el espacio de caracteres leet, donde 1 es sin leet y 3 es el máximo leet disponible.
knowsmore --stats
Este comando producirá varias estadísticas sobre las contraseñas, como la salida a continuación
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 instala KnowsMore en un entorno virtual aislado, evitando conflictos con paquetes del sistema. Este es el método recomendado en Kali Linux y otros entornos Python administrados externamente (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
Nota: después de ejecutar pipx ensurepath, es posible que necesites abrir una nueva terminal (o ejecutar source ~/.bashrc / source ~/.zshrc) para que el comando knowsmore esté disponible.
Nota: en Python 3.12+ el módulo setuptools/pkg_resources ya no viene incluido por defecto. Si encuentras el error No module named 'pkg_resources', inyecta setuptools en el entorno de KnowsMore:
pipx inject knowsmore setuptools
pip3 install --upgrade knowsmore
Nota: Si tienes problemas con la versión de dependencias, consulta el archivo de entorno virtual
No hay un orden obligatorio para importar datos, pero para obtener una mejor correlación de datos sugerimos el siguiente flujo de ejecución:
Todos los datos se almacenan en una base de datos SQLite
knowsmore --create-db
Podemos importar todos los archivos completos de BloodHound a KnowsMore, correlacionar datos y sincronizarlos con la base de datos Neo4J de BloodHound. Así puedes usar solo KnowsMore para importar archivos JSON directamente a la base de datos Neo4j en lugar de usar la extremadamente lenta interfaz de usuario de BloodHound
# Bloodhound ZIP File
knowsmore --bloodhound --import-data ~/Desktop/client.zip
# Bloodhound JSON File
knowsmore --bloodhound --import-data ~/Desktop/20220912105336_users.json
Nota: KnowsMore es capaz de importar archivos ZIP y JSON de BloodHound, pero recomendamos usar el archivo ZIP, porque KnowsMore ordenará automáticamente los archivos para una mejor correlación de datos.
# Bloodhound ZIP File
knowsmore --bloodhound --sync 10.10.10.10:7687 -d neo4j -u neo4j -p 12345678
Nota: La implementación de KnowsMore del importador de BloodHound se inspiró en la implementación de Fox-It BloodHound Import. Implementamos varios cambios para guardar todos los datos en la base de datos SQLite de KnowsMore y luego realizar una sincronización incremental con la base de datos Neo4J. Con esta estrategia tenemos varios beneficios, como ser al menos 10 veces más rápido que la interfaz de usuario original de BloodHound.
Nota: Importar hashes y contraseñas en texto plano directamente desde NTDS.dit y el registro SYSTEM
knowsmore --secrets-dump -target LOCAL -ntds ~/Desktop/ntds.dit -system ~/Desktop/SYSTEM
Nota: Primero usa secretsdump para extraer los hashes NTDS con el siguiente comando
secretsdump.py -ntds ntds.dit -system system.reg -hashes lmhash:ntlmhash LOCAL -outputfile ~/Desktop/client_name
Después de eso importa
knowsmore --ntlm-hash --import-ntds ~/Desktop/client_name.ntds
knowsmore --word-list -o "~/Desktop/Wordlist/my_custom_wordlist.txt" --batch --name company_name
Primero extrae todos los hashes a un archivo txt
# 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
Para descifrar los hashes, normalmente uso hashcat con el siguiente comando
# 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
Nota: Cambia clientCompanyName por el nombre de tu empresa
Como las contraseñas y sus hashes son datos extremadamente sensibles, existe un módulo para reemplazar las contraseñas en texto plano y sus respectivos hashes.
Nota: Este comando mantendrá todas las estadísticas generadas y los datos de usuario importados.
knowsmore --wipe
Durante la evaluación puedes encontrar (de varias formas) contraseñas de usuarios, así que puedes agregarlas a la base de datos de KnowsMore.
knowsmore --user-pass --username administrator --password Sec4US@2023
# or adding the company name
knowsmore --user-pass --username administrator --password Sec4US@2023 --company sec4us
Integrar todas las credenciales descifradas a la base de datos Neo4j de BloodHound
knowsmore --bloodhound --mark-owned 10.10.10.10 -d neo4j -u neo4j -p 123456
Para conexión remota, asegúrate de que el servidor de base de datos Neo4j acepte conexiones remotas. Cambia la siguiente línea en el archivo de configuración /etc/neo4j/neo4j.conf y reinicia el servicio.
server.bolt.listen_address=0.0.0.0:7687