Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
mitm-proxy-ja3-ja4 — 可配置的 Rust HTTP MITM 代理,支持 TLS、HTTP/2 和 TCP 指纹伪造。 | Kitploit
工具/GitHubGitHub/3radiance/mitm-proxy-ja3-ja4
数据包嗅探与分析加密/解密工具Web代理与拦截Web安全网络安全隐私保护实用工具与框架网络爬虫反机器人指纹欺骗
GitHub3radiance/mitm-proxy-ja3-ja4

mitm-proxy-ja3-ja4

57222天前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →

可配置的 Rust HTTP MITM 代理,支持 TLS、HTTP/2 和 TCP 指纹伪造。

查看仓库
分享

mitm-proxy-ja3-ja4

English | Русский

一个使用 Rust、tokio 和 btls 构建的 HTTP MITM 代理。

本项目已完全重写,以利用 btls(BoringSSL)实现高级 TLS 指纹识别能力。TLS 指纹识别层(JA3/JA4)现已完全可伪造——密码套件、曲线、签名算法、ALPN、记录大小限制、证书压缩、GREASE、扩展排列/顺序、OCSP 装订、证书透明度(SCT)、会话票据、ALPS 以及加密客户端问候(ECH,通过 DoH 实时解析,并带有 GREASE 回退)均由 YAML 配置文件驱动。HTTP/2 指纹识别(Akamai)以及 HTTP/1.1 头部排序/重写也完全可配置。TCP(L4)指纹识别同样已上线:上游连接的 SYN 数据包在 NFQUEUE 中被重写(TTL、窗口大小、MSS、窗口缩放、DF 标志、时间戳、精确的 TCP 选项顺序、按域名标记),并自动管理 iptables。

TLS 指纹伪造配置

TLS

HTTP/2 指纹伪造配置

HTTP/2

TCP 指纹伪造配置

TCP

功能特性(当前实现)

  • MITM(中间人) — 透明 HTTPS 拦截。它使用 rcgen 动态签发并签名证书,并通过 moka 缓存证书以提升性能。

  • BoringSSL 集成 — 使用 btls 和 tokio-btls 处理 TLS 握手和 MITM 拦截。

  • TLS 指纹伪造(JA3/JA4)—— 完整实现。 上游 TLS 连接完全由通过 -c / --config <path> 传入的 YAML 配置文件构建(格式参见 config.yaml):

    • 密码套件,严格按调用方定义的顺序排列。
    • 椭圆曲线。
    • 签名算法。
    • 基于上游服务器实际选择的协议进行 ALPN 协商。
    • 记录大小限制。
    • 证书压缩(brotli、zlib、zstd),支持真实解压。
    • GREASE。
    • ClientHello 中精确的 TLS 扩展顺序,或 Chrome 风格的随机排列。
    • OCSP 装订、证书透明度(SCT)、会话票据以及 ALPS(应用层协议设置)开关。
    • 加密客户端问候(ECH)—— 针对每个上游主机,通过 DoH(HTTPS/SVCB 记录查询)实时解析真实的 ECH 配置,DoH 请求本身使用相同的 TLS/HTTP2 指纹配置文件;当未找到配置时回退到 ECH GREASE(或不使用),可独立配置——详情参见 TLS.md。
  • 上游优先的 ALPN 协商 — 代理在完成浏览器侧 TLS 握手之前,先与上游服务器建立并协商 TLS。随后使用上游服务器选择的 ALPN 来配置客户端侧 TLS 接受器,防止浏览器选择上游连接不支持的协议。

  • HTTP/2 指纹伪造(Akamai) — 通过 YAML 配置文件完全可配置的 HTTP/2 指纹识别:

    • HTTP/2 SETTINGS 值以及精确的 SETTINGS 顺序。
    • 连接级流量控制窗口更新。
    • 可配置的初始流 ID,当配置了优先级帧时自动计算。
    • HTTP/2 优先级帧以及请求头部优先级。
    • 可配置的空请求 END_STREAM 放置位置。
    • 伪头部顺序。
    • HTTP 头部顺序。
    • HTTP 头部替换、添加和移除。
    • 流式转发请求和响应体,无需缓冲完整正文。
    • HTTP/2 尾部(trailers)支持。
  • HTTP/1.1 头部伪造 — 针对纯 HTTP/1.1 上游连接(当 ALPN 未协商 h2 时),可配置头部顺序和内容,与 HTTP/2 使用相同的覆盖/移除语义。

  • TCP 指纹伪造(L4)—— 完整实现。 出站上游连接通过 Linux NFQUEUE 在数据包级别进行指纹识别(src/tcp_fingerprint/):

    • SYN 重写:TTL、窗口大小、DF 标志、MSS / 窗口缩放值、时间戳开关、精确的 TCP 选项顺序(或在未设置顺序时进行原地值修补),并重新计算校验和。
    • 已建立连接的流队列仅修补 TTL/DF(支持 IPv6 跳数限制);默认情况下每个数据包都会获得 Accept 判定,因此队列不会停滞。
    • 基于 SO_MARK 的路由到按域名的 TCP 配置文件,自动管理 iptables(插入到 zapret/nfqws 等工具之上,去重,在 Ctrl+C 关闭时移除),并带有 --queue-bypass 安全机制。
    • 参见 TCP.md 以及 config.yaml 中的 tcp 块。
  • 上游 HTTP 代理支持 — 可通过 CONNECT 方法经上游 HTTP 代理转发连接。

  • 按域名配置文件路由 — 传入 -d / --domain <path>,附带域名模式到部分配置文件覆盖的映射(参见 domain.yaml)。每个连接按 SNI 匹配(精确 → *.root → *.label.* → label.* → 基础配置文件),并使用其自身的 TCP/TLS/HTTP2/HTTP1/上游设置提供服务,在启动时预先构建一次。只需指定与基础配置文件不同的字段;其余全部继承。

  • 异步 — 基于 tokio 构建,实现高性能、非阻塞的异步 I/O。

