
Correlaciona hashes NTLM, dados do BloodHound e senhas quebradas para testes de penetração no Active Directory. Importa o NTDS.dit, sincroniza com o Neo4j, analisa a qualidade das senhas e gera listas de palavras personalizadas.
KnowsMore oferece suporte oficial ao 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: o parâmetro
-lindica o espaço de caracteres leet, onde 1 é sem leet e 3 é o máximo leet disponível.
knowsmore --stats
Este comando produzirá várias estatísticas sobre as senhas, como a saída abaixo
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 o KnowsMore em um ambiente virtual isolado, evitando conflitos com pacotes do sistema. Este é o método recomendado no Kali Linux e em outros ambientes Python gerenciados externamente (PEP 668).
# Instalar o pipx (se ainda não tiver)
python3 -m pip install --user pipx
# Garantir que aplicativos instalados via pipx estejam no PATH
python3 -m pipx ensurepath
# Instalar o KnowsMore
pipx install knowsmore
# Atualizar para a versão mais recente
pipx upgrade knowsmore
Nota: após executar pipx ensurepath talvez seja necessário abrir um novo terminal (ou executar source ~/.bashrc / source ~/.zshrc) para que o comando knowsmore fique disponível.
Nota: no Python 3.12+ o módulo setuptools/pkg_resources não é mais incluído por padrão. Se ocorrer o erro No module named 'pkg_resources', injete setuptools no ambiente do KnowsMore:
pipx inject knowsmore setuptools
pip3 install --upgrade knowsmore
Nota: se enfrentar problemas com versões de dependências, Consulte o arquivo Virtual ENV
Não há uma ordem obrigatória para importar dados, mas para obter uma melhor correlação, sugerimos o seguinte fluxo de execução:
Todos os dados são armazenados em um banco de dados SQLite
knowsmore --create-db
Podemos importar todos os arquivos completos do BloodHound para o KnowsMore, correlacionar dados e sincronizá-los com o banco de dados Neo4J BloodHound. Dessa forma, você pode usar apenas o KnowsMore para importar arquivos JSON diretamente para o banco de dados Neo4j, em vez de usar a extremamente lenta Interface de Usuário do BloodHound.
# Arquivo ZIP do BloodHound
knowsmore --bloodhound --import-data ~/Desktop/client.zip
# Arquivo JSON do BloodHound
knowsmore --bloodhound --import-data ~/Desktop/20220912105336_users.json
Nota: O KnowsMore é capaz de importar arquivos ZIP e JSON do BloodHound, mas recomendamos usar o arquivo ZIP, pois o KnowsMore ordenará automaticamente os arquivos para uma melhor correlação de dados.
# Arquivo ZIP do BloodHound
knowsmore --bloodhound --sync 10.10.10.10:7687 -d neo4j -u neo4j -p 12345678
Nota: A implementação do KnowsMore do importador BloodHound foi inspirada na implementação do Fox-It BloodHound Import. Implementamos várias alterações para salvar todos os dados no banco de dados SQLite do KnowsMore e, em seguida, realizar uma sincronização incremental com o banco de dados Neo4J. Com essa estratégia, temos vários benefícios, como pelo menos 10x mais rápido que a interface de usuário original do BloodHound.
Nota: Importar hashes e senhas em texto claro diretamente do NTDS.dit e do registro SYSTEM
knowsmore --secrets-dump -target LOCAL -ntds ~/Desktop/ntds.dit -system ~/Desktop/SYSTEM
Nota: Primeiro, use o secretsdump para extrair hashes ntds com o comando abaixo
secretsdump.py -ntds ntds.dit -system system.reg -hashes lmhash:ntlmhash LOCAL -outputfile ~/Desktop/client_name
Depois, importe
knowsmore --ntlm-hash --import-ntds ~/Desktop/client_name.ntds
knowsmore --word-list -o "~/Desktop/Wordlist/my_custom_wordlist.txt" --batch --name company_name
Primeiro, extraia todos os hashes para um arquivo txt
# Extrair hashes NTLM para arquivo
knowsmore --ntlm-hash --export-hashes "~/Desktop/ntlm_hash.txt"
# Ou, extrair hashes NTLM do arquivo NTDS
cat ~/Desktop/client_name.ntds | cut -d ':' -f4 > ntlm_hashes.txt
Para quebrar os hashes, normalmente uso o hashcat com o comando abaixo
# Ataque de wordlist
hashcat -m 1000 -a 0 -O -o "~/Desktop/cracked.txt" --remove "~/Desktop/ntlm_hash.txt" "~/Desktop/Wordlist/*"
# Ataque de máscara
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: Altere clientCompanyName para o nome da sua empresa
Como as senhas e seus hashes são dados extremamente sensíveis, existe um módulo para substituir as senhas em texto claro e seus respectivos hashes.
Nota: Este comando manterá todas as estatísticas geradas e os dados de usuário importados.
knowsmore --wipe
Durante a avaliação, você pode encontrar (de várias formas) a senha de um usuário; então, você pode adicioná-la ao banco de dados do Knowsmore
knowsmore --user-pass --username administrator --password Sec4US@2023
# ou adicionando o nome da empresa
knowsmore --user-pass --username administrator --password Sec4US@2023 --company sec4us
Integre todas as credenciais quebradas ao banco de dados Neo4j Bloodhound
knowsmore --bloodhound --mark-owned 10.10.10.10 -d neo4j -u neo4j -p 123456
Para conexão remota, certifique-se de que o servidor do banco de dados Neo4j esteja aceitando conexão remota. Altere a linha abaixo no arquivo de configuração /etc/neo4j/neo4j.conf e reinicie o serviço.
server.bolt.listen_address=0.0.0.0:7687