Shadowsocks 重定向攻击
原文中文,约24000字,阅读约需58分钟。
📝
内容提要
客户端和服务端进行了两次握手,客户端发起连接请求,服务端回复无需验证,客户端发送目标地址和端口,服务端回复绑定地址和端口,客户端将消息加密后放入待发送消息队列,和服务端建立连接,服务端收到消息后解密,向目标网站发送请求,客户端收到服务端的消息后解密,最后将消息发送给用户。
🎯
关键要点
-
Shadowsocks的漏洞源于默认使用不合适的密码组件,导致中间人可以重定向解密后的流量。
-
用户通过代理软件访问目标网站,流量经过客户端和服务端。
-
客户端在封装流量包时,加入目标网站信息,流量在客户端到服务端之间是加密的。
-
客户端与服务端之间的握手过程包括两次请求和应答。
-
中间人无法解密流量,但可以控制明文请求。
-
抓包分析显示客户端与服务端之间的流量结构。
-
服务端接收客户端消息并解密,向目标网站发送请求,最后将回复加密后发送给客户端。
-
漏洞的关键在于流密码的特性,允许已知明文攻击。
-
通过构造特定的密文,中间人可以重定向解密后的信息到任意地址。
-
复现过程中遇到的问题包括脚本与服务端连接的管理。
🏷️