要求

  • Rust(edition 2021)
  • Linux(NFQUEUE L4 功能所必需)
  • Root 或 cap_net_admin,cap_net_raw=+eip(用于 SO_MARK、NFQUEUE 绑定和自动 iptables;若没有,请在 tcp 块中设置 "auto_iptables": false 并手动应用 mangle 规则 — 参见 TCP.md)
  • 带有 Multi-Account Containers 的 Firefox(强烈推荐,用于同时利用多个指纹)

日志

该代理使用 tracing,通过 RUST_LOG 进行按模块过滤。

示例:

RUST_LOG='H2=error' cargo run --release -- -c profile.yaml
RUST_LOG='TCP=debug,H2=error,TLS=warn' cargo run --release -- -c profile.yaml
RUST_LOG='CA=info,TLS=warn,H2=error' cargo run --release -- -c profile.yaml

支持的标签与代码中使用的模块名称相同:TCP、HTTP、H1、H2、TLS、CA、ECH、CFG、IPT、NFQUEUE、Runtime。

日志行默认包含时间戳,因此调试会话更容易关联。

安装与使用

1. 构建

git clone https://github.com/3Radiance/mitm-proxy-ja3-ja4.git
cd mitm-proxy-ja3-ja4
cargo build --release

2. 运行

所有设置——端口、上游代理和 CA 文件路径——都位于通过 -c / --config <path> 传入的 YAML 配置中。没有 --port / --upstream 命令行标志。

config: 
  port: 9090
  upstream_proxy: "127.0.0.1:10808"
  cert: "/path/to/ca.crt"
  key: "/path/to/ca.key"

要不在上游代理的情况下运行,请设置 upstream_proxy: null。

cargo run --release -- --config profile.yaml
# or
cargo run --release -- -c profile.yaml

首次运行时,如果 cert/key 尚不存在,代理将在配置的路径下生成 CA 文件:

  • ca.crt — 根 CA 证书。你必须将其导入 Firefox/你的浏览器并信任它,以识别网站。
  • ca.key — CA 的私钥。

3. 按域名覆盖(可选)

cargo run --release -- -c profile.yaml -d domain.yaml

domain.yaml 将域名模式映射到部分覆盖层——仅包含与基础配置文件不同的字段:

"browserleaks.com":
  config:
    upstream_proxy: null
  tls:
    enable_ech: false

"*.google.com":
  tls:
    enable_ech: true

"tls.peet.ws":
  tcp:
    mark: "0x11"
    ttl: 100
    window_size: 64130
    mss: 1400
    window_scale: 7
    dont_fragment: true
    timestamp: false
    tcp_options_order:
      - mss
      - sack_perm
      - wscale
      - nop

"mail.google.*":
  tls:
    curves: 
    - X25519
    - P-256

每个连接的匹配顺序(按 SNI,不区分大小写):精确匹配 → *.root → *.label.* → label.* → 基础配置。缺失的键(或除 upstream_proxy 之外的任何位置为 null)表示“从基础配置继承”,而 "upstream_proxy": null 则显式强制该域名使用直连。TCP 字段(包括 mark)以相同方式继承基础配置——"mark": null 会取消该域名的 mark。注意:如果基础配置设置了 upstream_proxy,则完全不会应用 SO_MARK,并且 TCP 层会被绕过(参见 TCP.md)。

架构亮点

  • src/main.rs:CLI 入口点,使用 clap 解析 -c / --config <path>。YAML 配置包含代理端口、上游代理、CA 路径、TLS 指纹配置文件和 HTTP/2 指纹配置文件。

配置

  • src/config.rs:YAML 配置模型以及所有指纹层的解析器。处理 TLS 设置、ECH/DoH 选项、HTTP/2 SETTINGS、流优先级、头部排序、HTTP 头部覆盖、伪头部排序以及其他配置文件特定选项。

  • src/domain.rs:按域名的配置文件覆盖(-d / --domain)。部分覆盖在启动时一次性深度合并到基础配置之上;每个连接的查找是廉价的 Arc 克隆,无需重新分配。

