使用 Socks5 来劫持 HTTPS(TCP-TLS) 之旅

本文探讨了如何使用Socks5协议进行中间人攻击,以劫持HTTPS流量。通过理解TLS劫持的本质,MITM时序,以及Socks5的握手和转发过程,实现了Socks5代理的MITM功能。文章还讨论了如何与现有HTTP代理基础设施兼容,包括多协议端口复用和二级代理的使用,并提到了对国密GM-TLS的支持和代理认证的实现。
摘要由CSDN通过智能技术生成

MITM 劫持的过程中,HTTP 协议并不是唯一选择。

实际在 MITM 使用过程中,BurpSuite 和 Yakit 提供的交互式劫持工具只能劫持 HTTP 代理的 TLS 流量;但是这样是不够的,有时候我们并不能确保 HTTP 代理一定生效,或者说特定的后端只支持 TCP 传输层代理(Socks5)代理,那么交互式劫持将失效,也没有办法获取到基于 Socks5 代理的 HTTP 通信。

因此我们做了一些简单的验证,去实现了基于 Socks5 协议的代理劫持,同时我们以一种更加简单高效的方式让 Socks5 的代理适配了传统的普通 MITM 交互式劫持中。

TLS 劫持的本质:证书信任链的崩坏

1698828956_6542129ccc99e7ad23f59.png!small?1698828957300

  • 内容引用自笔者在他处的 PPT 中的节选内容

因为信任链是树形结构的,可以“推导”信任关系,那么被信任的 CA 签发的证书,也会被信任。

那么理所当然的,我们得出结论:从原理上来讲,TLS 的劫持和 HTTP 代理甚至任何代理都没有半毛钱关系;从技术上来讲,HTTP 代理在其中的作用仅仅是提供了一个连接介质。

MITM-TLS 劫持时序

1698829105_65421331c9b5885bfba5c.png!small?1698829106556

回顾基于HTTP 代理的MITM 劫持

如果要实现一个正常的 HTTP 代理,我们需要处理两种情况:

  1. 通过 Proxy-Connection 等直接 HTTP 头控制的非 TLS 劫持
  2. 通过 CONNECT 控制的通用 HTTP 代理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值