一、什么是抓包
不同主机之间的数据通信都是通过网络来进行传输,对那些在网络上传输的数据(发送
、请求的数据)进行截获、编辑、转存等操作叫做抓包。抓包可以是抓取电脑端请求
的数据,还可以抓取移动端(手机APP)的数据包。
二、为什么要抓包
通过对网络上传输的数据进行抓取,可以对其进行分析,对于软件的Debug很大的帮助
。 当然也可以通过抓取用户发送的涉及用户名和密码的数据包来获取用户的密码。
- 网络通讯的真实内容
- 网络故障分析
- 程序网络接口分析
- 木马通讯数据内容
三、Fiddler功能介绍
Fiddler是一个通过代理的方式来进行抓包工具,运行时会在本地建立一个代理服务,
默认地址:127.0.0.1:8888。Fiddler开启之后打开IE浏览器,IE的PROXY会自动
变成127.0.0.1:8888,通过其来抓取IE浏览器与服务器之间的所有HTTP(s)请求,
但是火狐、chrome需要手动设置代理。
它能记录所有客户端和服务器的http和https请求,允许你监视,设置 CGI 请求的断点,甚至修改输入输出数据。fiddler是一个富客户端桌面工具,不仅能监听浏览器对网页的请求和对浏览器的响应(http和https请求),而且可以监听其他程序(比如java桌面应用)的http请求(当然需要额外的设置,在此不赘述)。
四、Fiddler的工作原理
Fiddler是以代理web服务器的形式工作的,它使用代理地址:127.0.0.1,端口:8888. 当Fiddler启动后将自己变成一个代理服务器,这个代理服务器默认监听127.0.0.1:8888。 退出的时候它会自动注销代理,这样就不会影响别的程序。不过如果Fiddler非正常退出,这时候因为Fiddler没有自动注销,会造成网页无法访问。
- 首先fiddler截获客户端浏览器发送给服务器的https请求, 此时还未建立握手。
- 第一步, fiddler向服务器发送请求进行握手, 获取到服务器的CA证书, 用根证书公钥进行解密, 验证服务器数据签名, 获取到服务器CA证书公钥。
- 第二步, fiddler伪造自己的CA证书, 冒充服务器证书传递给客户端浏览器, 客户端浏览器做跟fiddler一样的事。
- 第三步, 客户端浏览器生成https通信用的对称密钥, 用fiddler伪造的证书公钥加密后传递给服务器, 被fiddler截获。
- 第四步, fiddler将截获的密文用自己伪造证书的私钥解开, 获得https通信用的对称密钥。
- 第五步, fiddler将对称密钥用服务器证书公钥加密传递给服务器, 服务器用私钥解开后建立信任, 握手完成, 用对称密钥加密消息, 开始通信。
- 第六步, fiddler接收到服务器发送的密文, 用对称密钥解开, 获得服务器发送的明文。再次加密, 发送给客户端浏览器。
- 第七步, 客户端向服务器发送消息, 用对称密钥加密, 被fidller截获后, 解密获得明文。
由于fiddler一直拥有通信用对称密钥, 所以在整个https通信过程中信息对其透明。
五、具体操作
(一)、web Session面板
主要是Fiddler抓取到的每条http请求(每一条称为一个session),主要包含了请求
的url,协议,状态码,body等信息,详细的字段含义如下图所示:
- [#]——HTTP Request的顺序,从1开始
- [Result]——HTTP相应的状态
- [Protocol]——请求使用的协议(HTTP/HTTPS/FTP)
- [Host]——请求地址的域名
- [URL]——请求服务器路径和文件名,也包括get参数
- [BODY]——请求的大小,以byte为单位
- [Caching]——请求的缓存过期时间或缓存控制header等值
- [Cotent-Type]——请求相应的类型
- [Process]——发出此请求的Windows进程及进程ID
- [Comments]——用户通过脚本或者右键菜单给此session增加的备注
- [Custom]——用户可以通过脚本设置的自定义值
[#] 列中使用不同的图标表示不同响应类型:
(二)、Filter
Fiddler另一个强大的功能,提供了多维度的过滤规则,满足日常开发调试的需求。
Fiddler的过滤器可以过滤特定请求类型的http请求(如css请求,image请求,js请
求等),可以过滤请求报文大于或小于指定大小(byte)
1)host和zone过滤。可以过滤只显示intranet或internet的HTTP请求也可以选择特定域名的HTTP请求
2)可以捕获指定进程的请求,这对于调试单个应用的请求 很有帮助。
(三)、利用Fiddler模拟用户请求
1)把正常请求的headers拷贝过去,放到Composer的头部
2)在Inspectors里面,点击raw,把请求的数据内部,贴到request body里面,点击excute就可以了,完成一次请求
(四)、利用Fiddler设置断点进行调试修改
Fiddler菜单栏->rules->sutomatic Breakpoints->选择断点方式
- before response,也就是发送请求之后,但是Fiddler处理中转之前,这时可以修改请求的数据。
- after response,也就是服务器响应之后,但在Fiddler将响应中转给客户端之前,这时可以修改响应的结果
1)Inspectors里面会有新的内容,点击break on response,如果中文显示乱码,记得点击解压即可,即下面的黄色区域部分
2)然后点击TextView,然后我们选择一个地方进行修改。
结果显示:
(五)、利用Fiddler重定向到本地的资源
1)选择某个请求,到auto responser控制面板,并勾选Enable rules:add rules
2) 对该请求链接URL,进行设置
3)设置完链接后,到浏览器上面进行查看结果