Alhasan100/netbaseline-py

GitHub: Alhasan100/netbaseline-py

一个面向 Windows 的 Python CLI 工具,通过捕获并对比主机网络暴露快照来检测配置漂移。

Stars: 0 | Forks: 0

# NetBaseline **版本:** 1.0.0 | **作者:** Alhasan Al-Hmondi [![许可证: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](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安全, 后渗透, 基线管理, 安全合规, 无后门, 无线安全, 漂移检测, 端口监听, 系统基线, 网络代理, 网络安全, 网络快照, 网络暴露面, 规避防御, 路由表, 逆向工具, 配置变更, 隐私保护