Leviticus-Triage/APEX-Ngin2dos
GitHub: Leviticus-Triage/APEX-Ngin2dos
该项目是一个针对多种 Web 服务器进行 HTTP/2 HPACK 放大攻击测试的多变体基准测试框架,主要用于授权安全研究与防御性验证。
Stars: 5 | Forks: 0
# APEX Ngin2dos
[](LICENSE)
[](https://www.python.org/downloads/)
[](https://github.com/califio/publications/tree/main/MADBugs/http2-bomb)
[](#)
[](#legal--authorized-use)
**多变量 HTTP/2 HPACK 放大基准测试框架** — 使用 **APEX v2** 攻击引擎、实验室重放环境、隧道路由、MCP + CLI 接口以及可复现的 OOM/性能下降指标扩展了 [califio/publications MADBugs/http2-bomb](https://github.com/califio/publications/tree/main/MADBugs/http2-bomb)。
目标:**nginx**、**Pingora**、**Apache httpd**、**Envoy**、**Microsoft IIS**。
## 目录
- [关键结果](#key-results)
- [架构](#architecture)
- [快速开始](#quick-start)
- [APEX 模式](#apex-modes)
- [接口](#interfaces-mcp--cli)
- [隧道路由](#tunnel-routing)
- [实验室重放](#lab-replay)
- [安全加固](#hardening)
- [文档](#documentation)
- [上游与披露](#upstream--disclosure)
- [法律与授权使用](#legal--authorized-use)
## 关键结果
在 Proxmox 上完成实验室验证(除非另有说明,均为 8 GiB Docker 限制):
| 变体 | 模式 | 结果 | 备注 |
|---------|------|--------|-------|
| **nginx** | `apex_scaled` | **100/100** bomb 成功 @ ~200 MB 网络流量 | 通过批量 bomb + 128-stream 预算修复了 44 连接上限 |
| **nginx** | `apex_scaled` | **20/20** @ 40 MB 网络流量 | run_id `dacca1b8`,端口 8443 |
| **nginx** | Proxmox 活动 | **8 GiB 容器已填满** | 50 连接,worker RSS ~8170 MiB |
| **httpd** | `apex_cookie_scaled` | **12/12** bomb 成功 | 端口 10080,run_id `01ea8a01` |
| **Win11 IIS** | `apex_iis_mp` | **服务降级** | 预设 8gb 下的 5 个进程;攻击后 HTTPS 超时,可自我恢复 |
有关完整指标、A/B 比较(califio 基准 vs APEX v2)和 E2E 报告,请参阅 [`docs/LAB_RESULTS.md`](docs/LAB_RESULTS.md)。
## 架构
```
┌──────────────────────────────────────────────────────────────┐
│ MCP (FastMCP) │ CLI (bin/http2-bomb) │ benchmark_runner │
└────────────────────────────┬───────────────────────────────────┘
│
┌──────────────┼──────────────┐
▼ ▼ ▼
h2_enhanced cookie_bomb_enhanced iis_apex_orchestrator.ps1
(nginx/pingora) (httpd/envoy) (Windows IIS)
│ │ │
└──────────────┼──────────────┘
▼
attack_config.py + variants.py + tunnel.py
▼
vendor/califio-publications/MADBugs/http2-bomb/
```
完整详情:[`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md)
## 快速开始
```
git clone https://github.com/Leviticus-Triage/APEX-Ngin2dos.git
cd APEX-Ngin2dos
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements-dev.txt
# 单元测试(无需 nginx/apache — 在你的机器上运行)
pytest -q
# Real HTTP/2 实验室验证 → Proxmox ai-workstation(不是你笔记本电脑上的 localhost)
chmod +x lab-replay/deploy_proxmox.sh
./lab-replay/deploy_proxmox.sh smoke # deploy + 5-conn smoke on remote
./lab-replay/deploy_proxmox.sh campaign # full OOM campaign on remote
```
**运行位置**
| 步骤 | 位置 | 目标 |
|------|--------|--------|
| `pytest` | 你的笔记本电脑 | 无需服务器 |
| `deploy_proxmox.sh` | rsync → **192.168.2.116** | *VM 上的* `127.0.0.1:8443` Docker nginx |
| RSS / 探针监控 | 同一 VM,并行循环 | 不会从你的笔记本电脑上运行 |
除非你在本地启动了 `lab-replay/replay.sh start`,否则**不要**在你的笔记本电脑上运行 `./bin/http2-bomb probe --host 127.0.0.1 --port 8443`。`benchmark_runner.py` 中默认的 `127.0.0.1:8443` 指的是**运行测试框架的机器上的实验室环回地址**(通常是部署后的 ai-workstation)。
可选的本地 Docker 实验室(相同的 VM 布局,在你的机器上运行):
```
./lab-replay/replay.sh start 8g
./lab-replay/replay.sh probe
./lab-replay/replay.sh attack 5
```
### 验证层级
| 层级 | 命令 | 需求 |
|------|---------|-------|
| 单元 | `pytest -q` | 仅需 Python venv |
| 本地完整 | `./scripts/verify.sh` | + Docker 用于实验室冒烟测试 |
| Proxmox E2E | `./lab-replay/deploy_proxmox.sh smoke` | SSH 连接到 ai-workstation |
| CI | GitHub Actions `test` + `lab-smoke` 作业 | 推送时自动触发 |
任何攻击配置文件都**需要授权** — 请参阅[法律声明](#legal--authorized-use)。
## APEX 模式
| 模式 | 变体 | 描述 |
|------|----------|-------------|
| `apex` | nginx, pingora | 多波次 (64×2) + 批量 bomb + hard_hold |
| `apex_scaled` | nginx, pingora | N 个连接,每个约 2 MB 网络流量(@100 连接约 200 MB) |
| `apex_mp` | nginx, pingora | 每个连接对应一个 OS 进程 |
| `apex_cookie` | httpd, envoy | Cookie-crumb HPACK apex |
| `apex_cookie_scaled` | httpd, envoy | 扩展的 cookie 连接(批量) |
| `apex_cookie_mp` | httpd, envoy | 多进程 cookie worker |
| `apex_iis_mp` | IIS (Windows) | PowerShell 多进程协调器 |
| `churn` | nginx | fire-and-forget + 多波次分配扰动 |
| `optimized_oom` | nginx | 用于单客户端 OOM 周期的效率配置文件 |
注册表:`benchmark/variants.py` — `--variant nginx|pingora|httpd|envoy|iis`
其他活动模式(`ramp`、`burst`、`cumulative`、`multiprocess`、`sustained`、`pipelined_sustain`、`full_campaign`)记录在 [`benchmark/README.md`](benchmark/README.md) 中。
## 接口 (MCP + CLI)
### Cursor MCP
添加到 `~/.cursor/mcp.json`:
```
"http2-bomb": {
"command": "/path/to/APEX-Ngin2dos/.venv/bin/python3",
"args": ["/path/to/APEX-Ngin2dos/http2_bomb_mcp.py"],
"description": "APEX HTTP/2 HPACK bomb — authorized targets only",
"timeout": 900
}
```
工具:`probe_http2`、`run_http2_bomb_test`、`run_http2_bomb_benchmark`、`configure_http2_bomb_tunnel`、`list_http2_bomb_variants`、`get_http2_bomb_disclosure`。
### 独立 CLI
可在任何终端(Codex、Gemini CLI、Claude Code、SSH)中运行:
```
./bin/http2-bomb variants
./bin/http2-bomb run --host TARGET --profile safe --scope "Ticket-123" --yes
./bin/http2-bomb benchmark --host TARGET --mode apex_scaled --connections 100 --yes
./bin/http2-bomb tunnel set --mode tor
./bin/http2-bomb logs --last 10
```
设置:复制 `config/cli_settings.example.json` → `config/cli_settings.json`。
## 隧道路由
通过 SOCKS5、HTTP proxy、Tor、proxychains、ngrok 或 cloudflared 路由流量:
```
cp config/tunnel.example.json config/tunnel.json
./bin/http2-bomb tunnel set --mode socks5 --proxy-url socks5://127.0.0.1:1080
./bin/http2-bomb tunnel test --host staging.example.com
python3 benchmark/benchmark_runner.py --host TARGET --mode apex_scaled \
--tunnel-mode tor --connections 50
```
Python socket 路由需要 `PySocks`。请参阅 [`benchmark/README.md`](benchmark/README.md)。
## 实验室重放
| 目录 | 技术栈 | 端口 | 命令 |
|-----------|-------|------|---------|
| `lab-replay/` | nginx 1.24 | 8443 | `./lab-replay/replay.sh start 8g` |
| `lab-replay-httpd/` | Apache httpd | 10080 | `./lab-replay-httpd/replay.sh start 8g` |
| `lab-replay-envoy/` | Envoy | 10000 | `./lab-replay-envoy/replay.sh start 8g` |
| `lab-replay/pingora/` | Pingora (vendor compose) | 8444 | `./lab-replay/pingora/replay.sh start` |
Proxmox 部署:`lab-replay/deploy_proxmox.sh`、`lab-replay-httpd/deploy_proxmox.sh`。
Windows IIS 实验室:`benchmark/setup_win11_iis_lab.ps1` + `benchmark/iis_apex_orchestrator.ps1`。
## 安全加固
针对易受攻击技术栈(1.29.8 之前版本)的示例 nginx 缓解配置:
- [`hardening/README.md`](hardening/README.md)
- `hardening/nginx-1.29.8-post-upgrade.conf` — `http2_max_headers 100`
- `hardening/nginx-http2-bomb-mrx3k1.conf` — 针对 nginx 1.24 的纵深防御
## 文档
| 文档 | 内容 |
|----------|---------|
| [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) | 组件、数据流、变体调度 |
| [`docs/LAB_RESULTS.md`](docs/LAB_RESULTS.md) | 经过验证的指标、A/B 测试、Proxmox、Win11 IIS |
| [`docs/DISCLOSURE.md`](docs/DISCLOSURE.md) | 每个技术栈的 CVE/修复状态 |
| [`docs/OPTIMIZATION.md`](docs/OPTIMIZATION.md) | 发布路线图 (P0–P3) |
| [`RELEASE_NOTES_v1.0.1.md`](RELEASE_NOTES_v1.0.1.md) | v1.0.1 更新日志 |
| [`benchmark/README.md`](benchmark/README.md) | 框架模式、CSV/JSONL 日志记录 |
| [`SECURITY.md`](SECURITY.md) | 负责任的使用政策 |
| [`CONTRIBUTING.md`](CONTRIBUTING.md) | 如何贡献实验室数据 |
## 上游与披露
PoC 源自 **[califio/publications](https://github.com/califio/publications/tree/main/MADBugs/http2-bomb)**(包含在 `vendor/` 下)。更新上游:
```
cd vendor/califio-publications && git pull
```
| 技术栈 | 修复状态 |
|-------|------------|
| nginx | 已在 **1.29.8** 修复 — `max_headers` / `http2_max_headers` |
| Apache httpd | 已在 mod_http2 **v2.0.41** 修复 — cookie 统计 |
| IIS, Envoy, Pingora | 2026 年 5 月报告 — 状态未知 |
详情:[`docs/DISCLOSURE.md`](docs/DISCLOSURE.md)
## 法律与授权使用
**本软件仅用于授权的安全研究和防御性验证。**
- **仅**测试你拥有或获得**书面授权**评估的系统。
- 每次攻击调用都需要明确的范围说明(`--scope`、`scope_description` 或工单引用)。
- 未经授权对第三方基础设施的使用可能违反计算机犯罪法。
- 作者对滥用行为**不承担任何责任**。
使用此仓库即表示你同意这些条款。请参阅 [`SECURITY.md`](SECURITY.md)。
## 引用
如果你引用了这项工作:
```
@software{apex_ngin2dos_2026,
title = {APEX Ngin2dos: Multi-Variant HTTP/2 HPACK Benchmark Harness},
author = {Leviticus-Triage},
year = {2026},
url = {https://github.com/Leviticus-Triage/APEX-Ngin2dos}
}
```
基于 [califio/publications HTTP/2 Bomb](https://github.com/califio/publications/tree/main/MADBugs/http2-bomb) 构建。
标签:AI合规, HTTP/2, Maven, Python, 性能测试, 拒绝服务攻击, 无后门, 漏洞验证, 请求拦截, 逆向工具, 配置错误