【转】Wireshark和Fiddler分析Android中的TLS协议包数据(附带案例样本)

本文转自:http://www.wjdiankong.cn/wireshark%E5%92%8Cfiddler%E5%88%86%E6%9E%90android%E4%B8%AD%E7%9A%84tls%E5%8D%8F%E8%AE%AE%E5%8C%85%E6%95%B0%E6%8D%AE%E9%99%84%E5%B8%A6%E6%A1%88%E4%BE%8B%E6%A0%B7%E6%9C%AC/android

1、前言

在以前一篇文章已经介绍了一款网络访问软件的破解教程,当时采用的突破口是应用程序自己的一个漏洞,就是没有关闭日志信息,咱们经过抓取日志获取到关键信息来找到突破口进行破解的。那篇文章也说到了,若是这个app应用没有日志信息,咱们该怎么办呢?那么这时候就须要采用抓包来寻找突破口了。json

2、安装Fiddler证书

咱们经过Fiddler链接手机进行抓包查看,应用访问数据信息都是用的HTTPS协议,也就是加密的数据,咱们可能没法查看,比较麻烦,本文就来说解如何查看这些加密数据了。浏览器

首先咱们知道Fiddler抓包工具是能够抓HTTPS数据的,就是把Fiddler证书安装到设备中便可。安装过程也很简单:安全

第一步:导出Fidder的证书文件网络

进入Fiddler选项中:app

而后直接选择导出证书到桌面便可。tcp

第二步:把证书安装到设备中工具

先把上一步导出来的证书文件,放到设备的SD目录下,而后在设备中直接打开这个证书文件,会提示安装信息,固然这里在老版本系统中,可能还须要去设置页面进行操做:学习

在设置中,选择安全,而后选择从SD卡安装证书,就能够正常安装了。安装成功以后,能够查看这个证书信息:编码

3、抓取样本app的数据包

这样,咱们的设备就有了Fiddler证书,这时候在用Fiddler抓包会看到正常的HTTPS协议数据了:

咱们能够查看返回的数据信息:

惋惜的是,这里的数据显示是不全的。因此这时候,咱们得想办法获取返回的所有数据,能够借助Wireshark工具进行操做了,而Wireshark工具相对于Fiddler工具来讲会分析的更加详细,可是Fiddler更加方便快捷。可是Wireshark工具只能在PC端抓包运行,因此若是想用这个工具抓取手机端数据的话,能够用两种方式:

第一种:Wireshark+Fiddler工具

Fiddler做为手机端的代理在PC上访问流量。而后Wireshark能够抓取PC上的请求,这样来作到用Wireshark抓取手机端的请求。

第二种:Wireshark+tcpdump工具

固然咱们还能够利用tcpdump工具来直接抓取手机端的请求数据,通常保存为pcap文件格式,而后在PC端用Wireshark来分析pcap文件格式便可。关于tcpdump如何抓包生成pcap文件,能够自行搜索便可。这里不作解释了。

不少同窗会考虑第二种,可是第二种会失败的,由于这里须要抓取HTTPS协议的数据,因此有证书相关的信息,若是直接用tcpdump工具抓包生成文件,而后用Wireshark工具分析是会失败的。由于Wireshark分析TLS协议数据是须要设置证书信息的,否则是解析失败的。因此这里采用第一种方式进行操做。

4、Wireshark分析TLS数据包

由于Wireshark分析TLS协议的数据是须要设置证书信息的,否则看到的也是加密数据信息:

那么这里的问题其实就转化成,如何利用Wireshark来解密TLS数据信息了,这个就比较简单了,咱们能够借助浏览器自动生成的证书信息,来做为解密的工具。这里须要借助一个知识点:就是浏览器在访问HTTPS协议信息的时候都会有这么个提示:

让咱们信任这个证书:

而后,咱们确认安全,这时候,若是设置了一个系统环境变量。浏览器会把证书信息保存到指定文件中的,这个系统环境变量就是:SSLKEYLOGFILE,而后自定义一个SSLKEY的保存文件名称便可。

由于咱们在上面用Fiddler能够抓到HTTPS请求连接的,这时候咱们把这个连接放到浏览器中访问一次:

而后就会有相对应的SSLKEY数据保存下来了,能够去看看这个信息:

这样咱们就弄到了这个url对应的证书信息了,这里能够看到实际上是借助浏览器的功能获取到的,下面就来Wireshark中设置这个证书信息:

