zavetsec/ZavetSec-NetworkInventory
GitHub: zavetsec/ZavetSec-NetworkInventory
一个面向 SOC/IR 团队的无依赖 PowerShell 网络扫描与资产清点工具,专为隔离环境设计,能快速发现主机、识别服务并输出带风险评分的报告。
Stars: 1 | Forks: 0
# ZavetSec-NetworkInventory






## 概述
- 适用于 Windows 的无代理网络扫描器 — 可在 PowerShell 运行的任何环境中执行,无需安装
- 支持离线运行 — 非常适合隔离和受限环境
- 专为 Windows SOC / IR 团队打造
- 120+ 端口、多线程、Banner 抓取、操作系统指纹识别
- 安全检查:MS17-010、SSL/TLS、SMB 签名、未经身份验证的访问
- MAC 厂商查询:本地 OUI 数据库 + maclookup.app API 回退机制
- 暗色主题的 HTML 报告,支持一键 CSV 导出 + 兼容 SIEM 的 CSV
- 旨在直接融入 SOC 分诊和事件响应工作流
## 快速开始
```
git clone https://github.com/zavetsec/ZavetSec-NetworkInventory
cd ZavetSec-NetworkInventory
# 以管理员身份运行(raw socket 操作所需)
.\ZavetSec-NetworkInventory.ps1 -Subnets '192.168.1.0/24'
```
主脚本:`ZavetSec-NetworkInventory.ps1`
报告会自动保存在脚本所在目录中。
## 报告预览
## 工作原理
1. **主机发现** — ICMP ping 扫描 + 5 个关键端口的 TCP 回退
2. **端口扫描** — 通过 RunspacePool 并行扫描 120+ 端口
3. **指纹识别** — Banner 抓取、基于 TTL 的操作系统识别,以及可访问情况下的 WMI 查询
4. **安全检查** — SMB 签名、MS17-010、SSL/TLS、未授权访问、ICMP
5. **MAC 厂商查询** — ARP 缓存 → 本地 OUI 数据库 → maclookup.app API
6. **风险评分** — 按主机评估 CRITICAL / HIGH / MEDIUM / LOW
7. **报告生成** — HTML (交互式) + CSV (兼容 SIEM)
## 为什么不使用 Nmap?
| | ZavetSec-NetworkInventory | Nmap |
|---|---|---|
| 需要安装 | ❌ 否 | ✅ 是 |
| 原生支持 Windows / PowerShell | ✅ | ⚠️ 需要安装 |
| 完全离线运行 | ✅ | ⚠️ |
| 内置 HTML 报告 | ✅ | ❌ |
| 从报告一键导出 CSV | ✅ | ❌ |
| 兼容 SIEM 的 CSV | ✅ | ❌ 需要编写脚本 |
| 风险评分 | ✅ 自动 | ❌ |
| 未授权访问检查 | ✅ | ❌ |
| MS17-010 检测 | ✅ | ⚠️ 需要 Nmap 脚本 (NSE scripts) |
| MAC 厂商识别 | ✅ OUI 数据库 + API | ❌ |
| 适配隔离环境 | ✅ | ⚠️ |
## 使用场景
- **网络可见性** — 发现跨子网的所有存活主机和开放服务
- **事件响应分诊** — 快速剖析受损网段,按风险级别确定响应优先级
- **内部安全审计** — 识别配置错误、高风险暴露和停止维护 (EOL) 的系统
- **影子 IT 检测** — 查找未经授权的服务 (Redis、MongoDB、VNC、Docker、Grafana)
- **合规性检查** — 检查 SMB 签名强制、停止维护的操作系统、弱 TLS 以及未授权访问情况
## 何时不适合使用此工具
- **大规模企业级扫描** (10,000+ 台主机) — 请使用 Nmap / Masscan
- **深度漏洞评估** — 请使用 Nessus / OpenVAS
- **重度 UDP 环境** — 暂不支持 UDP 扫描
- **需身份验证的扫描** — 无基于凭据的检查 (WMI 需要现有的管理员权限)
## 功能特性
### 发现与扫描
- 当 ICMP 被阻止时,使用 ICMP ping 扫描 + 5 个关键端口的 TCP 回退
- 默认扫描 120+ 个端口,且完全可自定义
- 通过 RunspacePool 实现多线程(建议:50–100 个线程)
### 服务指纹识别
- 抓取 15 个关键端口的 Banner(SSH 版本、HTTP Server 标头、FTP Banner)
- 操作系统检测:TTL 启发式算法 + WMI(如果凭据允许)
- 通过 ARP 缓存获取 MAC 地址 + 双层厂商查询
- 从 FQDN 主机名中提取域名(`HOST.corp.local` → `corp.local`)
### MAC 厂商识别
双层查询以实现最大准确性:
1. **本地 OUI 数据库** — 针对超过 200 家知名厂商(Cisco、Dell、HP、VMware、Mikrotik、Ubiquiti 等)的即时离线查询
2. **maclookup.app API 回退** — 针对未知的 OUI,查询与 IEEE 同步的数据库以获取确切的注册公司名称。需要互联网连接;在隔离环境中会平稳回退为 `Unknown`。
### 安全检查
- **SMB 签名** — Required / Enabled / Disabled
- **MS17-010 (EternalBlue)** — 基于签名的检测,只读模式
- **SSL/TLS 审计** — 弱协议 (SSLv3/TLS1.0/1.1)、过期证书、自签名证书
- **未授权访问** — FTP、Redis、Memcached、MongoDB
- **ICMP Timestamp** — 操作系统时间泄露 / 违反策略
- **停止维护 (EOL) 操作系统检测** — XP、Server 2003/2008/2012、Windows 7/8
### 报告输出
- 带有搜索栏和快速过滤器的交互式暗色主题 HTML
- **从 HTML 报告一键导出 CSV** — 导出当前可见的行(遵循活动的过滤器)
- 扫描完成后在脚本目录自动保存 CSV 文件
- 按协议类别区分的颜色编码服务徽章
- 每台主机的自动风险评分:CRITICAL / HIGH / MEDIUM / LOW
## 用法
```
# 交互式 — 如果未提供,则提示输入 subnet
.\ZavetSec-NetworkInventory.ps1
# 单个 subnet
.\ZavetSec-NetworkInventory.ps1 -Subnets '192.168.1.0/24'
# 多个 subnet
.\ZavetSec-NetworkInventory.ps1 -Subnets '10.0.0.0/24','10.0.1.0/24','172.16.0.0/24'
# 快速模式 — 仅发现 + 端口扫描,跳过所有漏洞检查(速度提升约 2-3 倍)
.\ZavetSec-NetworkInventory.ps1 -Subnets '10.0.0.0/24' -FastScan
# 跳过 ping — 当 ICMP 被防火墙阻止时很有用
.\ZavetSec-NetworkInventory.ps1 -Subnets '10.0.0.0/24' -SkipPing
# 自定义端口和线程数
.\ZavetSec-NetworkInventory.ps1 -Subnets '10.0.0.0/24' -Ports @(22,80,443,8080,8443) -Threads 100
# 包含 SMB 共享枚举的完整扫描
.\ZavetSec-NetworkInventory.ps1 -Subnets '10.0.0.0/24' -ScanShares -Threads 75
```
## 参数
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| `-Subnets` | `string[]` | *(交互式提示)* | 采用 CIDR 表示法的一个或多个子网 |
| `-Ports` | `int[]` | 120+ 端口 | 要扫描的自定义端口列表 |
| `-Threads` | `int` | `50` | 并行扫描线程数(建议:50–100) |
| `-TimeoutMs` | `int` | `500` | TCP 连接超时时间(毫秒) |
| `-OutputPath` | `string` | *脚本目录* | HTML 报告输出路径 |
| `-CsvPath` | `string` | *脚本目录* | CSV 输出路径 |
| `-SkipPing` | `switch` | `false` | 跳过 ICMP,直接探测所有主机的 TCP |
| `-ScanShares` | `switch` | `false` | 枚举已发现主机上的 SMB 共享 |
| `-FastScan` | `switch` | `false` | 跳过 SSL/TLS、MS17-010、未授权访问和 ICMP 检查 |
## 输出
报告会保存在脚本同级目录下:
```
NetworkInventory_20260330_134500.html
NetworkInventory_20260330_134500.csv
```
### CSV 导出
**两种获取 CSV 的方式:**
1. **自动** — 扫描完成后立即保存在脚本同级目录下
2. **从 HTML 报告** — 点击过滤器栏中的 `↓ Export CSV`。仅导出可见行 — 请先过滤以导出子集(例如仅导出 HIGH/CRITICAL 主机)
### CSV 示例
```
Risk,IP,Hostname,OS,Domain,SMB_Sign,Open_Ports,Risk_Indicators,MAC,Vendor
HIGH,10.0.0.10,SRV-DC01,Windows Server 2019,corp.local,Disabled,445/SMB|135/MS-RPC|139/NetBIOS,SMB signing disabled|Risky ports: 445,3C:C7:86:D6:CE:E8,DONGGUAN HUARONG
MEDIUM,10.0.0.22,WORKSTATION-04,,corp.local,N/A,3389/RDP|80/HTTP,Risky ports: 3389,04:7C:16:7B:B8:A8,HP
CRITICAL,10.0.0.55,,,,N/A,23/Telnet,Telnet open,,
```
### HTML 报告部分
- **统计栏** — 存活主机数,Critical / High / EOL 计数,RDP / SMB / SSH / DB 暴露情况
- **操作系统分布** — 带有可视化比例条的细分图
- **高频开放端口** — 所有已发现主机中的频率排名
- **主机清单** — 可过滤的表格:
- 风险徽章、IP、主机名、操作系统、域名、SMB 签名
- 带有按协议类别区分的颜色编码服务徽章的开放端口
- 风险指标 — 垂直列表,按严重程度进行颜色编码
- MAC 地址 + 厂商(OUI 数据库或 API 查询)
## 风险评分
```
CRITICAL ← EOL OS detected
← Telnet open (port 23)
← MS17-010 VULNERABLE
HIGH ← SMB signing Disabled
← Unauthenticated access confirmed (FTP / Redis / MongoDB / Memcached)
← 4+ risky ports open simultaneously
MEDIUM ← 1–3 risky ports open
← Weak TLS protocol (SSLv3 / TLS 1.0 / TLS 1.1)
← Expired SSL certificate
← Self-signed SSL certificate
← ICMP Timestamp reply
← FTP service detected
LOW ← No significant findings
```
**高风险端口**(触发风险指标):
`23` `69` `111` `135` `137` `139` `161` `445` `512` `513` `514` `1080` `1099` `1433` `1434` `1521` `2049` `2375` `2376` `3128` `3306` `3389` `4444` `4445` `4848` `4899` `5432` `5900` `5901` `6379` `6666` `7001` `7002` `8009` `8161` `9200` `11211` `27017` `27018`
## 安全检查详情
### MS17-010 (EternalBlue)
发送 SMB Negotiate → Session Setup → NT_TRANSACT,并检查 `STATUS_INSUFF_SERVER_RESOURCES (0xC0000205)` — 这是未修补系统的已知响应特征。不使用任何载荷或漏洞利用技术。结果属于启发式判断 — 请将其视为一种指示,而非确凿证据。
### SSL/TLS 审计
检查端口 443、8443、636、993、995、465、990、9443。报告内容:弱协议版本、证书过期、自签名颁发者。
### 未授权访问
| 服务 | 端口 | 方法 |
|---|---|---|
| FTP | 21 | 匿名登录 (`anonymous` / `scan@scan.local`) |
| Redis | 6379 | `PING` → `+PONG` 无需认证 |
| Memcached | 11211 | `stats` 响应无需认证 |
| MongoDB | 27017 | `isMaster` 查询无需认证 |
### ICMP Timestamp
构造 ICMP Type 13 数据包,检查 Type 14 回复。表明存在操作系统时间泄露 — 出现时会被标记为 MEDIUM 风险。
## 性能表现
| 子网 | 主机数 | 线程数 | 完整扫描 | `-FastScan` |
|---|---|---|---|---|
| /24 | 254 | 50 | ~2–3 分钟 | ~45–90 秒 |
| /23 | 510 | 100 | ~3–5 分钟 | ~90–120 秒 |
| /22 | 1022 | 150 | ~6–10 分钟 | ~3–4 分钟 |
## 局限性
- **不支持 UDP 扫描** — SNMP (161) 和其他 UDP 服务需要单独的工具
- **无完整操作系统指纹识别** — 仅限 TTL 启发式判断;准确的操作系统识别需要具有管理员凭据的 WMI
- **仅限本地网段的 MAC 地址** — ARP 不会跨越路由器
- **MAC API 需要互联网** — 在隔离环境中无法使用 maclookup.app 回退机制
- **MS17-010 为启发式检测** — 基于 SMB 响应特征,非绝对保证的结果
- **WMI 需要权限** — 仅当扫描器对目标具有管理员权限时,才能获取主机名 / 操作系统 / 域名
- **原始套接字需要提权** — ICMP Timestamp 需要管理员权限
## 环境要求
- 安装了 PowerShell 5.1 或更高版本的 Windows 操作系统
- **以管理员身份运行** — 原始套接字操作需要此权限
- 具有到目标子网的网络访问权限
- 无需外部模块或安装
- 互联网访问为可选 — 仅用于 MAC 厂商 API 查询
## 更新日志
### v1.0 — 初始版本
- 主机发现:ICMP + TCP 回退
- 120+ 端口扫描及带有颜色编码的服务 Banner 抓取
- SMB 签名检测
- MS17-010 EternalBlue 签名检查
- SSL/TLS 审计(协议、过期、自签名)
- 未授权访问检查:FTP、Redis、MemcachedMongoDB
- ICMP Timestamp 指纹识别
- 通过 ARP 获取 MAC 地址 + 双层厂商查询(本地 OUI 数据库 + maclookup.app API)
- 从 FQDN 中提取域名
- 停止维护 (EOL) 操作系统检测
- 用于快速发现的 `-FastScan` 模式
- 交互式子网提示
- 带有搜索、过滤器和一键 CSV 导出的暗色主题 HTML 报告
- 扫描完成后自动导出 CSV
- 自动风险评分:CRITICAL / HIGH / MEDIUM / LOW
## 开发路线图
- [ ] UDP 扫描 (SNMP、TFTP、NetBIOS-NS)
- [ ] JSON 输出格式
- [ ] IPv6 支持
- [ ] 差异报告 — 与上次扫描进行比较,高亮显示新增/消失的主机
- [ ] 针对关键 (CRITICAL) 发现的可选告警集成 (Telegram / Slack)
- [ ] 通过 VirusTotal / AbuseIPDB 进行 IP 信誉检查
## 应用场景
- 内部 SOC 网络审计与资产发现
- 事件响应分诊 — 快速剖析受损网段
- 合规性验证 — SMB 签名、停止维护 (EOL) 的操作系统、弱 TLS 检查
- 影子 IT 排查 — 揭露企业网络上的未经授权服务
## 法律声明
## ⭐ 支持该项目
如果您在工作中发现此工具很有用,请考虑给它点个 Star — 这有助于其他人发现它。
## ZavetSec 工具包的一部分
`ZavetSec-NetworkInventory` 是 [ZavetSec](https://github.com/zavetsec) 开源 DFIR 工具包的一部分 — 专为 Windows SOC 环境构建的独立、无依赖工具。
| 工具 | 描述 |
|---|---|
| [`ZavetSec-Vault`](https://github.com/zavetsec/ZavetSec-Vault) | 离线 AES-256-GCM 密码管理器 — 零依赖 |
| [`Invoke-ZavetSecTriage`](https://github.com/zavetsec/Invoke-ZavetSecTriage) | Windows 实时取证 — 标记 MITRE ATT&CK |
| [`ZavetSec-NetworkConnections`](https://github.com/zavetsec/ZavetSec-NetworkConnections) | 活动网络连接分析器 |
| [`ZavetSec-BrowserHistory`](https://github.com/zavetsec/ZavetSec-BrowserHistory) | 用于 DFIR 的浏览器历史记录提取器 |
| [`Invoke-MBHashCheck`](https://github.com/zavetsec/Invoke-MBHashCheck) | MalwareBazaar / ThreatFox 哈希检查器 |
| [`ZavetSec-HardeningBaseline`](https://github.com/zavetsec/ZavetSec-HardeningBaseline) | Windows 强化基线 — 审计 / 应用 / 回滚 |
*请负责任地扫描。了解你的网络。*
## 工作原理
1. **主机发现** — ICMP ping 扫描 + 5 个关键端口的 TCP 回退
2. **端口扫描** — 通过 RunspacePool 并行扫描 120+ 端口
3. **指纹识别** — Banner 抓取、基于 TTL 的操作系统识别,以及可访问情况下的 WMI 查询
4. **安全检查** — SMB 签名、MS17-010、SSL/TLS、未授权访问、ICMP
5. **MAC 厂商查询** — ARP 缓存 → 本地 OUI 数据库 → maclookup.app API
6. **风险评分** — 按主机评估 CRITICAL / HIGH / MEDIUM / LOW
7. **报告生成** — HTML (交互式) + CSV (兼容 SIEM)
## 为什么不使用 Nmap?
| | ZavetSec-NetworkInventory | Nmap |
|---|---|---|
| 需要安装 | ❌ 否 | ✅ 是 |
| 原生支持 Windows / PowerShell | ✅ | ⚠️ 需要安装 |
| 完全离线运行 | ✅ | ⚠️ |
| 内置 HTML 报告 | ✅ | ❌ |
| 从报告一键导出 CSV | ✅ | ❌ |
| 兼容 SIEM 的 CSV | ✅ | ❌ 需要编写脚本 |
| 风险评分 | ✅ 自动 | ❌ |
| 未授权访问检查 | ✅ | ❌ |
| MS17-010 检测 | ✅ | ⚠️ 需要 Nmap 脚本 (NSE scripts) |
| MAC 厂商识别 | ✅ OUI 数据库 + API | ❌ |
| 适配隔离环境 | ✅ | ⚠️ |
## 使用场景
- **网络可见性** — 发现跨子网的所有存活主机和开放服务
- **事件响应分诊** — 快速剖析受损网段,按风险级别确定响应优先级
- **内部安全审计** — 识别配置错误、高风险暴露和停止维护 (EOL) 的系统
- **影子 IT 检测** — 查找未经授权的服务 (Redis、MongoDB、VNC、Docker、Grafana)
- **合规性检查** — 检查 SMB 签名强制、停止维护的操作系统、弱 TLS 以及未授权访问情况
## 何时不适合使用此工具
- **大规模企业级扫描** (10,000+ 台主机) — 请使用 Nmap / Masscan
- **深度漏洞评估** — 请使用 Nessus / OpenVAS
- **重度 UDP 环境** — 暂不支持 UDP 扫描
- **需身份验证的扫描** — 无基于凭据的检查 (WMI 需要现有的管理员权限)
## 功能特性
### 发现与扫描
- 当 ICMP 被阻止时,使用 ICMP ping 扫描 + 5 个关键端口的 TCP 回退
- 默认扫描 120+ 个端口,且完全可自定义
- 通过 RunspacePool 实现多线程(建议:50–100 个线程)
### 服务指纹识别
- 抓取 15 个关键端口的 Banner(SSH 版本、HTTP Server 标头、FTP Banner)
- 操作系统检测:TTL 启发式算法 + WMI(如果凭据允许)
- 通过 ARP 缓存获取 MAC 地址 + 双层厂商查询
- 从 FQDN 主机名中提取域名(`HOST.corp.local` → `corp.local`)
### MAC 厂商识别
双层查询以实现最大准确性:
1. **本地 OUI 数据库** — 针对超过 200 家知名厂商(Cisco、Dell、HP、VMware、Mikrotik、Ubiquiti 等)的即时离线查询
2. **maclookup.app API 回退** — 针对未知的 OUI,查询与 IEEE 同步的数据库以获取确切的注册公司名称。需要互联网连接;在隔离环境中会平稳回退为 `Unknown`。
### 安全检查
- **SMB 签名** — Required / Enabled / Disabled
- **MS17-010 (EternalBlue)** — 基于签名的检测,只读模式
- **SSL/TLS 审计** — 弱协议 (SSLv3/TLS1.0/1.1)、过期证书、自签名证书
- **未授权访问** — FTP、Redis、Memcached、MongoDB
- **ICMP Timestamp** — 操作系统时间泄露 / 违反策略
- **停止维护 (EOL) 操作系统检测** — XP、Server 2003/2008/2012、Windows 7/8
### 报告输出
- 带有搜索栏和快速过滤器的交互式暗色主题 HTML
- **从 HTML 报告一键导出 CSV** — 导出当前可见的行(遵循活动的过滤器)
- 扫描完成后在脚本目录自动保存 CSV 文件
- 按协议类别区分的颜色编码服务徽章
- 每台主机的自动风险评分:CRITICAL / HIGH / MEDIUM / LOW
## 用法
```
# 交互式 — 如果未提供,则提示输入 subnet
.\ZavetSec-NetworkInventory.ps1
# 单个 subnet
.\ZavetSec-NetworkInventory.ps1 -Subnets '192.168.1.0/24'
# 多个 subnet
.\ZavetSec-NetworkInventory.ps1 -Subnets '10.0.0.0/24','10.0.1.0/24','172.16.0.0/24'
# 快速模式 — 仅发现 + 端口扫描,跳过所有漏洞检查(速度提升约 2-3 倍)
.\ZavetSec-NetworkInventory.ps1 -Subnets '10.0.0.0/24' -FastScan
# 跳过 ping — 当 ICMP 被防火墙阻止时很有用
.\ZavetSec-NetworkInventory.ps1 -Subnets '10.0.0.0/24' -SkipPing
# 自定义端口和线程数
.\ZavetSec-NetworkInventory.ps1 -Subnets '10.0.0.0/24' -Ports @(22,80,443,8080,8443) -Threads 100
# 包含 SMB 共享枚举的完整扫描
.\ZavetSec-NetworkInventory.ps1 -Subnets '10.0.0.0/24' -ScanShares -Threads 75
```
## 参数
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| `-Subnets` | `string[]` | *(交互式提示)* | 采用 CIDR 表示法的一个或多个子网 |
| `-Ports` | `int[]` | 120+ 端口 | 要扫描的自定义端口列表 |
| `-Threads` | `int` | `50` | 并行扫描线程数(建议:50–100) |
| `-TimeoutMs` | `int` | `500` | TCP 连接超时时间(毫秒) |
| `-OutputPath` | `string` | *脚本目录* | HTML 报告输出路径 |
| `-CsvPath` | `string` | *脚本目录* | CSV 输出路径 |
| `-SkipPing` | `switch` | `false` | 跳过 ICMP,直接探测所有主机的 TCP |
| `-ScanShares` | `switch` | `false` | 枚举已发现主机上的 SMB 共享 |
| `-FastScan` | `switch` | `false` | 跳过 SSL/TLS、MS17-010、未授权访问和 ICMP 检查 |
## 输出
报告会保存在脚本同级目录下:
```
NetworkInventory_20260330_134500.html
NetworkInventory_20260330_134500.csv
```
### CSV 导出
**两种获取 CSV 的方式:**
1. **自动** — 扫描完成后立即保存在脚本同级目录下
2. **从 HTML 报告** — 点击过滤器栏中的 `↓ Export CSV`。仅导出可见行 — 请先过滤以导出子集(例如仅导出 HIGH/CRITICAL 主机)
### CSV 示例
```
Risk,IP,Hostname,OS,Domain,SMB_Sign,Open_Ports,Risk_Indicators,MAC,Vendor
HIGH,10.0.0.10,SRV-DC01,Windows Server 2019,corp.local,Disabled,445/SMB|135/MS-RPC|139/NetBIOS,SMB signing disabled|Risky ports: 445,3C:C7:86:D6:CE:E8,DONGGUAN HUARONG
MEDIUM,10.0.0.22,WORKSTATION-04,,corp.local,N/A,3389/RDP|80/HTTP,Risky ports: 3389,04:7C:16:7B:B8:A8,HP
CRITICAL,10.0.0.55,,,,N/A,23/Telnet,Telnet open,,
```
### HTML 报告部分
- **统计栏** — 存活主机数,Critical / High / EOL 计数,RDP / SMB / SSH / DB 暴露情况
- **操作系统分布** — 带有可视化比例条的细分图
- **高频开放端口** — 所有已发现主机中的频率排名
- **主机清单** — 可过滤的表格:
- 风险徽章、IP、主机名、操作系统、域名、SMB 签名
- 带有按协议类别区分的颜色编码服务徽章的开放端口
- 风险指标 — 垂直列表,按严重程度进行颜色编码
- MAC 地址 + 厂商(OUI 数据库或 API 查询)
## 风险评分
```
CRITICAL ← EOL OS detected
← Telnet open (port 23)
← MS17-010 VULNERABLE
HIGH ← SMB signing Disabled
← Unauthenticated access confirmed (FTP / Redis / MongoDB / Memcached)
← 4+ risky ports open simultaneously
MEDIUM ← 1–3 risky ports open
← Weak TLS protocol (SSLv3 / TLS 1.0 / TLS 1.1)
← Expired SSL certificate
← Self-signed SSL certificate
← ICMP Timestamp reply
← FTP service detected
LOW ← No significant findings
```
**高风险端口**(触发风险指标):
`23` `69` `111` `135` `137` `139` `161` `445` `512` `513` `514` `1080` `1099` `1433` `1434` `1521` `2049` `2375` `2376` `3128` `3306` `3389` `4444` `4445` `4848` `4899` `5432` `5900` `5901` `6379` `6666` `7001` `7002` `8009` `8161` `9200` `11211` `27017` `27018`
## 安全检查详情
### MS17-010 (EternalBlue)
发送 SMB Negotiate → Session Setup → NT_TRANSACT,并检查 `STATUS_INSUFF_SERVER_RESOURCES (0xC0000205)` — 这是未修补系统的已知响应特征。不使用任何载荷或漏洞利用技术。结果属于启发式判断 — 请将其视为一种指示,而非确凿证据。
### SSL/TLS 审计
检查端口 443、8443、636、993、995、465、990、9443。报告内容:弱协议版本、证书过期、自签名颁发者。
### 未授权访问
| 服务 | 端口 | 方法 |
|---|---|---|
| FTP | 21 | 匿名登录 (`anonymous` / `scan@scan.local`) |
| Redis | 6379 | `PING` → `+PONG` 无需认证 |
| Memcached | 11211 | `stats` 响应无需认证 |
| MongoDB | 27017 | `isMaster` 查询无需认证 |
### ICMP Timestamp
构造 ICMP Type 13 数据包,检查 Type 14 回复。表明存在操作系统时间泄露 — 出现时会被标记为 MEDIUM 风险。
## 性能表现
| 子网 | 主机数 | 线程数 | 完整扫描 | `-FastScan` |
|---|---|---|---|---|
| /24 | 254 | 50 | ~2–3 分钟 | ~45–90 秒 |
| /23 | 510 | 100 | ~3–5 分钟 | ~90–120 秒 |
| /22 | 1022 | 150 | ~6–10 分钟 | ~3–4 分钟 |
## 局限性
- **不支持 UDP 扫描** — SNMP (161) 和其他 UDP 服务需要单独的工具
- **无完整操作系统指纹识别** — 仅限 TTL 启发式判断;准确的操作系统识别需要具有管理员凭据的 WMI
- **仅限本地网段的 MAC 地址** — ARP 不会跨越路由器
- **MAC API 需要互联网** — 在隔离环境中无法使用 maclookup.app 回退机制
- **MS17-010 为启发式检测** — 基于 SMB 响应特征,非绝对保证的结果
- **WMI 需要权限** — 仅当扫描器对目标具有管理员权限时,才能获取主机名 / 操作系统 / 域名
- **原始套接字需要提权** — ICMP Timestamp 需要管理员权限
## 环境要求
- 安装了 PowerShell 5.1 或更高版本的 Windows 操作系统
- **以管理员身份运行** — 原始套接字操作需要此权限
- 具有到目标子网的网络访问权限
- 无需外部模块或安装
- 互联网访问为可选 — 仅用于 MAC 厂商 API 查询
## 更新日志
### v1.0 — 初始版本
- 主机发现:ICMP + TCP 回退
- 120+ 端口扫描及带有颜色编码的服务 Banner 抓取
- SMB 签名检测
- MS17-010 EternalBlue 签名检查
- SSL/TLS 审计(协议、过期、自签名)
- 未授权访问检查:FTP、Redis、MemcachedMongoDB
- ICMP Timestamp 指纹识别
- 通过 ARP 获取 MAC 地址 + 双层厂商查询(本地 OUI 数据库 + maclookup.app API)
- 从 FQDN 中提取域名
- 停止维护 (EOL) 操作系统检测
- 用于快速发现的 `-FastScan` 模式
- 交互式子网提示
- 带有搜索、过滤器和一键 CSV 导出的暗色主题 HTML 报告
- 扫描完成后自动导出 CSV
- 自动风险评分:CRITICAL / HIGH / MEDIUM / LOW
## 开发路线图
- [ ] UDP 扫描 (SNMP、TFTP、NetBIOS-NS)
- [ ] JSON 输出格式
- [ ] IPv6 支持
- [ ] 差异报告 — 与上次扫描进行比较,高亮显示新增/消失的主机
- [ ] 针对关键 (CRITICAL) 发现的可选告警集成 (Telegram / Slack)
- [ ] 通过 VirusTotal / AbuseIPDB 进行 IP 信誉检查
## 应用场景
- 内部 SOC 网络审计与资产发现
- 事件响应分诊 — 快速剖析受损网段
- 合规性验证 — SMB 签名、停止维护 (EOL) 的操作系统、弱 TLS 检查
- 影子 IT 排查 — 揭露企业网络上的未经授权服务
## 法律声明
## ⭐ 支持该项目
如果您在工作中发现此工具很有用,请考虑给它点个 Star — 这有助于其他人发现它。
## ZavetSec 工具包的一部分
`ZavetSec-NetworkInventory` 是 [ZavetSec](https://github.com/zavetsec) 开源 DFIR 工具包的一部分 — 专为 Windows SOC 环境构建的独立、无依赖工具。
| 工具 | 描述 |
|---|---|
| [`ZavetSec-Vault`](https://github.com/zavetsec/ZavetSec-Vault) | 离线 AES-256-GCM 密码管理器 — 零依赖 |
| [`Invoke-ZavetSecTriage`](https://github.com/zavetsec/Invoke-ZavetSecTriage) | Windows 实时取证 — 标记 MITRE ATT&CK |
| [`ZavetSec-NetworkConnections`](https://github.com/zavetsec/ZavetSec-NetworkConnections) | 活动网络连接分析器 |
| [`ZavetSec-BrowserHistory`](https://github.com/zavetsec/ZavetSec-BrowserHistory) | 用于 DFIR 的浏览器历史记录提取器 |
| [`Invoke-MBHashCheck`](https://github.com/zavetsec/Invoke-MBHashCheck) | MalwareBazaar / ThreatFox 哈希检查器 |
| [`ZavetSec-HardeningBaseline`](https://github.com/zavetsec/ZavetSec-HardeningBaseline) | Windows 强化基线 — 审计 / 应用 / 回滚 |
*请负责任地扫描。了解你的网络。*标签:AI合规, C2日志可视化, Facebook API, HTML报告, IPv6, IR, Libemu, MAC地址查询, OUI数据库, PowerShell, RunspacePool, SMB签名, SSL/TLS检查, WMI, 云存储安全, 多模态安全, 安全基线, 安全检查, 安全运营中心, 库, 应急响应, 开源, 开源软件, 指纹识别, 插件系统, 操作系统指纹, 教学环境, 数字取证与应急响应, 数据统计, 无依赖, 无线安全, 未授权访问, 检测规则, 横幅抓取, 气隙环境, 离线运行, 端口扫描, 网络安全, 网络扫描, 网络映射, 网络资产发现, 资产清点, 资产盘点, 隐私保护