MorDavid/NetworkHound

GitHub: MorDavid/NetworkHound

一款基于 Python 和 Impacket 的 AD 网络拓扑分析器,主动发现资产并输出 BloodHound 兼容图数据。

Stars: 658 | Forks: 74

# 🐾 NetworkHound - Active Directory 网络拓扑分析器
NetworkHound Logo ![Version](https://img.shields.io/badge/NetworkHound-v1.2.1-green?style=for-the-badge) ![Python](https://img.shields.io/badge/Python-3.8%2B-blue?style=for-the-badge&logo=python&logoColor=white) ![Impacket](https://img-shields.io/badge/Powered_by-Impacket-red?style=for-the-badge) 高级 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) ## 🌟 星标历史 [![Star History Chart](https://api.star-history.com/svg?repos=MorDavid/NetworkHound&type=date&legend=top-left)](https://www.star-history.com/#MorDavid/NetworkHound&type=date&legend=top-left)
**⭐ 发现这个工具很有用吗?给仓库加个星标!** 由 [Mor David](https://www.mordavid.com) 热情打造
标签:Active Directory, BloodHound, DNS解析, HTTP/HTTPS验证, Impacket, Kerberos认证, Maven构建, NTLM认证, OpenGraph JSON, Plaso, Python, Shadow IT发现, SMB验证, SSL证书分析, 域控扫描, 密码认证, 开源项目, 数据统计, 无后门, 服务枚举, 本地模型, 端口扫描, 网络关系图谱, 网络发现, 网络安全, 网络拓扑分析, 逆向工具, 隐私保护