文章总结: 本文针对银行APP抓包失败问题进行排查,通过Fridahook分析发现APP采用国密SM4加密套件及TLS1.1协议,导致Burp无法解析。解决方案是使用支持国密协议的GMProxy或Yakit等代理工具,成功实现了数据抓包与分析。 综合评分: 91 文章分类: 移动安全,渗透测试,逆向分析,安全工具,实战经验
【APP抓包】国密TLS协议传输数据抓包
WNXWZR WNXWZR
隐雾安全
2026年1月23日 09:00 四川
分析
在一次测试某个银行的一个安卓APP的时候,设置代理,绕过常见的抓包限制后,发现使用BurpSuite能抓到APP关键业务的请求,但是服务端接受到请求后无法正确响应,具体表现就是在Burp中的Response窗口没有响应数据返回。
重放提示:Receives fatal alert: protocol_version
对于这种情况,发送请求数据包,抓包工具无法收到响应,排除网络问题的前提下,那肯定就是服务器做了某种校验。比如最常见的就是https双向认证,服务端会校验客户端证书,所以最开始的想法就是猜测是双向认证这种情况。
通过分析发现APP在请求的时候也确实加载了客户端证书,因此尝试提取客户端证书和密钥后,导入抓包工具BurpSuite,还是失败………..
导入证书后,还是没能成功发起请求获取响应数据包,但是在不进行代码抓包的情况下网络又是正常通信的。
我们知道当使用代理抓包https时,本身客户端—服务器的一段请求,会被分为两段请求,代理抓包过程中的第二段请求 的相当于就是由中间人作为一个新的客户端 对 服务端进行通信。
所以目前的情况就是 客户端 — 服务端 通信正常,中间人 — 服务端 通信异常(服务端不认中间人发过来的请求)。
具体为什么不认呢?Burp没有给出太详细的说明,所以就想着复制URL到浏览器中访问,这个时候访问url的不是APP这个客户端,不是Burp这个客户端,而是浏览器。
浏览器访问目标url提示:
- 不支持的协议
- 客户端和服务器不支持常用的 SSL 协议版本或密码套件
最后通过检索相关资料,大概率可能是由于不是常用的密码套件导致。那APP使用的什么密码套件呢?
接下来就是分析出来APP使用的okhttp3网络请求框架,然后该网络请求框架也支持自定义协议以及加密套件。
因此,编写frida hook脚本,读取APP在初始化网络请求等操作的时候是否存在自定义的协议以及加载了什么加密套件。
Java.perform(function() { try { var OkHttpClient = Java.use("okhttp3.OkHttpClient"); var Builder = Java.use("okhttp3.OkHttpClient$Builder"); console.log("[+] OkHttpClient loaded: " + !!OkHttpClient); console.log("[+] Builder loaded: " + !!Builder); Builder.build.implementation = function() { var client = this.build.call(this); // 获取和打印协议和加密套件信息 var connectionSpecs = client.connectionSpecs(); if (connectionSpecs) { for (var i = 0; i < connectionSpecs.size(); i++) { var spec = connectionSpecs.get(i); console.log("\n[+] ConnectionSpec<加密套件和协议版本信息>: \n" + spec); } } // 如果应用使用了客户端证书,你可以从这里获取它们 var certificatePinner = client.certificatePinner(); if (certificatePinner) { console.log("Certificate Pinner: " + certificatePinner); } return client; }; } catch (e) { console.error("[-] Error: " + e.message); }});
可以看到加密套件使用的是:[TLS_ECC_WITH_SM4_128_CBC_SM3]
tls协议是TLS_1_1
国密SSL就是以TLS1.1标准为蓝本制定的:
https://blog.csdn.net/mogoweb/article/details/105190337
到这里我们大概就知道,Burp抓包服务器没响应大概就是因为https加密套件使用的是国密的加密算法,对于常见的测试工具或浏览器啥的默认都是不支持国密的。
那怎么进行抓包测试呢?目前发现有2个工具可以帮助抓取国密TLS协议传输的https数据包
1.GMProxy
使用教程:
https://www.gmproxy.cn/
2.Yakit
https://www.yaklang.io/
成功抓包
后记
国密算法即国家密码局认定的国产密码算法(商用密码)。近年来,国家站在长远战略的高度大力推动国产密码算法在金融、电子政务等关键领域的应用。明确要求在金融银行、电子政务、教育、交通运输、民生保障等关键领域全面推进自主可控密码技术的应用。
越来越多的政府、企事业单位的WEB系统都已开始部署使用国密SSL。国产密码算法以及相对应的产品应用将成为未来各级政府机关网站和各类企业网站的安全标配。但目前主流的WEB安全测试软件如Burp Suite、 SqlMap等都不支持直接对国密SSL 网站的安全检查。这无疑给一些国密SSL系统的安全检查带来不便。
以后可能会遇到越来越多使用国密TLS协议进行加密传输的应用。
所以大家有遇到类似使用BurpSuite抓不到包的情况下,可以考虑是不是传输协议使用了国密TLS。
一起交流更多抓包心得
往期内容
通用0day挖掘思路
某大厂勒索病毒处置流程外泄
今年大一,不小心黑进学校的迎新系统怎么办
英雄联盟租号平台getshell
记一次色情APP的渗透过程
课程推荐
隐雾SRC第八期全面升级
零基础就业班-三包模式
只要98,JS逆向带回家!
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:隐雾安全 WNXWZR WNXWZR《【APP抓包】国密TLS协议传输数据抓包》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论