本文转自: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/

一、前言

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

二、安装Fiddler证书

我们通过Fiddler连接手机进行抓包查看,应用访问数据信息都是用的HTTPS协议,也就是加密的数据,我们可能无法查看,比较麻烦,本文就来讲解如何查看这些加密数据了。

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

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

进入Fiddler选项中:

然后直接选择导出证书到桌面即可。

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

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

在设置中,选择安全,然后选择从SD卡安装证书,就可以正常安装了。安装成功之后,可以查看这个证书信息:

三、抓取样本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协议数据是需要设置证书信息的,不然是解析失败的。所以这里采用第一种方式进行操作。

四、Wireshark分析TLS数据包

因为Wireshark分析TLS协议的数据是需要设置证书信息的,不然看到的也是加密数据信息:

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

让我们信任这个证书:

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

因为我们在上面用Fiddler可以抓到HTTPS请求链接的,这时候我们把这个链接放到浏览器中访问一次:

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

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

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

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

这个就需要启动系统的npf服务了,我们可以这么做:

01、在开始–>运行
02、输入:%windir%/system32
03、将会开启一个文件夹窗口,在里面找到CMD.EXE(cmd.exe)
04、点击右键,选择”以管理员身份运行”
05、输入命令:net start npf
06、系统提示NetGroup Packet Filter Driver 服务已经启动成功。
07、至此,Wireshark再点击Interfaces list就可以正常选择需要捕捉的接口了。
08、如果需要关闭此服务,是要在命令行输入命令:net stop npf 即可。

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

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

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

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

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

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

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

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

五、解密返回数据信息

这里就可以清晰的看到这次请求信息和返回信息了。然后我们把这部分的数据,在用AES进行解密:

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

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

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

六、TLS知识点总结

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

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

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

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

七、问题解惑

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

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

在逆向研究中,有时候抓包是一个非常重要的一个突破口点。所以抓包分析包信息也是至关重要的技能。

严重声明

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

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

  1. android黑科技系列——Wireshark和Fiddler分析Android中的TLS协议包数据(附带案例样本)

    一.前言 在之前一篇文章已经介绍了一款网络访问软件的破解教程,当时采用的突破口是应用程序本身的一个漏洞,就是没有关闭日志信息,我们通过抓取日志获取到关键信息来找到突破口进行破解的.那篇文章也说到了,如 ...

  2. 分析Android中View的工作流程

    在分析View的工作流程时,需要先分析一个很重要的类,MeasureSpec.这个类在View的测量(Measure)过程中会用到. MeasureSpec MeasureSpec是View的静态内部 ...

  3. Android 中多点触摸协议

    http://blog.csdn.net/zuosifengli/article/details/7398661 Android 中多点触摸协议: 参考: http://www.kernel.org/ ...

  4. 深入理解Android(5)——从MediaScanner分析Android中的JNI

    前面几篇介绍了Android中的JNI和基本用法,这一篇我们通过分析Android源代码中的JNI实例,来对JNI部分做一个总结. 一.通向两个不同世界的桥梁 在前面我们说过,JNI就像一个桥梁,将J ...

  5. 【极客思考】计算机网络:Wireshark抓包分析TCP中的三次握手与四次挥手

    [摘要]本文重点分析计算机网络中TCP协议中的握手和挥手的过程. [前提说明] 前段时间突然看到了一篇关于TCP/IP模型的文章,心想这段时间在家里也用wireshark抓了点包,那么想着想着就觉得需 ...

  6. Android中使用http协议访问网络

    HTTP协议的工作原理:客户端向服务器端发送http请求,服务器端收到请求后返回一下数据给客户端,客户端接受消息并进行解析. 在Android中发送http请求的方式有两种,第一种是通过HttpURL ...

  7. netty系列之: 在netty中使用 tls 协议请求 DNS 服务器

    目录 简介 支持DoT的DNS服务器 搭建支持DoT的netty客户端 TLS的客户端请求 总结 简介 在前面的文章中我们讲过了如何在netty中构造客户端分别使用tcp和udp协议向DNS服务器请求 ...

  8. Android中Input型输入设备驱动原理分析(一)

    转自:http://blog.csdn.net/eilianlau/article/details/6969361 话说Android中Event输入设备驱动原理分析还不如说Linux输入子系统呢,反 ...

  9. Android中View绘制流程以及invalidate()等相关方法分析

    [原文]http://blog.csdn.net/qinjuning 整个View树的绘图流程是在ViewRoot.java类的performTraversals()函数展开的,该函数做的执行过程可简 ...

随机推荐

  1. LBS基站定位

    LBS基站定位(Location Based Service,简称LBS)一般应用于手机用户,它是基于位置的服务,通过电信.移动运营商的无线电通讯网络(如GSM网.CDMA网)或外部定位方式(如GPS ...

  2. Raspberry Camera详解+picamera库+Opencv控制

    使用树莓派的摄像头,将树莓派自身提供的picamera的API数据转换为Python Oencv可用图像数据: # import the necessary packages from picamer ...

  3. Spring 实现两种设计模式:工厂模式和单态模式(单例模式)

    本文摘自:李刚 著 <轻量级 Java EE企业应用实战 Struts2+Spring+hibernate整合开发> 在Spring 中大量使用的以下两种设计模式:工厂模式和单态模式. 工 ...

  4. SVM—PK—BP:SVR(better)和BP两种方法比较且实现建筑物钢筋混凝土抗压强度预测—Jason niu

    load concrete_data.mat n = randperm(size(attributes,2)); p_train = attributes(:,n(1:80))'; t_train = ...

  5. datetime.timedelta类

    datetime.timedelta对象代表两个时间之间的时间差,两个date或datetime对象相减就可以返回一个timedelta对象. Python中datetime模块中的timedelta ...

  6. Mybatis之注解实现动态sql

    通过注解实现动态sql一共需要三部:1.创建表,2.创建entity类,3.创建mapper类, 4.创建动态sql的Provider类.1.和2.可以参见该系列其他文章,这里主要对3和4进行演示,并 ...

  7. 想造轮子的时候,ctrl+f一下

    Chardet,字符编码探测器,可以自动检测文本.网页.xml的编码. colorama,主要用来给文本添加各种颜色,并且非常简单易用. Prettytable,主要用于在终端或浏览器端构建格式化的输 ...

  8. JavaScript中本地对象、内置对象和宿主对象(转)

    首先解释下宿主环境:一般宿主环境由外壳程序创建与维护,只要能提供js引擎执行的环境都可称之为外壳程序.如:web浏览器,一些桌面应用系统等.即由web浏览器或是这些桌面应用系统早就的环境即宿主环境. ...

  9. SS+FinalSpeed终极教程[转]

    亲测,晚高峰看YOUTUBE的720P完全不卡. 推荐使用virwire buget VPS,性价比较高,128M内存,每月500G超大流量:http://www.cnblogs.com/tuzhuk ...

  10. CodeForce VKcup A

    题目描述:例如A-B,B-C是好朋友,那么A-C一定是好朋友,给一些点,和一些描述,观察是否成立 题目链接:点我 一个互相认识的团体,一定是每个点都和其他点相连的,那么边数为n(n-1)/2,把得到的 ...