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文件

  1. 域名
  2. GPO
  3. OU
  4. 计算机
  5. 用户
  6. 导入NTDS文件
  7. 导入破解的哈希值

创建数据库文件

所有数据都存储在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

待办事项

请查看TODO文件

标签:工具分享, NTLM