代理层

  • src/proxy/tcp.rs:TCP 连接处理、初始 HTTP CONNECT 解析、上游 TCP 连接建立(当配置文件设置了 mark 时,通过 SO_MARK 标记套接字)、SNI 提取、按域名配置文件路由(SNI 匹配,回退到基础配置)、上游 TLS 协商,以及将生成的 TLS 连接桥接到客户端。

  • src/proxy/http.rs:使用 httparse 进行最小化的 HTTP/1.x 请求/响应解析,包括 CONNECT 方法验证以及提取目标 host:port。

TLS 指纹识别

  • src/tls_fingerprint/cert.rs:使用 rcgen 和 btls::x509 即时生成证书,由本地 CA 签名并缓存在 moka 缓存中。

  • src/tls_fingerprint/tls.rs:btls / tokio-btls TLS 接受器和连接器配置、上游 TLS 协商、客户端 TLS 握手处理以及 ALPN 协商。

  • src/tls_fingerprint/helpers.rs:用于密码套件、曲线、签名算法、ALPN、扩展顺序/排列、记录大小限制、证书压缩、GREASE、OCSP 装订、SCT、会话票据和 ALPS 的各个 TLS 指纹配置辅助函数。

  • src/tls_fingerprint/compression.rs:Brotli、zlib 和 zstd 的证书压缩实现。

  • src/tls_fingerprint/ech.rs:通过 DoH 实时解析 ECH 配置(HTTPS/SVCB 记录查找,对 DoH 请求本身复用已配置的 TLS/HTTP2 指纹),当主机未发布配置时回退到 GREASE。

HTTP/2 指纹识别

  • src/h2_fingerprint/h2.rs:HTTP/2 连接入口点和连接级请求处理。协调客户端 HTTP/2 连接与已配置的上游 HTTP/2 连接。

  • src/h2_fingerprint/request.rs:传入 HTTP/2 请求处理、请求构造、伪头部排序、HTTP 头部操作、上游流创建以及请求/响应转发协调。

  • src/h2_fingerprint/request_body.rs:流式 HTTP/2 请求体转发、流控制处理、END_STREAM 放置以及请求尾部。

  • src/h2_fingerprint/response.rs:HTTP/2 响应转发、响应体流式传输、流控制处理、END_STREAM 处理以及响应尾部。

  • src/h2_fingerprint/upstream.rs:根据活动指纹配置文件创建和配置上游 HTTP/2 客户端连接。

HTTP/1.1 指纹识别

  • src/h1_fingerprint/h1.rs:HTTP/1.1 上游请求处理(当 ALPN 未协商 h2 时使用),包括可配置的头部顺序和内容,基于 hyper 构建。

TCP 指纹识别

  • src/tcp_fingerprint/syn.rs:用于 SYN 数据包的 NFQUEUE 消费者——窗口/TTL/DF 重写、根据 tcp_options_order 重建 TCP 选项、校验和重新计算、裁决时清除 fwmark。
  • src/tcp_fingerprint/tcp.rs:用于已建立流的 NFQUEUE 消费者——仅处理 TTL/DF(IPv6 跳数限制),默认接受所有内容。
  • src/tcp_fingerprint/iptables.rs:自动 mangle 规则管理——在第三方规则之上顶部插入、去重、关闭时清理。

模块结构

该项目划分为相互独立的层:

src/
├── config.rs
├── domain.rs
├── main.rs
├── logging.rs
│
├── proxy/
│   ├── mod.rs
│   ├── tcp.rs
│   └── http.rs
│
├── tcp_fingerprint/
│   ├── mod.rs
│   ├── syn.rs
│   ├── tcp.rs
│   └── iptables.rs
│
├── tls_fingerprint/
│   ├── mod.rs
│   ├── cert.rs
│   ├── compression.rs
│   ├── ech.rs
│   ├── helpers.rs
│   └── tls.rs
│
├── h2_fingerprint/
│   ├── mod.rs
│   ├── h2.rs
│   ├── request.rs
│   ├── request_body.rs
│   ├── response.rs
│   └── upstream.rs
│
└── h1_fingerprint/
    ├── mod.rs
    └── h1.rs

proxy 层处理原始 TCP 和 HTTP CONNECT 流量,tcp_fingerprint 层在数据包进入网络之前于 NFQUEUE 中重写出站数据包,tls_fingerprint 层处理 TLS 拦截、TLS 指纹识别和 ECH 解析,h2_fingerprint 层处理 HTTP/2 指纹识别和流级流量,h1_fingerprint 层则为未协商 h2 的上游连接处理 HTTP/1.1 头部指纹识别。这种分离使传输层、L4、TLS 以及各协议指纹识别逻辑保持独立,同时允许各层在单次代理连接期间协同工作。

许可证

MIT

下载工具