Abhishek-7j/AVS
GitHub: Abhishek-7j/AVS
一款融合 Nmap 服务探测、DNS/HTTP/TLS 情报采集与 NVD CVE 查询的轻量级网络资产评估工具,支持 GUI/CLI 双模式和可视化报告输出。
Stars: 0 | Forks: 0
# AVS — AutoVuln Scanner (Surface DNA)
网络漏洞**评估**助手:快速并行发现、针对性服务指纹识别 (Nmap)、**情报融合** (DNS / HTTP(S) / TLS)、插件式发现、CVE 提示 (NVD API)、PDF/JSON 导出以及 **Spectral Surface** 可视化。
## 扫描器运行流程(端到端)
1. **目标输入** — 输入主机名或 IP。应用程序通过 DNS 解析为 IPv4 (`scanner.py` / `intel_fusion.py`)。
2. **配置文件选择**
- **hyper**(默认):**脉冲扫描** — 基于精选的高信号端口列表,并行执行数百个 TCP connect 探测 (`turbo_sweep.py`) → **仅对开放端口执行 Nmap `-sV`** (`scanner.py`) 以确保速度。
- **quick / standard / deep**:经典纯 Nmap 路径(分别为 `-F`、`-sV`,或带有更深层版本探测的 `-sV -sC`)。
3. **服务表** — 来自 Nmap 的开放端口、服务名称和版本字符串。
4. **情报融合**(推荐:在 GUI 中保持 **开启**;在 CLI 中省略 `--no-fusion`)— 并行探测:
- **深度 DNS** (`dns_deep.py` + `dnspython`):主机名的 **A, AAAA, MX, NS, TXT, SOA, CNAME** 以及(如适用)**朴素顶点** 域名(例如 `www` → 顶点)
- **反向 DNS (PTR)** 和 **gethostbyname** 别名
- 针对 **80** 和 **443** 的 **TCP 可达性** 探测(始终执行),因此即使 Nmap 漏掉 Web 端口,您仍能获得信号
- 针对 **`/`** 和 **`/robots.txt`** 的 **HTTP(S)**:状态行 + **HTTP 状态码**、**所有响应头**(值在 JSON 中被截断以节省空间)、用于插件的安全性头子集、`/` 上的 HTML **标题**、**正文预览**
- **TLS**:协商版本、**密码套件元组**、主题/颁发者、**SANs**、**notBefore/notAfter**、序列号 (`intel_fusion.py`)
5. **插件** — 结构化发现(插件 ID、严重性、CVSS 风格评分、修复建议):
- 风险暴露(Telnet、FTP、SMB、数据库、Redis 等)
- TLS 协议弱点、证书问题
- Web 加固(HSTS、框架、Cookies 等),当情报可用时 (`plugins.py`)
6. **CVE 提示** — 针对每个服务/版本通过 **NIST NVD API 2.0** 进行关键词搜索 (`cve_lookup.py`)。这是*指示性*的,而非完整的 CPE 关联引擎。
7. **风险评分** — 根据发现的严重性聚合 (`vuln_checker.py`)。
8. **持久化** — SQLite 历史 + 用于端口、发现、情报的 JSON blobs (`database.py`)。
9. **输出** — PDF 报告、包含 `scan_bundle.json` 的导出文件夹(含 **`target_dossier`**:单页结构化摘要)、matplotlib **仪表板** 和 **Spectral Surface** 地图 (`spectral_surface.py`)。
10. **`target_dossier`** (`target_dossier.py`) — 为每次 **CLI** 运行和 **导出** 构建;汇总身份、DNS、表面、情报计数和评估计数。**完整的原始情报** 保留在 JSON 的 `intel_fusion` 下。
## 获得的目标信息(覆盖范围)
| 区域 | 数据 |
|------|------|
| 网络 | 开放的 TCP 端口、服务名称、版本/Banner 提示 (Nmap) |
| DNS | 深度记录 + 顶点传递;对于纯 IPv4 输入则跳过 |
| 身份 | 解析的 IPv4、PTR、主机名别名 |
| Web | 每个开放或可达的 80/443 端口:`/` 和 `/robots.txt`、Headers、标题、预览 |
| TLS | 协议、密码套件、证书字段、过期时间 |
| 风险 | 插件发现、评分、来自 NVD 关键词的 CVE *提示* |
**设计上未包含:** 完整 UDP 扫描、已认证的操作系统补丁列表、Web 应用爬取或保证漏洞利用验证。如需这些功能,请扩展代码库。
## 精确运行清单(可复制粘贴)
**1) 一次性设置**
```
cd path\to\AVS
py -3 -m venv .venv
.\.venv\Scripts\pip install -r requirements.txt
```
**2) 安装 Nmap** 从 [nmap.org](https://nmap.org/download.html) 并确认:
```
nmap --version
```
**3) 运行 GUI(默认全量情报)**
```
.\.venv\Scripts\python main.py
```
登录 → 保持 **Intel fusion** 勾选 → 选择 **hyper** → 输入目标 → **Start assessment**。查看日志部分:ports → intel → deep DNS → dossier summary → findings → CVE。
**4) 运行 CLI(包含 `target_dossier` 的 JSON)**
```
.\.venv\Scripts\python cli.py -t YOUR_TARGET --profile hyper -o out.json
```
打开 `out.json`:顶层键包括 `open_ports`、`intel_fusion`、`findings`、`target_dossier`、`cve_hints`。
## 仓库布局
| 文件 / 文件夹 | 角色 |
|---------------|------|
| `main.py` | CustomTkinter GUI,线程扫描流水线 |
| `cli.py` | 无界面 JSON 运行(服务器 / 自动化) |
| `config.py` | 通过环境变量配置登录凭据 |
| `scanner.py` | Nmap 配置文件 + Hyper(脉冲 + 针对性 Nmap) |
| `turbo_sweep.py` | 并行 TCP 脉冲扫描 |
| `intel_fusion.py` | DNS + HTTP(S) + TLS 融合 |
| `dns_deep.py` | 深度 DNS (A/AAAA/MX/NS/TXT/SOA/CNAME) |
| `target_dossier.py` | JSON 统一摘要对象 |
| `plugins.py` | 发现记录 + 情报插件 |
| `vuln_checker.py` | 合并插件 + 评分 |
| `cve_lookup.py` | NVD 关键词查找 |
| `database.py` | SQLite 扫描历史 |
| `report_generator.py` | PDF |
| `exporter.py` | JSON + 文本包 |
| `dashboard.py` | 经典图表 |
| `spectral_surface.py` | 极坐标端口/风险图 |
| `login.py` | GUI 登录 |
| `requirements.txt` | Python 依赖 |
| `scripts/` | 设置和启动辅助脚本 |
## 环境要求
- **Python 3.10+**(推荐 3.12+)
- **Nmap** 已安装并在您的 **PATH** 中([Windows 下载](https://nmap.org/download.html))
- 用于 **NVD** CVE 查找的互联网访问(在 CLI 中使用 `--no-cve` 可选)
## 安装与运行(GUI)
```
cd AutoVulnScanner
py -3 -m venv .venv
.\.venv\Scripts\pip install -r requirements.txt
.\.venv\Scripts\python main.py
```
或使用辅助脚本(预期 `.venv` 位于项目根目录下):
```
.\scripts\setup_venv.ps1
.\scripts\run_avs.ps1
```
**默认登录:** `admin` / `admin123` — 通过环境变量更改(参见 `env.example`)。
**跳过登录窗口**(仅限实验室环境):
```
$env:AVS_SKIP_LOGIN="1"
.\.venv\Scripts\python main.py
```
## 无界面运行(工具 / 服务器 / CI)
从 `AutoVulnScanner` 目录:
```
.\.venv\Scripts\python cli.py -t scanme.nmap.org --profile hyper -o report.json
```
选项:
- `--profile` `quick` | `standard` | `deep` | `hyper`
- `--no-fusion` — 跳过 HTTP/TLS/DNS 情报(更快)
- `--no-cve` — 跳过 NVD 调用(更快,适合离线环境)
- `-o file.json` — 写入 Bundle;省略则输出到 stdout
## 作为工具部署
| 场景 | 方法 |
|----------|----------|
| **分析师笔记本** | venv + Nmap 后运行 GUI (`main.py`) 或 CLI (`cli.py`) |
| **共享机器** | 同上 + 设置 `AVS_USER` / `AVS_PASSWORD`;生产环境中避免使用 `AVS_SKIP_LOGIN` |
| **自动化** | 计划任务运行带 `-o` 的 `cli.py`;将 JSON 接入 SIEM/工单系统 |
| **Windows EXE(可选)** | `pip install pyinstaller` 然后例如 `pyinstaller --noconfirm --windowed --name AVS main.py`(如果构建缺少 DLL,请测试 `customtkinter` 的 hidden-imports) |
**Docker 注意事项:** GUI 需要显示器;无界面使用更适合在安装了 Nmap 的精简镜像中运行 **`cli.py`**(基于 Debian 的镜像上使用 `apt install nmap`)。
## 推送至 GitHub (`Abhishek-7j/AVS`)
1. 在 GitHub 用户 **Abhishek-7j** 下创建一个空仓库 **AVS**(如果您想要干净的首次推送,请不要在 GitHub 上添加 README/license)。
2. 从此项目文件夹:
```
cd AutoVulnScanner
git init
git add .
git commit -m "Initial commit: AVS Surface DNA scanner"
git branch -M main
git remote add origin https://github.com/Abhishek-7j/AVS.git
git push -u origin main
```
3. 如果出现提示,请使用 **Personal Access Token**(GitHub → Settings → Developer settings)或 GitHub CLI (`gh auth login`) 进行身份验证。
## 贡献与安全
通过小型、可审查的更改来改进插件和情报检查。切勿在缺乏明确范围和法律使用文档的情况下添加漏洞利用载荷或未经验证的破坏性测试。
标签:Claude, CTI, CVE检测, DNS分析, EASM, GitHub, HTTP Headers分析, Nmap, Python安全工具, Scrypt密钥派生, TCP连接探测, TLS证书检测, Web安全, 加密, 安全可视化, 密码管理, 对称加密, 情报融合, 插件系统, 数据泄露防护, 数据统计, 无线安全, 服务指纹识别, 渗透测试辅助, 漏洞扫描器, 端口扫描, 网络安全, 网络安全审计, 网络探测, 自动化审计, 蓝队分析, 虚拟驱动器, 资产测绘, 逆向工具, 隐私保护