Android应用Socket连接日志可见但Burp Suite无法捕获拦截问题咨询
关联logcat日志:
D/cocos2d-x debug info(22591): Connect m_pTcpMainSock IP:147.139.198.147 Port:26013 D/cocos2d-x debug info(22591): send authen IP:147.139.198.147 Port:26013 D/NuPlayerDriver( 1415): start(0xb613d040) I/GenericSource( 1415): start D/AudioTrack( 1415): use orig AudioTrack! mIsTimed=0 transferType=0 flags=0 D/cocos2d-x debug info(22591): Connect m_pTcpMainSock IP:147.139.197.250 Port:50004 D/cocos2d-x debug info(22591): send authen IP:147.139.197.250 Port:50004 D/cocos2d-x debug info(22591): Connect m_pTcpAllSock IP:147.139.197.250 Port:50005 D/cocos2d-x debug info(22591): MainSocket pHead->iMsgType=[FFB2]
问题原因
- 协议匹配问题:Burp Suite默认仅代理HTTP/HTTPS协议流量,日志中显示的是Cocos2d-x原生实现的TCP Socket通信,不属于HTTP协议栈,默认不会走Burp的HTTP代理通道,因此无法被Burp捕获。
- 代理绕过问题:原生实现的Socket连接会直接调用系统底层Socket接口建立通信,默认忽略系统配置的HTTP代理设置,流量不会主动转发到Burp的监听端口。
- 端口监听范围问题:Burp默认仅监听80、443等常见HTTP服务端口,日志中出现的26013、50004、50005均为非标准端口,未配置的情况下Burp不会处理这些端口的流量。
- 链路路由问题:如果测试设备使用了VPN、运营商私有APN,或者应用本身内置了IP直连、自定义代理逻辑,会导致目标IP的流量不经过Burp所在的代理链路。
可行解决建议
- 先用Wireshark做全量流量兜底校验:抓取测试设备的全量网卡流量,先确认目标IP的TCP通信是否真实发生,也可以直接查看TCP层的原始报文内容。
- 配置Burp启用透明代理模式:安卓设备root后可以通过iptables规则,将目标IP、目标端口的TCP流量全部转发到Burp的监听端口,同时Burp端开启不可见代理模式,即可捕获非HTTP协议的TCP流量。
- 用Hook工具强制流量走代理:通过Frida、Xposed等Hook框架,Hook应用的Socket连接接口,强制将连接目标指向Burp监听地址,或者强制Socket链路走系统代理通道。
- 直接Hook Socket接口打印报文:如果只需要查看通信内容,可以直接Hook Socket的
send、recv接口,直接打印收发的报文数据,不需要经过代理抓包即可拿到通信内容。 - 如有自定义TLS加密需额外绕过证书校验:如果Socket内部封装了自定义TLS通信逻辑,还需要绕过应用的SSL Pinning校验,否则即使流量转发到Burp,也会因为证书不被信任导致连接断开。
内容的提问来源于stack exchange,提问作者Firdaus Skyz
相关产品推荐
相关产品推荐

