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, 云存储安全, 插件系统, 无后门, 网络安全, 网络扫描, 逆向工具, 隐私保护