记录一次Fiddler*抓*包不知名看番APP的经历

  • 零、作者的话
  • 一、抓包的目的
  • 二、抓包的方式和原理
  • 三、Fiddler的安装和使用
  • 四、开始抓包
  • 五、总结


零、作者的话

在家中办公到自闭的人是不是显得有些无聊?来看看这篇更加无聊的博客吧!

一、抓包的目的

本质上的目的:
从从事互联网IT行业的角度来看,弄清楚数据包的来龙去脉是一件相当有必要的事情,因为抓包的主要过程是拦截查看网络数据包内容,通过对抓获的数据包进行分析,以此可以得到有用的信息。对于软件的Debug很大的帮助。特别是网络安全方面有重大意义。

常见抓包用途

查找感染病毒的计算机

获取网页的源代码

了解攻击者所用方法

追查攻击者的ip地址

还有其具体的工作上的意义:

对网络运维人员:

  • 1.定位网络里的异常设备;
  • 2.排查网络性能瓶颈;
  • 3.了解真实的网络互联状态。

对安全渗透工程师:

  • 1.有助于逆向分析联网型App;
  • 2.从真实流量中发现可利用的漏洞;
  • 3.定位可能的网络后门和木马。

二、抓包的方式和原理

  • 抓包方式

工欲善其事,必先利其器

  • 纵观现在常用的抓包方法,无异于是使用浏览器自带的F12调试栏可以窥见部分公开的明文编码的请求或者使用更加强大的抓包软件来获取数据包。
    当然,如果只是抓取一般的HTTP类型数据是非常简单的,而在本文中将要介绍的抓包是抓取HTTPS形式的加密数据包。自然而然,我们也需要一些强大的工具来帮我们更加便携的实现操作。因此便选择了由Telerik公司开发的Fiddler软件来完成今天的实践。
    至于为什么世面上有那么多比Fiddler更加强大的抓包软件我为何选择了着一款的原因自然是因为这款软件的使用上相对简单,新手更易掌握。
  • 抓包原理1

知其然更要知其所以然

  • 目前在微软PC的主流的抓包软件有两类,他们的基本抓包方式如下

Wireshark

Fiddler

监听网卡

监听端口

Wireshark抓包原理是通过libpcap/WinPcap从底层抓取网络数据包,能通过不同类型的网络接口(包括以太网、令牌环网、ATM网等)获取数据包

Fiddler抓包的原理主要是开启一个HTTP网络代理服务,监听本机某端口的HTTP请求再将请求参数转发目标服务器。

wireshake 抓包视频流怎么 播放 rtp_网络


在基本原理了解后,我们还可以了解Fiddler是如何针对HTTPS数据包进行抓取的。

抓取HTTPS过程2

步骤

过程

第一步

Fiddler截获客户端发送给服务器的HTTPS请求,Fiddler伪装成客户端向服务器发送请求进行握手

第二步

服务器发回相应,Fiddler获取到服务器的CA证书, 用根证书(这里的根证书是CA认证中心给自己颁发的证书)公钥进行解密, 验证服务器数据签名, 获取到服务器CA证书公钥。然后Fiddler伪造自己的CA证书(这里的CA证书,也是根证书,只不过是Fiddler伪造的根证书), 冒充服务器证书传递给客户端浏览器。

第三步

与普通过程中客户端的操作相同,客户端根据返回的数据进行证书校验、生成密码Pre_master、用Fiddler伪造的证书公钥加密,并生成HTTPS通信用的对称密钥enc_key

第四步

客户端将重要信息传递给服务器, 又被Fiddler截获。Fiddler将截获的密文用自己伪造证书的私钥解开, 获得并计算得到HTTPS通信用的对称密钥enc_key。Fiddler将对称密钥用服务器证书公钥加密传递给服务器

第五步

与普通过程中服务器端的操作相同,服务器用私钥解开后建立信任,然后再发送加密的握手消息给客户端

第六步

Fiddler截获服务器发送的密文, 用对称密钥解开, 再用自己伪造证书的私钥加密传给客户端

第七步

