KnowsMore 是一款瑞士军刀式的工具,用于渗透测试 Microsoft Active Directory(NTLM 哈希、BloodHound、NTDS 和 DCSync)。
作者:Sec-Labs | 发布时间:
项目地址
https://github.com/helviojunior/knowsmore
相关技术点
- NTLM Hashes
- CrackMapExec
- secretsdump.py
- BloodHound
- Neo4J
- password analysis
项目用途
KnowsMore是一个密码破解及分析工具,主要用于以下几个方面:
- 导入NTLM哈希(从CrackMapExec或secretsdump.py生成的.ntds文件中导入、从NTDS.dit和SYSTEM中导入、从hashcat输出文件中导入)
- 导入BloodHound ZIP或JSON文件
- 分析密码质量(长度、小写字母、大写字母、数字、特殊字符和拉丁字符)
- 分析密码与公司和用户名的相似度
- 搜索用户、密码和哈希
- 直接将所有破解的凭据导出到BloodHound Neo4j数据库中作为“拥有的对象”
- 其他实用功能
使用该工具能够快速分析密码质量和密码相似度,帮助安全人员做好密码策略,同时也能够帮助渗透测试人员快速获取凭据并进行后续攻击。
Knows More
KnowsMore 官方支持 Python 3.8+。
主要特性
- 从 .ntds 输出的 txt 文件(由 CrackMapExec 或 secretsdump.py 生成)导入 NTLM 哈希
- 从 NTDS.dit 和 SYSTEM 导入 NTLM 哈希
- 从 hashcat 输出文件导入破解的 NTLM 哈希
- 导入 BloodHound ZIP 或 JSON 文件
- BloodHound 导入器(无需 BloodHound UI 将 JSON 导入 Neo4J)
- 分析密码的质量(长度、小写、大写、数字、特殊字符和拉丁字符)
- 分析密码与公司和用户名的相似性
- 搜索用户、密码和哈希值
- 直接将所有破解的凭据导出到 BloodHound Neo4j 数据库作为“拥有的对象”
- 其他令人惊叹的功能...
获取统计信息
knowsmore --stats
此命令将生成有关密码的多个统计信息,如下面的输出
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 |
+-------+--------------+---------+----------------------+-------+
安装
pip3 install --upgrade knowsmore
执行流程
没有导入数据的强制顺序,但为了获得更好的相关数据,我们建议按照以下执行流程:1. 创建数据库文件 2. 导入BloodHound文件
- 域名
- GPO
- OU
- 组
- 计算机
- 用户
- 导入NTDS文件
- 导入破解的哈希值
创建数据库文件
所有数据都存储在SQLite数据库中
knowsmore --create-db
导入BloodHound文件
我们可以将所有完整的BloodHound文件导入到KnowsMore中,相关数据,并将其同步到Neo4J BloodHound数据库中。因此,您可以仅使用KnowsMore将JSON文件直接导入到Neo4j数据库中,而不是使用“极其缓慢的BloodHound用户界面”
# Bloodhound ZIP文件
knowsmore --bloodhound --import-data ~/Desktop/client.zip
# Bloodhound JSON文件
knowsmore --bloodhound --import-data ~/Desktop/20220912105336_users.json
注意: KnowsMore能够导入BloodHound ZIP文件和JSON文件,但我们建议使用ZIP文件,因为KnowsMore将自动按顺序排列文件以更好地关联数据。
将数据同步到Neo4j BloodHound数据库
# Bloodhound ZIP文件
knowsmore --bloodhound --sync 10.10.10.10:7687 -d neo4j -u neo4j -p 12345678
注意: KnowsMore实现了bloodhount-importer,灵感来自于Fox-It BloodHound Import实现。我们对此进行了几个更改,以将所有数据保存在KnowsMore SQLite数据库中,然后进行增量同步到Neo4J数据库。采用这种策略,我们有几个好处,例如至少比原始的BloodHound用户界面快10倍。
导入NTDS文件
选项1
注意: 直接从NTDS.dit和SYSTEM注册表中导入哈希值和明文密码
knowsmore --secrets-dump -target LOCAL -ntds ~/Desktop/ntds.dit -system ~/Desktop/SYSTEM
选项2
注意: 首先使用secretsdump提取ntds哈希值,使用以下命令
secretsdump.py -ntds ntds.dit -system system.reg -hashes lmhash:ntlmhash LOCAL -outputfile ~/Desktop/client_name
之后导入
knowsmore --ntlm-hash --import-ntds ~/Desktop/client_name.ntds
导入破解的哈希值
破解哈希值
为了破解哈希值,我通常使用以下命令的hashcat
# 从文件中提取NTLM哈希
cat ~/Desktop/client_name.ntds | cut -d ':' -f4 > ntlm_hashes.txt
# 字典攻击
hashcat -m 1000 -a 0 -O -o "~/Desktop/cracked.txt" --remove "~/Desktop/ntlm_hash.txt" "~/Desktop/Wordlist/*"
# 掩码攻击
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
导入hashcat输出文件
knowsmore --ntlm-hash --company clientCompanyName --import-cracked ~/Desktop/cracked.txt
注意: 将clientCompanyName更改为您公司的名称
抹掉敏感数据
由于密码及其哈希值是极其敏感的数据,因此存在一个模块可替换明文密码及其哈希值。
注意: 此命令将保留所有生成的统计信息和导入的用户数据。
knowsmore --wipe
BloodHound标记为所有者
将所有已破解的凭据集成到Neo4j Bloodhound数据库中
knowsmore --bloodhound --mark-owned 10.10.10.10 -d neo4j -u neo4j -p 123456
对于远程连接,请确保Neo4j数据库服务器接受远程连接。更改下面的行在配置文件**/etc/neo4j/neo4j.conf**并重新启动服务。
server.bolt.listen_address=0.0.0.0:7687