keshavhacker1609/Network-Security-Scanner

GitHub: keshavhacker1609/Network-Security-Scanner

基于 Python 的自动化网络安全扫描器,整合 Nmap 端口探测、风险评分与多格式报告生成,支持扫描差异对比与 CI/CD 流水线门控。

Stars: 1 | Forks: 0

# 网络安全扫描器 (NSS) 一个基于 Python 的网络安全工具,用于自动化网络侦察。它可以 发现存活主机,检测开放端口和运行中的服务版本, 根据精选的风险数据库(包含 CVSS + CVE + 修复 指南)对每个发现进行分类,跟踪多次扫描间的变化,并生成多种格式的报告, 适合人工查阅和 CI pipeline 使用。 ## 功能 - **单次 Nmap 扫描** — 在一次网络往返中完成端口、服务/版本检测,以及可选的 OS 指纹识别。 - **四种扫描配置** — `quick`、`standard`、`aggressive`、`stealth`。 - **模块化风险数据库** — 端口情报(CVSS 评分、CVE 示例和 修复方案)存储在独立的 YAML 文件中,可以通过 添加额外文件来进行扩展或覆盖。风险逻辑没有任何硬编码。 - **加权风险评分** — 每台主机都会获得一个 0–100 的分数和 `LOW / MEDIUM / HIGH / CRITICAL` 等级。 - **扫描历史与差异对比** — 为每个目标保存每次扫描的快照,并在下次运行时报告 新开启/新关闭的端口 (`--diff`),非常适合 持续监控。 - **多种报告格式** — JSON、自带暗色主题的 HTML、CSV、 Markdown 和 **SARIF**(可上传至 GitHub 代码扫描)。 - **CI 门控** — `--fail-on {none,low,medium,high,critical}` 控制退出 代码,以便扫描可以对 pipeline 进行门控。 - **稳健的输入验证** — IPv4/IPv6、主机名和 CIDR 范围(限制最大为 `/16` 以防止意外的广泛扫描)。 - **轮转的彩色日志记录** — 可配置级别,基于大小的日志轮转。 ## 环境要求 - Python 3.9+ - 已安装 [Nmap](https://nmap.org/) 并位于您的 `PATH` 中 - Python 包:`pip install -r requirements.txt` 某些扫描配置(`-sS`, `-O`)需要提升权限(root / Administrator)。 ## 安装说明 ``` git clone https://github.com/keshavhacker1609/Network-Security-Scanner.git cd Network-Security-Scanner pip install -r requirements.txt ``` ## 使用说明 ``` # 单个 host 的标准扫描 python main.py --target 192.168.1.1 # subnet 的激进扫描,JSON + SARF 输出 python main.py --target 192.168.1.0/24 --scan-type aggressive -f json -f sarif # 指定 ports,与前一次扫描进行对比,发现 HIGH 结果时使 CI 失败 python main.py --target example.com --ports 80,443,8080 --diff --fail-on high # Stealth 扫描,所有报告格式,自定义输出目录 python main.py --target 10.0.0.1 --scan-type stealth -f all -o ./reports ``` ### 主要选项 | 标志 | 描述 | |------|-------------| | `--target, -t` | IPv4/IPv6 地址、主机名或 CIDR 范围(必填) | | `--ports, -p` | `80` \| `1-1024` \| `80,443,8080` \| `all` | | `--scan-type, -s` | `quick` \| `standard` \| `aggressive` \| `stealth` | | `--format, -f` | `json` \| `html` \| `csv` \| `markdown` \| `sarif` \| `both` \| `all`(可重复使用) | | `--diff` | 与该目标的上一次扫描进行对比 | | `--no-history` | 不为未来的差异对比保留快照 | | `--fail-on` | 触发非零退出的严重程度(CI 门控) | | `--output-dir, -o` | 报告输出目录 | | `--config, -c` | 自定义 `config.yaml` 的路径 | | `--verbose, -v` | DEBUG 级别的日志记录 | ### 退出代码 | 代码 | 含义 | |------|---------| | `0` | 干净 — 没有达到或超过 `--fail-on` 阈值的发现 | | `1` | 错误 — 扫描或配置失败 | | `2` | 门控 — 发现了达到或超过阈值的检测结果 | | `130` | 被中断 (Ctrl-C) | ## 配置 所有行为均由 [`config/config.yaml`](config/config.yaml) 驱动 — 包括扫描 超时、日志记录、输出默认值、历史记录以及 CI `fail_on` 阈值。 风险数据库是**模块化**的。基础情报位于 [`config/risk_database.yaml`](config/risk_database.yaml);在 `risk_database_files` 下列出其他文件即可合并 您自己的端口情报,而无需 编辑基础文件。后续文件(以及可选的内联 `risk_database` 块)具有更高优先级,因此更新和覆盖可以直接插入使用。 ``` risk_database_files: - "risk_database.yaml" - "custom_ports.yaml" # your additions/overrides ``` ## 项目结构 ``` main.py CLI entry point and orchestration config/ config.yaml Runtime settings + risk-database references risk_database.yaml Modular port-risk intelligence __init__.py Config loader (merges modular DB files) logger.py Rotating, colourised logging scanner/ port_scanner.py Single-pass Nmap scan + profiles risk_analyzer.py Risk classification & weighted scoring report_generator.py JSON / HTML / CSV / Markdown / SARIF reports history.py Snapshot persistence & scan diffing validator.py Target & port-spec validation ``` ## License 仅供教育和授权的安全评估目的使用。
标签:CTI, Python, 云存储安全, 插件系统, 无后门, 网络安全, 网络扫描, 逆向工具, 隐私保护