客户端拿到加密信息后,用公钥解开,验证HASH。握手过程正式完成,客户端与服务器端就这样建立了”信任“

三、Fiddler的安装和使用

知己知彼方能百战百胜

  • 软件的安装
    在Fiddler官网可以获取最新版的软件,这里顺带附上下载链接 在安装好了软件后,由于我们需要对安卓设备上安装的应用进行抓包,因此我们需要对软件本身进行一些设置才能去调试外部设备。
  • 软件的使用
  • 使用前配置

1.配置Fiddler允许监听https
首先我们本次的目的是抓取HTTPS包,因此我们需要开放Fiddler的相关权 限才行
打开Fiddler菜单项Tools->Fiddler Options选中decrypt https traffic和ignore server certificate errors两项
如下图:

wireshake 抓包视频流怎么 播放 rtp_https_02

2.配置Fiddler允许远程连接
如下图中的菜单中点击connections,选中allow remote computers to connect,默认监听端口为8888,若被占用也可以设置,配置好后需要重启Fiddler

wireshake 抓包视频流怎么 播放 rtp_抓包_03

3.建立手机端与PC的连接
因为我们需要的是手机端的数据包,所以手机能否建立连接被远程监听才是重中之重,我们应该这样配置它:
PC端命令行ipconfig查看Fiddler所在机器ip,由于本机选择的是开启电脑热点,因此需要的ip为192.168.191.1,如下图

wireshake 抓包视频流怎么 播放 rtp_数据_04


在我们查询到具体的IP地址后,我们需打开手机连接到电脑的热点,并修改该热点网络详情(长按wifi选择->修改网络)->显示高级选项,选择手动代理设置,主机名填写刚刚的IP地址,端口则填写Fiddler中配置的端口,其默认8888,如下图:


wireshake 抓包视频流怎么 播放 rtp_抓包_05

在设置完手机端的IP地址后,我们还有最后的一件事需要做好,由于我们需要抓取HTTPS包,在之前的理论学习中我们已经知道了Fiddler是通过自己的CA证书来达成目的的,由于这张证书并不会在任何手机中内置,我们需要安装此证书才能进行抓包。其过程如下:
首先要保证Fiddler已经开启,然后在手机默认浏览器中输入如下的网址进行访问:http:// + 电脑IP地址和端口号
之后便会跳转到如下界面

wireshake 抓包视频流怎么 播放 rtp_数据_06


我们需要点击最下方的链接来下载这张证书然后进行安装


wireshake 抓包视频流怎么 播放 rtp_数据_07


做完这一步以后,我们才达到了能够做HTTPS包抓取的程度。

  • 使用方法介绍
    在介绍完配置方法后,我们成功的建立了与手机端的连接,便可以通过Fiddler来抓取HTTPS数据包了。关于Fiddler的使用方法,我们可以做一些相关的了解,这样在使用它进行测试时也能更加高效和顺手。

在本文会对涉及到的知识进行查询。

  • 对某程序的抓包示例图如下:

首先我们会在软件的左边看到一大堆的数据请求Url,而且它们的前头还跟着一些小图标。所以我们想要知道这些数据的来头就必须先弄清楚这些图标的含义。

wireshake 抓包视频流怎么 播放 rtp_https_08

其次我们本次是对于软件抓包,而在手机中,会包含大量的系统信息干扰我们进行判断,因此我们需要在Tools的Options选项中

wireshake 抓包视频流怎么 播放 rtp_https_09

选择HTTPS项中的…from remote clients only

wireshake 抓包视频流怎么 播放 rtp_https_10


从而避免这些干扰。

四、开始抓包

完事具备,只欠东风

我们的准备工作终于是告一段落,接下来该对我们本次的主角–XX应用进行抓包了。

首先我们应该尽量关闭其他APP尽量只保留唯一的需要测试的对象。

紧接着我们需要打开APP,这时相应的请求就已经开始源源不断的发送了。

wireshake 抓包视频流怎么 播放 rtp_网络_11


我们可以看到在APP首页有许多的番剧图片和文字信息,他们都是刚刚发送请求后从远程服务器获取到的信息。

