KnowsMore 官方支持 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
注意:
-l参数指定 leet 字符空间,其中 1 表示无 leet,3 表示最大 leet 级别。
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 |
+-------+--------------+---------+----------------------+-------+
pipx 将 KnowsMore 安装到隔离的虚拟环境中,避免与系统包冲突。这是在 Kali Linux 及其他外部管理的 Python 环境(PEP 668)中的推荐方法。
# 安装 pipx(如果尚未安装)
python3 -m pip install --user pipx
# 确保 pipx 安装的应用程序在 PATH 中
python3 -m pipx ensurepath
# 安装 KnowsMore
pipx install knowsmore
# 升级到最新版本
pipx upgrade knowsmore
注意: 运行 pipx ensurepath 后,可能需要打开新终端(或运行 source ~/.bashrc / source ~/.zshrc)才能使用 knowsmore 命令。
注意: 在 Python 3.12+ 上,setuptools/pkg_resources 模块默认不再捆绑。如果遇到 No module named 'pkg_resources' 错误,请在 KnowsMore 环境中注入 setuptools:
pipx inject knowsmore setuptools
pip3 install --upgrade knowsmore
注意: 如果遇到依赖版本问题,请查看 Virtual ENV 文件
导入数据没有强制顺序,但为了获得更好的关联数据,我们建议按以下流程执行:
所有数据存储在 SQLite 数据库中。
knowsmore --create-db
我们可以将完整的 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 会自动对文件排序以实现更好的数据关联。
# Bloodhound ZIP 文件
knowsmore --bloodhound --sync 10.10.10.10:7687 -d neo4j -u neo4j -p 12345678
注意: KnowsMore 对 BloodHound 导入器的实现受到了 Fox-It BloodHound Import 的启发。我们做了几项更改,将所有数据保存到 KnowsMore SQLite 数据库中,然后增量同步到 Neo4J 数据库。这种策略带来了多项好处,例如比原始 BloodHound 用户界面快至少 10 倍。
注意: 直接从 NTDS.dit 和 SYSTEM 注册表文件导入哈希和明文密码。
knowsmore --secrets-dump -target LOCAL -ntds ~/Desktop/ntds.dit -system ~/Desktop/SYSTEM
注意: 首先使用 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
knowsmore --word-list -o "~/Desktop/Wordlist/my_custom_wordlist.txt" --batch --name company_name
首先将所有哈希提取到文本文件中:
# 提取 NTLM 哈希到文件
nowsmore --ntlm-hash --export-hashes "~/Desktop/ntlm_hash.txt"
# 或者,从 NTDS 文件中提取 NTLM 哈希
cat ~/Desktop/client_name.ntds | cut -d ':' -f4 > ntlm_hashes.txt
为了破解哈希,我通常使用 hashcat,命令如下:
# 字典攻击
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
knowsmore --ntlm-hash --company clientCompanyName --import-cracked ~/Desktop/cracked.txt
注意: 将 clientCompanyName 替换为你的公司名称。
由于密码及其哈希极为敏感,存在一个模块用于替换明文密码及对应的哈希。
注意: 此命令将保留所有生成的统计信息和已导入的用户数据。
knowsmore --wipe
在评估过程中,你可能(通过多种方式)发现用户密码,因此可以将其添加到 KnowsMore 数据库中:
knowsmore --user-pass --username administrator --password Sec4US@2023
# 或者添加公司名称
knowsmore --user-pass --username administrator --password Sec4US@2023 --company sec4us
将所有已破解凭证集成到 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