RedHawk v2.0 更新记录(一):代理内核重写 —— 从「手写 HTTP 解析」到「h11 状态机」

红隼 · 落叶 · 万物生歌 · AI 驱动红队安全工具台


一、先说结论

RedHawk v2.0 的第一块地基已经落地:抓包代理内核从「Python 标准库手写 HTTP 解析」重写为「h11 状态机 + asyncio 事件驱动」架构。

一句话主旨:把「青春版 Burp」的代理,从"正确性靠赌"升级为"正确性由状态机保证",并为 HTTP/2、WebSocket、SSE 铺好了可插拔的地基。


二、为什么重写?(这次更新的背景)

RedHawk 是一款 AI 驱动的授权渗透测试一体化工作台(抓包 / 发包 / 扫描 / AI 研判 / 复现报告)。v1.0 的抓包代理基于 http.server + ssl + urllib 手写,协议支持只有 HTTP/1.1,HTTPS 中间人靠自维护 TLS socket + 手动解析明文 HTTP。

技术评审给出过很直白的结论:

“这个方法能工作,但边界情况很多——连接复用、分块传输、压缩、超大 body、异常关闭、复杂 multipart、长连接等。普通测试没事,一碰到复杂 SaaS 或文件上传,事情就开始变得很有人类特色。”

现代 Web 大量使用 HTTP/2、WebSocket、SSE、流式接口——手写协议解析这条路走不到那一步。所以 v2.0 第一步,就是重写代理内核。


三、本次更新做了什么

1. 新增 traffic_engine 流量引擎包(7 个模块)

src/redhawk/traffic_engine/
├── listener.py     # asyncio 监听 + 健康检查过滤 + CONNECT/TLS 升级
├── client_h1.py    # h11 状态机处理器(keep-alive / chunked / 异常关闭)
├── upstream.py     # 上游转发会话(目标解析、请求转发、响应回传、入库)
├── recorder.py     # 流量记录(与 v1 完全兼容)
├── server.py       # ProxyServer 生命周期(后台 asyncio 线程)
├── config.py       # 集中配置(环境变量,函数式读取)
└── __init__.py

核心设计:协议解析全部交给久经考验的 h11(HTTP/1.1 状态机)——连接复用、分块传输、半关闭、异常关闭由库兜底,我们只写转发、MITM 编排、记录。这正是「能用现成最强工具就不造轮子」的体现。

2. intercept.py 从 549 行瘦身到 235 行

  • 删除手写的 _ProxyHandler、同步 socket TLS 隧道(约 300 行)
  • 保留 Repeater 发包、原始请求解析、流量归类、系统代理接管
  • 通过 re-export 保持接口完全兼容——web.py 一行未改

3. HTTPS 中间人证书修复

  • CA 证书补 SubjectKeyIdentifier,站点证书补 SKI + AuthorityKeyIdentifier
  • 修复 OpenSSL 3 下 CERTIFICATE_VERIFY_FAILED: Missing Authority Key Identifier(HTTPS MITM 端到端测试暴露的真实问题)

4. 代理核心第一次有了端到端测试

v1.0 的代理只有生命周期测试(启动/停止),真实的"请求→转发→记录"链路没有任何自动化验证。本次新增 7 项端到端测试:

测试 验证内容
GET / POST 端到端 请求经代理转发 + 流量入库(url/status/body)
keep-alive 三连发 同一连接多请求复用
自环过滤 Host=代理端口 → 200 且不记录
探测过滤 captiveportal → 204 且不记录
HTTPS MITM 全链路 CONNECT → 动态证书 → TLS 解密 → 记录
生命周期 start/stop/可重复启动

四、更新后的优势(对比 v1)

维度 v1.0 v2.0-W1
HTTP 解析 手写(边界情况多) h11 状态机(库兜底)
分块传输(chunked) 记录不完整(无 CL 的响应 body 丢失) 自动解组帧,完整记录
keep-alive 复用 手写状态管理 状态机保证
转发 urllib 整包缓存 流式转发(边收边转,不爆内存)
HTTPS MITM 同步 socket + select 隧道 asyncio start_tls + h11 over TLS
测试覆盖 无端到端 7 项端到端 + HTTPS 全链路
代码规模 549 行(含 300 行手写解析) 235 行 + 200 行 h11 编排

最关键的结构性变化:协议层与代理逻辑分离,HTTP/2、WebSocket、SSE 后续只需要「加模块」而不是「重写内核」——这正是 v2.0 路线图里 HTTP Proxy 4/10 → 8/10 的路径。


五、测试结果

python -m pytest tests/ -q
# 129 passed, 2 skipped
  • 原 v1.0:122 passed, 1 skipped
  • 本次:+7 项端到端测试全部通过,v1 回归全绿,零破坏

六、下一步计划(v2.0 路线图)

  • W2:上游连接池(连接复用)、chunked / 100-continue 专项测试、补回上游代理支持
  • W3HTTP/2 MITM(双连接事件桥接 + 流控 + 流映射)、大 body 流式落盘(废除 2MB 截断)
  • W4WebSocket 隧道(帧级转发 + 消息记录)、SSE 流式事件记录
  • Phase B/C:证据引擎(AI 结论程序化验证)、资产知识图谱、受控安全 Agent、企业级授权与审计链

七、项目信息

  • 开源地址:https://github.com/whisperBrocade/RedHawk
  • 官网:https://whisperbrocade.github.io/RedHawk/
  • License:MIT

⚠️ RedHawk 是面向安全研究、CTF、教学演示与授权渗透测试的专业工具。使用前必须获得目标系统的明确书面授权,遵守所在国家/地区的全部法律法规。未授权使用、误用、滥用产生的一切法律后果由使用者自行承担。


红隼 · 落叶 · 万物生歌 · Built with ❤️

欢迎 Star ⭐ 与交流,后续更新会继续发布在 CSDN。

Ciallo~(∠・ω )⌒☆

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