如何抓包(付费直播抓包教程方法)

浏览前请点击右上角“”即可,每天免费获取安卓知识分析和面试答案 。安卓架构分析,职场只有干货,完整免费分享!
/作者简介/
本文转自MegatronKing的博客,分享安卓中https包抓取相关的解决方案方案,希望能赞助大家!
/前言/
HTTP协议已经发展了20多年,总体发展趋势在有效性和安全性两个方向都很重要 。在有效性方面,从HTTP1.0到HTTP1.1,到SPDY/HTTP2,再到QUIC/HTTP3,基于UDP的传输在有效性方面变得越来越高效 。在安全性方面,从HTTP的明文到HTTP2强制应用TLSv1.2,再到QUIC/HTTP3强制应用TLSv1.3,数据传输的安全性越来越受到重视 。总之,HTTP协议的开发对用户来说是友好的,但对开发者来说就不那么友好了 。
包抓取是每个程序员必备的技能之一,尤其是在界面调试和程序逆向时 。然而,随着越来越多的通信协议使用加密HTTPS,并且系统级别开始强制应用HTTPS,似乎越来越难以捕获数据包 。
在这个博客中,详细说明安卓平台下HTTPS抢包的常见问题及解决方案很重要 。如果你想把工作做好,你必须先磨快你的工具 。在博客中,HttpCanary被用作抓包工具进行教学 。有关HttpCanary的更多信息,请参见:
GitHub地址:
https://github.com/MegatronKing/HttpCanary
/抓包原则/
几乎所有网络数据的数据包都是采用中间人(MITM)的方法捕获的,包括常用的著名数据包捕获工具Fiddler和Charles,HttpCanary也采用中间人的方法捕获数据包 。

如何抓包(付费直播抓包教程方法)

文章插图
从上面的示意图可以看出,抓包的关键问题有两个:
MITM Server如何假装成真正的ServerMITM Client如何假装成真正的Client第一个问题,要成为真正的服务器,MITM服务器必须能够给指定的域名颁发公钥证书,并且公钥证书能够通过系统的安全检查 。比如客户端从https://www.baidu.com/.发出网络请求,为了冒充百度的服务器,MITM服务器必须持有www.baidu.com域名的公钥证书并发送给客户端,同时必须有与公钥匹配的私钥 。
MitServer的处理方法是从第一个SSL/TLS握手包Client Hello中提取域名www.baidu.com,使用内置的CA证书创建www.baidu.com域名的公钥证书和私钥 。在SSL/TLS握手过程中,创建的公钥证书被发送到客户端 。客户端收到公钥证书后,系统会对证书进行检查,确定是否是百度公司持有的证书,但很明显,该证书是由抢包工具编造的 。为了让系统在验证公钥证书时认为证书是真实有效的,我们需要使用内置的CA证书手动将包安装到系统中,并充当真正的证书颁发者(CA),也就是将其洗掉 。这就是为什么,对于HTTPS包捕获,必须首先安装证书颁发机构证书 。
第二,MITM客户冒充客户 。由于服务器不验证客户端(在大多数情况下),因此该问题通常不存在 。比如服务器一般不在乎客户端是Chrome阅读器还是IE阅读器,安卓App还是iOS App 。当然,服务器也可以验证客户端,这将在后面进行分析 。
/安装CA证书/
抓起包,用内置的CA证书洗一洗,一定要装在系统里 。安卓系统将CA证书分为两类:用户CA证书和系统CA证书 。顾明希认为用户CA证书是用户自己安装的,系统CA证书是系统内置的,显然更加真实有效 。
CA证书存储在/etc/security/cacerts/directory中,其名称为CA证书subjectDN的M5值前四位的OR,后缀为0.0,如00673b5b.0考虑到安全原因,系统CA证书应具备Root权限的增删能力 。
对于Root以外的安卓设备,用户只能安装用户CA证书 。
【如何抓包(付费直播抓包教程方法)】无论是体系CA证书还是用户CA证书,都可以在设置-


    推荐阅读