MKMithun2806/VulnMalper

GitHub: MKMithun2806/VulnMalper

VulnMalper 是一个由 NetMalper 图谱驱动的多阶段漏洞扫描 pipeline,通过指纹识别→扫描→验证的智能编排实现精准的安全审计。

Stars: 1 | Forks: 0

# VulnMalper [![Python](https://img.shields.io/badge/python-3.9+-blue.svg)](https://www.python.org/downloads/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg)](https://github.com/MKMithun2806/VulnMalper/actions/workflows/ci.yml) [![PyPI](https://img.shields.io/pypi/v/vulnmalper.svg)](https://pypi.org/project/vulnmalper/) VulnMalper 是一个针对 [NetMalper](https://github.com/MKMithun2806/NetMalper) 图谱的单文件漏洞扫描 pipeline。 它编排了一个多阶段的漏洞审计工作流 —— **指纹识别 → 扫描 → 验证** —— 在这个过程中,每个阶段都会智能地将结果传递给下一个阶段,确保最大程度的覆盖范围,同时避免盲目的扫描。 它具有**零运行时依赖**(仅使用 Python 标准库),并且在本地可用时会本地运行每个工具,同时会自动回退到使用该工具的官方 Docker 镜像。 ## 功能特性 - **指纹识别 → 扫描 → 验证 pipeline**,由 NetMalper JSON 图谱驱动。 - **自动运行器**(`--runner auto`,默认):如果安装了工具,则在本地运行,否则通过其官方 Docker 镜像运行。 - **会话传递:** 从成功的 `nuclei` 或 `wapiti` 登录结果中获取的 session cookies 会自动传递给 `sqlmap`,用于已认证的扫描。 - **Phase 0 服务扫描:** 使用 `nmap` 对非 Web 服务进行特征分析,并对照 `nuclei` 模板进行检查。 - **爬虫 + 内容发现:** `katana` 的爬虫发现和 `ffuf` / `feroxbuster` 的内容发现会将新目标反馈回 pipeline 中。 - **WAF 感知:** 自动检测 WAF 并调整下游行为(例如 SQLMap 的 tamper 脚本)。 - **隐蔽性配置:** 随机的 User-Agents、带抖动的 headers/时间,以及礼貌/缓慢的速率限制,以避免简单的基于模式的检测。 - **代理池轮换:** 通过 `--proxy-file` 从文件中加载 2-15 个代理;工具启动时进行 round-robin(轮询)轮换,并且激活的代理模式会将工具的超时时间延长 2.5 倍。 - **针对性的 SQLi 验证:** `sqlmap` 仅在上游阶段发现的看起来存在注入风险的 endpoint 上运行 —— 杜绝盲目扫描。 - **清晰的输出:** 生成一份单一且可操作的 **Markdown 报告**、高价值的控制台摘要,以及可选的 JSON 导出。 ## Pipeline ``` graph TD JSON[NetMalper JSON] --> P0[Phase 0: Service Vulns] P0 --> HTTPX[httpx: Tech & Status] HTTPX --> WW[whatweb: Tech Stack] HTTPX --> WAF[wafw00f: WAF Detection] HTTPX --> KAT[katana: Advanced Crawling] KAT --> P2[Phase 2: Scanning] WW & WAF --> P2 P2 --> TS[testssl.sh: TLS Bugs] P2 --> NK[nikto: Misconfigs] P2 --> NC[nuclei: CVEs & Templates] P2 --> WP[wapiti: Active Fuzzing] NC & WP -- "Captured Sessions" --> SM[sqlmap: Targeted SQLi] NK -- "Injectable URLs" --> SM ``` ## 安装说明 VulnMalper 需要 Python 3.9 或更高版本。它是一个自包含模块,没有任何运行时依赖。 ### 使用 uv(推荐) 从 PyPI 安装: ``` uv tool install vulnmalper ``` 从代码仓库安装: ``` uv tool install git+https://github.com/MKMithun2806/VulnMalper ``` 两者都会安装一个 `vulnmalper` 可执行文件: ``` vulnmalper --help ``` ### 使用 pip ``` pip install vulnmalper ``` ### 从源码运行(无需安装) ``` git clone https://github.com/MKMithun2806/VulnMalper cd VulnMalper ./vulnmalper.py --help ``` ### Debian/Ubuntu 包 每个 [GitHub release](https://github.com/MKMithun2806/VulnMalper/releases) 都包含一个由 `build_deb.sh` 构建的 `.deb` 文件: ``` URL=$(curl -s https://api.github.com/repos/MKMithun2806/VulnMalper/releases/latest | grep browser_download_url | grep .deb | cut -d '"' -f 4) curl -L -o vulnmalper.deb "$URL" sudo apt install -y ./vulnmalper.deb rm vulnmalper.deb ``` ### 外部工具依赖 对于任何在本地未找到的工具,VulnMalper 都会拉取官方的 Docker 镜像。 如需完全在本地执行,请自行安装这些工具: ``` sudo apt install nikto sqlmap whatweb wafw00f pip install wapiti3 # 基于 Go 的工具 go install github.com/projectdiscovery/httpx/cmd/httpx@latest go install github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest go install github.com/projectdiscovery/katana/cmd/katana@latest ``` ## 运行说明 ``` # 使用 NetMalper 图表的基本运行 vulnmalper targets.json # 通过 session 交接进行身份验证扫描 vulnmalper targets.json --auth-user admin --auth-pass password123 # 仅针对高严重性的重点扫描 vulnmalper targets.json --only nuclei,sqlmap --severity high # 礼貌的、限制速率的扫描 vulnmalper targets.json --polite --rate-limit 10 # 通过轮换 proxy 池进行扫描 vulnmalper targets.json --proxy-file proxies.txt # 在 Markdown 报告旁额外写入 JSON 导出 vulnmalper targets.json --export-json ``` `examples/targets.json` 中提供了一个示例 NetMalper 图谱。 ### 关键标志位 | 标志位 | 描述 | | :--- | :--- | | `--runner` | `auto`(默认)、`local` 或 `docker`。 | | `--only` | 以逗号分隔的要运行的工具列表。 | | `--threads` | 每个目标的并行 worker 数量(默认:3)。 | | `--severity` | 要报告的最低 nuclei 严重级别(`info`、`low`、`medium`、`high`、`critical`)。 | | `--max-targets` | 限制处理的目标数量。 | | `--proxy-file` | 每行包含一个代理的文件(`http://host:port` 或 `socks5://host:port`);2-15 个代理将以 round-robin 方式轮换。 | | `--auth-user`, `--auth-pass`, `--auth-cookie` | 用于已认证扫描的凭据。 | | `--out` | Markdown 报告的自定义基础名称。 | | `--export-json` | 同时写入 JSON 导出文件(单独使用此标志将自动在报告旁边生成同名文件)。 | ### 隐蔽 / 礼貌模式标志位 | 标志位 | 描述 | | :--- | :--- | | `--polite` | 限制 req/sec,增加约 250ms 的延迟,使用浏览器 headers。 | | `--slow` | 极低的 req/sec,约 1s 的延迟,Nikto `-Pause 1`;用于受 WAF 保护的目标。 | | `--user-agent` | 固定使用单一的 User-Agent(默认:每次运行随机生成)。 | | `--header` | 额外的 HTTP header,可重复使用(例如 `--header 'X-Forwarded-For: 1.2.3.4'`)。 | | `--rate-limit` | 对 nuclei/httpx 的 req/sec 的硬性上限(0 = 工具默认值)。 | | `--delay-ms` | 支持该功能的工具在请求之间的最小毫秒延迟。 | | `--headless` | 为 JS 渲染的 endpoint 启用 nuclei `-headless` (Chromium)。 | | `--quiet` | 移除嘈杂的 nuclei tags 和 exposure-config globs;由 `--polite`/`--slow` 隐式启用。 | | `--no-jitter` | 禁用针对单个请求的时间和 header 的随机化。 | 如果未提供任何隐蔽标志位,则会启用 **auto 模式**:在 Phase 1 之后,会根据扫描到的证据为目标选择相应的策略(隐蔽 / 均衡 / 激进)(检测到 WAF/CDN → 隐蔽,私有 IP → 激进,其他情况则选择均衡)。 ### 各工具的超时设置 每个工具都有自己对应的 `---timeout` 标志(单位为秒),例如 `--nuclei-timeout`、`--sqlmap-timeout`。使用 `--no-timeout` 可取消限制(请参阅 `vulnmalper --help`)。 ## 开发说明 完整指南请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。 ``` git clone https://github.com/MKMithun2806/VulnMalper cd VulnMalper uv sync # create env, install package + dev tools uv run pytest # run tests uv run ruff check . # lint uv run ruff format --check . # formatting uv run python vulnmalper.py --help # smoke test ``` ## 构建 `.deb` 包 ``` ./build_deb.sh 7.3.6 ``` 需要 `dpkg-dev`。输出文件:`dist/vulnmalper__all.deb`。 ## 文档 - [Pipeline 详情](docs/PIPELINE.md) - [更新日志](CHANGELOG.md) - [贡献指南](CONTRIBUTING.md) - [安全政策](SECURITY.md) ## 许可证 MIT © [MKMithun](https://github.com/MKMithun2806) 与 [NetMalper](https://github.com/MKMithun2806/NetMalper) 完美搭配使用。
标签:Docker, Python, XXE攻击, 主机安全, 安全防御评估, 密码管理, 插件系统, 无后门, 自动化渗透测试, 请求拦截, 运行时操纵, 逆向工具