在Wireshark的Edit->Preferences->Protocols->SSL,设置刚刚保存的SSLKEY信息文件位置,保存便可。

下面就来开始抓包分析吧,在启动Wireshark抓包的时候,可能有的同窗没法看到抓包的网络接口信息:

这个就须要启动系统的npf服务了,咱们能够这么作:

0一、在开始–>运行
0二、输入:%windir%/system32
0三、将会开启一个文件夹窗口,在里面找到CMD.EXE(cmd.exe)
0四、点击右键,选择”以管理员身份运行”
0五、输入命令:net start npf
0六、系统提示NetGroup Packet Filter Driver 服务已经启动成功。
0七、至此,Wireshark再点击Interfaces list就能够正常选择须要捕捉的接口了。
0八、若是须要关闭此服务,是要在命令行输入命令:net stop npf 便可。

操做成功以后,再去Wireshark选择接口列表信息就有了网络接口信息了:

这里运行的时候,必定要记得把本地链接和无线网络链接都选择上,以避免请求被遗漏:

点击开始以后,就会发现不少请求在刷屏,为了想看到咱们关心的数据,能够利用一些过滤规则来进行过滤,而这里其实有不少过滤规则命令的,感兴趣的同窗能够自行搜索操做实验便可,这里咱们只想看到SSL协议的请求信息:

而后咱们在利用浏览器去刷新刚刚那个HTTPS的请求,会发现多了不少TLS协议请求,若是这里没有设置上面的SSLKEY信息的话,看到的都是加密信息:

这里简单说一下TLS协议的原理,直接盗了网上的一张图:

设置了SSLKEY信息以后,就能够看到Application Data会被解密:

并且,这时候,底部会多出一个Decrypted SSL选项卡。这里解密以后会发如今SSL层后面多了一个超文本传输层,也就是HTTP等信息了。而后咱们在选中这条信息,右键查看他的HTTP信息流:

记得是有OK字样的那条HTTP协议数据信息条目,这里是由于已经解密了,因此看到的是HTTP协议:

5、解密返回数据信息

这里就能够清晰的看到此次请求信息和返回信息了。而后咱们把这部分的数据,在用AES进行解密:

看到打印的结果就是一个返回json信息:

关于这里的解密方法,以前一篇文章在用Jadx分析样本已经看到了:

咱们直接把这个方法拷贝出来,写一个简单的Java成功就可解密了。不了解的同窗去回顾上一篇介绍的内容吧。

6、TLS知识点总结

好了,到这里咱们就介绍完了,如何利用Wireshark和Fiddler这两个抓包神器,解密HTTPS请求信息。关于TLS协议可能有的同窗还不太了解,并且他和SSL的区别是啥,其实TLS是SSL的升级版:

如今不少协议都会用到TLS了,并且TLS1.3版本已经出来了。好比WX就采用了这个协议进行数据加密的。咱们有了这个技能以后,后面就能够很轻松的分析TLS协议数据了,固然咱们必定要熟练掌握Wireshark这个工具的用法,咱们在学习过网络工程课的时候,都知道网络协议栈,好比物理层,网络层,传输层,应用层:

咱们在上面看到Wireshark的底部信息栏中也是有这么几层信息的:

在SSL层,须要解密才能看到后面的超文本传输层协议的详细信息了,也就是上面的解密方法进行操做的结果。

7、问题解惑

其实看到这里有的同窗会有好奇的地方:

  • 第一个:开始利用Fiddler能够直接进行解密数据了,为什么还要用Wireshark去抓包呢?由于咱们能够看到Fiddler抓取的信息是不全的。固然有时候多是全的,那么就不须要在用Wireshark进行抓包分析了。
  • 第二个:在把Fiddler中抓取到的连接放到浏览器中访问,生成对应的SSLKEY信息文件。在浏览器中不是直接能够看到返回数据了吗?为何还要用Wireshark进行抓包呢?这个的确是能够看到所有的返回信息在浏览器中访问的话,可是利用Wireshark抓包是为了更加信息的看到TLS协议的访问流程。这个也是为了之后熟练操做作准备。

在逆向研究中,有时候抓包是一个很是重要的一个突破口点。因此抓包分析包信息也是相当重要的技能。

 

严重声明

本文介绍的内容只是为了逆向技术探讨,绝对不容许不法分子进行恶意用途。而涉及到安全隐患,本文提到的样本,加编码美丽技术圈,留言个人真实姓名,发放仅供参考分析而已。

相关文章
相关标签/搜索