Alhasan100/netbaseline-py
GitHub: Alhasan100/netbaseline-py
一个面向 Windows 的 Python CLI 工具,通过捕获并对比主机网络暴露快照来检测配置漂移。
Stars: 0 | Forks: 0
# NetBaseline
**版本:** 1.0.0 | **作者:** Alhasan Al-Hmondi
[](https://www.gnu.org/licenses/gpl-3.0)
NetBaseline 是一个专注于 Windows 的 Python CLI 工具,用于主机网络暴露基线制定和漂移检测。它会捕获本地接口、路由、ARP 邻居、监听套接字和进程上下文的快照,然后对快照进行比较,从而便于审查主机暴露情况的变更。
## 为什么会有这个项目
网络安全和 IT 团队通常需要一种快捷的方式来回答简单但重要的问题:
- 当前机器上有哪些端口正在监听?
- 当系统处于已知良好状态时,存在哪些接口、路由和邻居?
- 上次基线与当前状态之间发生了哪些变化?
NetBaseline 通过轻量级、可脚本化的工作流填补了这一空白,它能够导出 JSON 快照并生成易读的漂移报告,而无需沉重的平台或前端技术栈。我构建这个工具是为了练习介于网络安全、网络运维和 IT 运维之间的主机审查工作。
## 技术栈选择
- Python 3.11+
- 优先使用标准库(`argparse`, `dataclasses`, `json`, `subprocess`, `pathlib`)
- Windows 原生命令集成(`netstat`, `ipconfig`, `route`, `arp`, `tasklist`)
- `unittest` 用于轻量级回归测试覆盖
这种技术栈在网络安全和 IT 运维工作中非常实用,因为它易于检查,在受限环境中具有可移植性,并且便于在面试中进行讨论。
## 功能特性
- 捕获包含主机元数据、接口、IPv4 路由、ARP 邻居、套接字和进程名称的主机暴露快照
- 将快照保存为结构化的 JSON
- 比较两个快照并识别新增或移除的接口、路由、邻居和监听套接字
- 使用 JSON 白名单抑制预期的漂移,这样常规的实验室变更就不会充斥在报告中
- 在漂移报告中突出显示新暴露的重点关注管理端口
- 打印终端摘要并导出 Markdown 或 CSV 漂移报告
## 项目结构
```
netbaseline-py/
|-- examples/
|-- src/netbaseline/
|-- tests/
|-- docs/
|-- LICENSE
|-- pyproject.toml
`-- README.md
```
## 安装
```
cd netbaseline-py
py -3 -m pip install --upgrade pip
py -3 -m pip install .
```
开发模式安装:
```
py -3 -m pip install -e .
```
## 如何运行
捕获基线快照:
```
netbaseline snapshot --output .\snapshots\baseline.json
```
随后捕获第二个快照:
```
netbaseline snapshot --output .\snapshots\current.json
```
在终端中比较两个快照:
```
netbaseline diff --baseline .\snapshots\baseline.json --candidate .\snapshots\current.json
```
在比较两个快照时抑制预期的漂移:
```
netbaseline diff --baseline .\snapshots\baseline.json --candidate .\snapshots\current.json --allowlist .\examples\expected-drift-allowlist.json
```
输出 Markdown 报告:
```
netbaseline diff --baseline .\snapshots\baseline.json --candidate .\snapshots\current.json --report .\reports\drift-report.md
```
输出 CSV 报告以便在电子表格中查看:
```
netbaseline diff --baseline .\snapshots\baseline.json --candidate .\snapshots\current.json --csv-report .\reports\drift-report.csv
```
一次运行同时输出两种报告格式:
```
netbaseline diff --baseline .\snapshots\baseline.json --candidate .\snapshots\current.json --allowlist .\examples\expected-drift-allowlist.json --report .\reports\drift-report.md --csv-report .\reports\drift-report.csv
```
## 使用示例
该工具会记录一个带有标准化键名的 JSON 快照,以便进行可重复的比较。漂移报告会突出显示有意义的基础设施变更,例如:
- 在 `0.0.0.0:3389` 上的新监听器
- 被移除的静态路由
- 在本地子网上新发现的 ARP 邻居
- 值得仔细审查的 RDP、WinRM、SSH、SMB、LDAP 或数据库监听器
当某些漂移是预期中的(例如实验路由或临时管理监听器)时,白名单文件可以抑制这些特定的条目,同时仍记录被过滤的内容。这使得输出对于重复的基线检查比一次性比较更加实用。
## 最终范围
此版本有意专注于 Windows,因为这里最贴近现实的网络安全用例是端点基线制定和加固。它小到足以在面试中清晰讲解,但也足够完整,能够展示数据收集、规范化、比较、报告和测试覆盖能力。
## 未来改进
- 使用 `ss` 和 `ip` 添加 Linux 收集器
- 为可疑的暴露变更添加风险评分
计划工作流说明已记录在 `docs/scheduled-usage.md` 中。
## 许可证
本项目基于 GNU General Public License v3.0 授权。有关完整的许可证文本,请参见 `LICENSE`。
标签:AI红队测试, ARP, CLI, Conpot, GPLv3, Homebrew安装, IT运维, Mr. Robot, Python, Python 3.9+, Socks5代理, WiFi技术, Windows安全, 后渗透, 基线管理, 安全合规, 无后门, 无线安全, 漂移检测, 端口监听, 系统基线, 网络代理, 网络安全, 网络快照, 网络暴露面, 规避防御, 路由表, 逆向工具, 配置变更, 隐私保护