MorDavid/NetworkHound
GitHub: MorDavid/NetworkHound
一款基于 Python 和 Impacket 的 AD 网络拓扑分析器,主动发现资产并输出 BloodHound 兼容图数据。
Stars: 658 | Forks: 74
# 🐾 NetworkHound - Active Directory 网络拓扑分析器



高级 Active Directory 网络拓扑分析器,支持 SMB 验证、多种认证方式(密码/NTLM/Kerberos)以及全面的网络发现。导出与 BloodHound 兼容的 OpenGraph JSON 格式。
## 🎯 概述
NetworkHound 连接到 Active Directory 域控制器,发现计算机对象,使用多种 DNS 方法将主机名解析为 IP 地址,执行全面的网络扫描(端口扫描、HTTP/HTTPS 验证),并发现影子 IT 设备。然后以与 BloodHound 兼容的 OpenGraph JSON 格式构建详细的网络拓扑图。
### 收集内容
- **Active Directory 对象**:带有 SID 和主机名的计算机对象
- **网络基础设施**:站点、子网、IP地址和网络关系
- **端口扫描**:所有发现设备上的开放端口及服务识别
- **Web 服务**:HTTP/HTTPS 验证,包含 SSL 证书分析和网站发现
- **SMB 服务**:SMB 连接验证、共享枚举和服务器信息
- **影子 IT 发现**:通过子网扫描发现的非域设备
- **网络拓扑**:完整的网络关系和设备位置
## 🧩 安装
要求:Python 3.8+
安装依赖:
```
pip3 install -r requirements.txt
```
**注意**:NetworkHound 使用 `impacket` 进行所有 Active Directory 认证(密码、NTLM 哈希、Kerberos 票据)。
## 🛠️ 使用方法
### 步骤 1:将模型上传到 BloodHound
`model.json` 文件定义了所有自定义类型的图标/样式。通过 `update_custom_nodes_to_bloodhound.py` 使用 API 将其上传到 BloodHound。
认证并上传:
```
python update_custom_nodes_to_bloodhound.py -s https://bloodhound.example.com -u admin@domain.com -p "Password!" -m model.json
```
### 步骤 2:使用方法
使用 AD 认证进行基础扫描:
```
python NetworkHound.py --dc 192.168.0.11 -d company.local -u admin -p password
```
执行端口扫描、HTTP 和 SMB 验证的完整网络分析:
```
python NetworkHound.py --dc 192.168.0.11 -d company.local -u admin -p password --shadow-it --port-scan --valid-http --ssl --valid-smb --scan-threads 50 -Pn
```
使用 NTLM 哈希认证:
```
python NetworkHound.py --dc 192.168.0.11 -d company.local -u admin --hashes aad3b435b51404eeaad3b435b51404ee:5fbc3d5fec8206a30f4b6c473d68ae76
```
使用 Kerberos 票据认证:
```
python NetworkHound.py --dc dc.company.local -d company.local -u admin --kerberos
```
使用 TCP 模式进行 DNS 查询(用于代理/防火墙绕过):
```
python NetworkHound.py --dc dc.company.local -d company.local -u admin -p password --dns 8.8.8.8 --dns-tcp --verbose
```
通过 proxychains 使用 TCP 模式 DNS:
```
proxychains python NetworkHound.py --dc dc.company.local -d company.local -u admin -p password --dns-tcp --port-scan
```
### CLI 参数
**必需参数:**
- `--dc`:域控制器主机名或 IP 地址
- `-d/--domain`:域名(例如 company.local)
- `-u/--user`:用于认证的用户名
**认证方式(选择其一):**
- `-p/--password`:密码认证
- `--hashes`:NTLM 哈希认证(LM:NT 或仅 NT)
- `-k/--kerberos`:Kerberos 票据文件(需要 KRB5CCNAME 指向 ccache 文件)
**网络扫描:**
- `--port-scan`:启用 TCP 端口扫描
- `--ports`:要扫描的端口(逗号分隔,默认:常用端口)
- `--scan-timeout`:端口扫描超时(秒,默认:3)
- `--scan-threads`:并发线程数(默认:10)
- `-Pn`:仅扫描响应 ping 的主机
**服务验证:**
- `--valid-smb`:测试 SMB 连接并枚举 SMB 共享
- `--valid-http`:在开放端口上测试 HTTP/HTTPS 连接
- `--ssl`:提取详细的 SSL 证书信息(较慢)
**其他选项:**
- `--dns`:用于查询的 DNS 服务器(默认为 DC)
- `--dns-tcp`:对 DNS 查询使用 TCP 而非 UDP(用于代理/防火墙绕过)
- `-o/--output`:输出 JSON 文件(默认:network_opengraph.json)
- `--shadow-it`:扫描子网范围以发现影子 IT 设备
- `-v/--verbose`:启用详细输出,显示详细的解析方法
## 🔍 功能特性
### 🌐 多方法 DNS 解析
- **Socket 解析**:标准 Python 套接字主机名解析
- **nslookup**:使用特定 DNS 服务器的命令行 DNS 查询(支持 TCP 模式配合 `--dns-tcp`)
- **dnspython**:支持 TCP/UDP 的全面记录类型的先进 DNS 库
- **getaddrinfo**:系统级地址解析
- **主机名回退**:AD 环境中的短主机名解析
- **DNS over TCP**:可选的 TCP 模式用于防火墙绕过和代理兼容性(`--dns-tcp` 参数)
### 🔌 高级端口扫描
- **线程化扫描**:使用可配置线程池的并发端口扫描
- **服务识别**:常见端口的自动服务识别
- **Ping 过滤**:可选在端口扫描前跳过 ping(`-Pn` 参数)
- **多 IP 支持**:支持具有多个 IP 地址的计算机
### 🌐 HTTP/HTTPS 验证
- **双协议**:在发现的端口上同时测试 HTTP 和 HTTPS
- **SSL 分析**:提取详细的 SSL 证书信息
- **网站发现**:自动提取网站标题和内容
- **证书验证**:自签名与 CA 签发证书的识别
### 📁 SMB 验证
- **SMB 连接**:在 139 和 445 端口测试 SMB 连接
- **共享枚举**:在权限允许时列出可用的 SMB 共享
- **服务器信息**:提取服务器名称、域、操作系统和 SMB 版本
- **认证支持**:匿名、密码和 NTLM 哈希认证
- **访问分析**:确定是访客访问还是需要认证
### 👻 影子 IT 发现
- **子网扫描**:在 AD 配置子网中扫描非域设备
- **活跃检测**:Ping 扫描以识别响应设备
- **集成**:将影子 IT 设备包含在统一的端口扫描中
### 📊 网络拓扑
- **OpenGraph 格式**:与 BloodHound 兼容的 JSON 结构
- **分层结构**:域 → 站点 → 子网 → 计算机/设备
- **关系**:完整的网络关系和设备位置
- **网站节点**:发现的 Web 服务的独立节点
## 🕸️ 图模式:节点/边
### 节点
- **Domain**:带有 SID 的 Active Directory 域
- **Site**:AD 站点和服务站点
- **Subnet**:带有 CIDR 表示法和主机计数的网络子网
- **Computer**:带有 IP 地址、开放端口、SMB 服务和系统信息的 AD 计算机对象
- **Device**:通过网络扫描发现的影子 IT 设备
- **Website**:带有 SSL 证书详细信息的 HTTP/HTTPS 服务
- **FileShare**:带有访问信息的 SMB 文件共享
### 边
- **PartOfDomain**:`站点 → 域`
- **PartOf**:`子网 → 站点`
- **LocatedIn**:`计算机/设备 → 子网`
- **ExposeInterface**:`计算机/设备 → 网站/文件共享`
### 节点属性
**计算机/设备节点:**
- `ip_addresses[]`:所有解析的 IP 地址
- `open_ports[]`:发现的开放端口
- `is_shadow_it`:影子 IT 设备的布尔标志
**网站节点:**
- `url`:完整的网站 URL
- `protocol`:HTTP 或 HTTPS
- `status_code`:HTTP 响应代码
- `has_ssl`:SSL/TLS 是否启用
- `is_self_signed`:证书验证状态
- `ssl_*`:使用 `-s` 标志时的详细 SSL 证书属性
**子网节点:**
- `subnet`:CIDR 表示法
- `network_address`:网络地址
- `broadcast_address`:广播地址
- `host_count`:子网中的主机数量
## 📈 输出示例
```
NetworkHound - Active Directory Network Topology Analyzer
Author: Mor David (www.mordavid.com) | License: Non-Commercial
2025-09-19 01:26:07 - INFO - Starting NetworkHound
2025-09-19 01:26:07 - INFO - 🔗 STEP 1: Connecting to Domain Controller
2025-09-19 01:26:07 - INFO - 💻 STEP 2: Querying Active Directory Computer Objects
2025-09-19 01:26:07 - INFO - 🔍 STEP 3: Resolving Computer Hostnames to IP Addresses
2025-09-19 01:26:07 - INFO - 👻 STEP 4: Scanning for Shadow-IT Devices
2025-09-19 01:26:07 - INFO - 🔍 STEP 5: Network Port Scanning
2025-09-19 01:26:07 - INFO - 🌐 STEP 6: HTTP/HTTPS Validation
2025-09-19 01:26:07 - INFO - 📁 STEP 6.5: SMB Validation
2025-09-19 01:26:07 - INFO - 📊 STEP 7: Creating Network Topology Graph
2025-09-19 01:26:58 - INFO - ✅ ANALYSIS COMPLETED SUCCESSFULLY!
```
## 👨💻 关于作者
**Mor** - 进攻安全专家与 AI 安全研究员
我专注于进攻安全,重点是将人工智能和大型语言模型(LLM)集成到渗透测试工作流程中。我的专业知识结合了传统的红队技术与前沿的 AI 技术,以开发下一代安全工具。
### 🔗 与我联系
- **X (Twitter)**:[x.com/m0rd4vid](https://x.com/m0rd4vid)
- **LinkedIn**:[linkedin.com/in/mor-david-cyber](https://linkedin.com/in/mor-david-cyber)
- **个人网站**:[www.mordavid.com](https://www.mordavid.com)
## 🌟 星标历史
[](https://www.star-history.com/#MorDavid/NetworkHound&type=date&legend=top-left)



高级 Active Directory 网络拓扑分析器,支持 SMB 验证、多种认证方式(密码/NTLM/Kerberos)以及全面的网络发现。导出与 BloodHound 兼容的 OpenGraph JSON 格式。
**⭐ 发现这个工具很有用吗?给仓库加个星标!**
由 [Mor David](https://www.mordavid.com) 热情打造
标签:Active Directory, BloodHound, DNS解析, HTTP/HTTPS验证, Impacket, Kerberos认证, Maven构建, NTLM认证, OpenGraph JSON, Plaso, Python, Shadow IT发现, SMB验证, SSL证书分析, 域控扫描, 密码认证, 开源项目, 数据统计, 无后门, 服务枚举, 本地模型, 端口扫描, 网络关系图谱, 网络发现, 网络安全, 网络拓扑分析, 逆向工具, 隐私保护