至于我们所想知道的,是其过程中具体的请求方式和相关信息。

我们来看看刚刚打开应用这一段时间究竟有哪些数据的流动。

wireshake 抓包视频流怎么 播放 rtp_网络_12


我们可以看到,虽然反馈的数据条目并不是很多,但是想要弄清楚究竟哪一条才是获取数据的关键条目也不是一件轻松的事情。经过仔细的观察我们可以发现,一个奇怪的Host请求头连续出现了三次,这么可疑的数量和其中写着的API(Application Programming Interface,应用程序接口)无不充满着诱惑力。

wireshake 抓包视频流怎么 播放 rtp_https_13


那我们就先从这个可疑的URL开始调查。

先看看第一条目
写着的URL是/banList
我们单击这一条目后,在右侧的Inspectors中的Raw条目中
我们看到了有关这一请求的全部详细信息

wireshake 抓包视频流怎么 播放 rtp_HTTPS_14


我们可以很清楚的了解到这一请求的具体参数


wireshake 抓包视频流怎么 播放 rtp_https_15


由于它是一条GET请求,因此它并没有Post所拥有的参数体


而根据其名字banList我们可以初步判断这是用于禁止某些内容出现而设立的一个黑名单,而我们在查看了其返回的参数后也证实了这一点


(由于都是一些不好的内容因此就上码了)


wireshake 抓包视频流怎么 播放 rtp_网络_16


由此我们很无奈的排除了第一个嫌疑犯

接下来是第二个
/search/rule
当我们看到search的参数时,我们可以说这的确很有可能是重要的参数内容所在的条目。我们也照之前的操作来查看一番。

wireshake 抓包视频流怎么 播放 rtp_网络_17


不过非常遗憾的是,这一条内容所返回的参数是一个【】空空如也的值


因此我们也只好排除了它的可能

接下来的目标貌似看起来并没有什么找到的希望
/mobile/config
通过字面上的意义我们可以了解到这一条是用来获取某些信息并传递给手机的,我们通过返回的数据也证实了这一点。基本排除了它是直接获取后台数据的API的可能。
走到这一步,似乎我们已经走到了困境之中。究竟是哪里出了问题呢?

天无绝人之路

我们首先要坚信,应用本身成功的获取到了后台的数据,并且显示了出来,而它的请求怎么会突然消失不见呢?
我们好好的对三个返回数据包的大小先进行了一下对比
这是一号数据包的

wireshake 抓包视频流怎么 播放 rtp_https_18


这是二号数据包的


wireshake 抓包视频流怎么 播放 rtp_https_19


这是三号数据包的

wireshake 抓包视频流怎么 播放 rtp_网络_20


从大小上来看,792bytes的三号对象重新成为了重点怀疑对象


我们再次仔细的查看里面所包裹的内容


wireshake 抓包视频流怎么 播放 rtp_网络_21


其中红线所框选的内容是经过查询是一系列的番剧网站地址


网站地址?


没有具体API数据源?


数据从何而来?


迷之网页?


这一连串的❓足以说明一个问题


这个APP的数据获取方式并非是正常应用的API+参数返回的模式


那么还有什么神奇的方式能够做到获取数据呢?


没错,我们能迅速想到的途径就是

原力

=>

爬虫

爬虫作为网站的数据杀手,可谓是令诸多网站头疼不已
那么,既然我们认定了这个APP的工作方式便是一个整理了多方网站资源的爬虫,我们便可以从全新的角度看待之前的那些参数

wireshake 抓包视频流怎么 播放 rtp_网络_12


是的,你没有看错,当你的眼睛挪到那条鲜艳的蓝色条目上时,就被其代表的参数类型TEXT/HTML所吸引


HTML!


HTML!!


HTML!!!


明明没有进行网页的浏览却混入了这样一个奇怪的参数


再结合之前的爬虫推论


你是否已经胸有成竹?

华生,你找到了盲点!
这便是APP首页上图片和文字的直接来源

wireshake 抓包视频流怎么 播放 rtp_https_23

五、总结

路漫漫其修远兮,吾将上下而求索