admin管理员组文章数量:1603247
Fiddler抓包–学习记录
抓包简介
什么是抓包(what?)
抓包(packet capture)就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存、伪造等操作,可以用来检查网络安全,也经常被用来进行数据截取,校验传输数据等。
抓包能做什么(why?)
网络传输的数据包往往包含很多信息,不管是开发过程中的接口调试,还是测试人员进行安全测试,校验数据准确性,或是分析数据传输协议,都需要抓取数据进行处理和分析。常用场景如下:
- 分析数据传输协议
- 定位网络协议,数据准确性问题
- 从数据包中获取需要的信息
- 将获取的数据包进行修改、伪造、重发
- 提高工作效率
怎么抓包(how?)
抓包工具的原理都是从指定的设备(如网卡)上获取到数据,但是如果数据没有流过检测的设备,我们是无法获取数据进行抓包的,常用的接入抓包工具的方法及
抓包工具都是从指定的设备(如网卡)上获取到数据,假如数据没有流过监测的设备,那么我们是抓不到任何想要的数据的,接入抓包工具的方法,常用的有五种
- 端口镜像:最优模式,不会留下网络痕迹,也不需要下线设备,但是需要交换机支持端口镜像。
- ARP缓存中毒: 不需要下线设备,比较高效,需要借助其他工具。
- 集线器: 使用方便,需要下线设备,效率低。
- 网络分流器: 需要下线设备,成本高,比集线器效率高,抓取光纤设备数据的唯一选择。
- 工具直接安装到主机:可能会因为主机故障导致数据包被丢弃。
Fiddler抓包常用功能场景
https通信原理
1.Fiddler截获客户端发送给服务器的HTTPS请求,Fiddler伪装成客户端向服务器发送请求进行握手 。
2.服务器发回相应,Fiddler获取到服务器的CA证书, 用root证书公钥进行解密, 验证服务器数据签名, 获取到服务器CA证书公钥。然后Fiddler伪造自己的CA证书, 冒充服务器证书传递给客户端浏览器。
3.与普通过程中客户端的操作相同,客户端根据返回的数据进行证书校验、生成密码Pre_master、用Fiddler伪造的证书公钥加密,并生成HTTPS通信用的对称密钥enc_key。
4.客户端将重要信息传递给服务器,又被Fiddler截获。Fiddler将截获的密文用自己伪造证书的私钥解开, 获得并计算得到HTTPS通信用的对称密钥enc_key。Fiddler将对称密钥用服务器证书公钥加密传递给服务器。
5.与普通过程中服务器端的操作相同,服务器用私钥解开后建立信任,然后再发送加密的握手消息给客户端。
6.Fiddler截获服务器发送的密文,用对称密钥解开,再用自己伪造证书的私钥加密传给客户端。
7.客户端拿到加密信息后,用公钥解开,验证HASH。握手过程正式完成,客户端与服务器端就这样建立了“信任”
抓取手机https数据包
-
Fiddler配置
1.Tools→Options→HTTPS→Caputre HTTPS CONNECTs [相应选项勾上]
2.Tools→Options→Connections→Allow remote computers to connect [勾上]
-
手机配置WiFi代理
打开系统『设置』→『WiFi』→『已连接WiFi属性』
选择『配置代理』→『手动』会出现代理配置项控件
配置要代理的IP(fiddler中右上角这里鼠标悬浮可以显示)和端口号(默认为8888),最后保存
-
下载证书
1.打开浏览器,访问[代理ip] : [端口号],比如10.1.5.48:8888
2.点击下面的FiddlerRoot certificate开始下载 -
安装证书
- Android
有以下三种方式安装:
1.打开系统自带文件管理器,找到下载的FiddlerRoot.cer文件,点击打开,一般要验证密码,然后会提示安装
2.【设置】里面找到【系统安全】再进入【加密与凭据】选择【从存储设备安装】之后,后面的操作基本和第一种方式一样
3.有的手机从浏览器上下载完成,浏览器就支持直接安装证书 - iOS
1.下载完成会跳到【安装描述文件】界面,点击右上角【安装】,一顿操作之后安装成功
2.去【设置】→【通用】→【关于本机】→【证书信任设置】→激活证书
- Android
主要功能
- Statistics 统计信息
- Inspectors 信息分析
- Fiddler orchestra (远程代理)
- FiddlerScript (核心配置脚本)
- Composer 自定义请求
- AutoResponder 自动响应
- TimeLine
- Filters 过滤器
- Logs 日志
FiddlerScript是Fiddler核心配置的脚本,功能非常强大,它允许你增强Fiddler UI,添加新的特性,修改请求与响应内容等等。
它是基于JScript.NET 语言。在Fiddler 中点击菜单“Rules > Customize Rules”后,可以编写Fiddler Script 脚本,只要一保存,Fiddler 将会重新编译脚本并自动加载,如果加载成功,则会播放声音并在Fiddler 状态栏显示"CustomRules.js was loaded at " 提示信息,如果编译失败,将会显示错误提示信息。
主要方法(static function 方法名)
OnBoot fiddler 启动时调用
OnShutdown fiddler 关闭时调用
OnAttach fiddler 注册成系统代理时调用
OnDetach fiddler 取消注册系统代理时调用
Main 在每次fiddler启动时和编译CustomRules.js 脚本时调用
OnBeforeRequest 常用,在请求之前时调用
OnBeforeResponse 常用,在这个方法中修改Response的内容
OnExecAction 在Fiddler界面中左下方的QuickExec Box,如果你的脚本处理了指定的命令,则返回true,否则返回false
常用的调试方法如下:
OnBeforeRequest
static function OnBeforeRequest(oSession: Session) {
//会隐藏所有url中包含“localhost”的抓包信息
if (oSession.uriContains("localhost") {
oSession["ui-hide"] = "true";
}
//将包含指定地址的url标记为某种颜色
if (oSession.HostnameIs("mobile.touna")) {
oSession["ui-color"] = "green";
}
// Delay sends by 300ms per KB uploaded.请求延迟
oSession["request-trickle-delay"] = "300";
// Delay receives by 150ms per KB downloaded.响应延迟
oSession["response-trickle-delay"] = "150";
}
OnBeforeResponse
//替换指定地址的响应数据
static function OnBeforeResponse(oSession: Session){
if(oSession.uriContains(".baidu")){
if(oSession.GetResponseBodyAsString().Contains("百度")){
oSession.utilReplaceRegexInResponse("百度", "投哪");
}
}
}
AutoResponder
自动响应,本地保存一次respons,激活后会优先覆盖原响应
应用场景:修改respons内容
比较难重现的场景,先本地存一份
如下图点击[Generate File]默认会在桌面保存一分响应的所有数据内容
编辑自动响应
点击[Edit File With …]会进入 编辑状态
编辑时要注意,修改了body内容,Content-Length会变化,要作相应的加减
自定义请求
可以发起16种请求,常用的Http请求get和post,输入url 、header 中的Content-Type、body内容
点击右上角[Execute]开启请求
重复请求
1.选中会话,可选中多条
2.点击左上角[Replay]或者鼠标右键菜单中选择[Replay]→[Resissue Requests]
断点
可以分别在发送请求之前和响应返回之后修改数据
当点一次GO时会跳到拦截一小段时间内的请求,此时并不会有返回结果,可以去修改请求参数,再点GO才会有返回结果。当开启断点时,客户端发起请求,页面会卡住,直到点Go或者点Run to Completion断点后,Inspectors里面的内容变为可编辑状态,把word字段修改为“上海”
可以看出左上角还是“深圳”,实际内容已经变成了“上海”,请求参数已经修改成功,所以说一般重要的功能都会对url加密,在实际工作中可以用来测试接口,使用各种参数请求后是否接口报错
本文标签: Fiddler
版权声明:本文标题:Fiddler抓包--学习记录 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1728435797a1158099.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论