
mitm_relay SSL拦截指南如何轻松中间人 IMAP、SMTP、XMPP 等 STARTTLS 加密通道【免费下载链接】mitm_relayHackish way to intercept and modify non-HTTP protocols through Burp others.项目地址: https://gitcode.com/gh_mirrors/mi/mitm_relaymitm_relay 是一款开源的 SSL 拦截中间人工具借助 Burp Suite 等现成的流量代理就能轻松对 IMAP、SMTP、XMPP、IRC 等非 HTTP 协议进行 STARTTLS 加密通道的拦截与篡改TCP/UDP 均支持特别适合厚客户端Thick Client安全评估场景免去了为冷门协议搭建专用环境的麻烦。什么是 mitm_relay主流的抓包/代理工具大多只擅长 HTTP 世界。而邮件、即时通讯、数据库、甚至 SSH 这类古怪协议往往让安全测试者头疼。mitm_relay 的思路非常巧妙作者称之为 hackish借鸡生蛋把每一段客户端请求和服务器响应打包进一个 HTTP POST 请求体里经由你现有的拦截代理如 Burp Proxy转发给一个本地回声Web 服务器再原样取回协议无关因此 Burp 里看到的 HTTP 头无意义但代理的拦截、查看、Match and Replace 修改规则对原始协议数据完全生效完全异步服务器连续分片发送响应也不会出错支持 SSL/STARTTLS自动检测 TLS 握手\x16\x03魔数并在中间插入 TLS 包装因此 IMAP、SMTP、XMPP、IRC 的 STARTTLS 升级通道可以被解密。在代理中客户端发来的数据会出现在 URL 含CLIENT_REQUEST的请求里服务器回的数据则出现在SERVER_RESPONSE请求中。注意Burp 的 Repeater、Intruder、Scanner 在此场景下没有意义——它们实际打到的只是那个回声服务器。快速安装与运行克隆项目并查看帮助git clone https://gitcode.com/gh_mirrors/mi/mitm_relay cd mitm_relay python3 mitm_relay.py --help核心参数一览源码见 mitm_relay.py参数作用-r relay定义中继格式[udp:\|tcp:]本地端口:目标主机:目标端口可重复指定多个-p proxy转发到哪个代理如127.0.0.1:8080省略则进入纯监控模式流量只打印到控制台-c / -kSSL/STARTTLS 拦截所需的服务器证书与私钥文件-cc / -ck连接真实服务器时使用的客户端证书与私钥-s script自定义 Python 脚本handle_request/handle_response在转发到代理前修改流量-tSocket 接收超时默认 120 秒SSL 拦截配置三步搞定 STARTTLS 通道 第一步生成证书项目自带 gen_certs.sh 脚本一键生成自签名证书10 年有效期sh gen_certs.sh脚本会在cert/目录下生成server.pem与private.key默认 CN 为*.acmecorp.com。⚠️关键细节很多客户端会校验证书 CommonName请务必将 CN 改为客户端实际连接的服务器域名可从真实服务器证书中获取否则 STARTTLS 拦截会失败。如果客户端执行严格的证书校验可以把 Burp 的 CA 导入到客户端信任库再用该 CA 签发一张可信服务器证书完整命令见 README.md 的 Certificates 章节前提是客户端未做证书绑定Certificate Pinning。第二步让客户端把流量发给你最简单的方式查清客户端要解析的 DNS 地址在 hosts 文件中把它指向运行 mitm_relay 的机器并让 mitm_relay监听与目标服务器相同的端口。若客户端写死了 IP 地址可在宿主机用 iptables DNAT 规则把流量重定向到中继端口README 中有完整示例。第三步启动中间人以拦截 IMAP143 端口的 STARTTLS 会话为例python3 mitm_relay.py -r 143:mail.example.com:143 \ -p 127.0.0.1:8080 \ -c cert/server.pem -k cert/private.key同样方式替换端口即可拦截 SMTP25/587、XMPP5222/5223等。UDP 协议只需加上前缀如-r udp:53:dns.example.com:53注意 UDP 场景建议绑定局域网 IP 而非 127.0.0.1。启动后每次客户端与服务器之间的 TLS 握手都会自动被工具拆开重新封装明文数据随即可在 Burp 中逐条查看和篡改。✅实战技巧用 Python 脚本自动改包 ✍️除了手动在 Burp 里点拦截还可以用-s参数挂一个 Python 脚本在流量进入代理之前就完成修改。示例脚本 sample_script.py 演示了两个钩子def handle_request(client_request): # 客户端 - 服务器 的流量 modified client_request.replace(boriginal, bmodified) return modified def handle_response(server_response): # 服务器 - 客户端 的流量 return server_response官方 README 中给了一个经典用法——关闭 Gmail IMAP 会话的压缩把COMPRESSDEFLATE替换为COMPRESSNONE从而在 Burp 里看到明文的邮箱交互内容python3 mitm_relay.py -r 143:imap.gmail.com:143 -p 127.0.0.1:8080 \ -c cert/server.pem -k cert/private.key -s disable_compress.py脚本的典型应用场景修改协议中记录字段长度的头部改了消息体就要同步改长度字段否则会话会损坏对协议特定部分做模糊测试Fuzzing反序列化对象、做修改、再重新序列化纯监控把用户名、密码等敏感字段记录到文件。只看不改监控模式 不指定-p代理时mitm_relay 退化为纯监控模式所有流量以彩色高亮打印到控制台ASCII 直接解码二进制则输出 hexdump客户端/服务器 IP、时间戳、数据长度一目了然适合快速摸清一个陌生协议的行为。注意事项 ⚠️没有提供-c/-k证书时TLS 握手会被检测到但无法解密工具会提示你先用gen_certs.sh生成证书修改会改变消息长度的协议字段如 MySQL必须同时更新长度头否则连接会中断工具完全同步转发不改变原有会话时序合规提醒仅在你拥有或获得书面授权的系统上使用未经授权的中间人拦截是违法行为。小结mitm_relay 用一个把协议数据伪装成 HTTP 请求体的巧思让你零配置地把 Burp 的能力扩展到任意 TCP/UDP 协议上。配合 STARTTLS 证书支持IMAP、SMTP、XMPP 这类加密邮件/IM 通道也能被轻松中间人是厚客户端安全评估工具箱里一把锋利的瑞士军刀。【免费下载链接】mitm_relayHackish way to intercept and modify non-HTTP protocols through Burp others.项目地址: https://gitcode.com/gh_mirrors/mi/mitm_relay创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考