【全球首发】Fiddler FiddlerOrchestra 抓包详解
- 陈大剩
- 2024-10-10 23:32:33
- 323
本文理论上是全球首发了,因为谷歌确实没有搜索到有人对 FiddlerOrchestra Beta
一些比较详细的介绍案例,而且也没有看到有正确的使用 FiddlerOrchestra Beta
。
背景
最近整理 Fiddler 抓包,在状态栏发现一个很有意思 FiddlerOrchestra Beta
标签,便开始研究 FiddlerOrchestra
。
有意思的是网上关于这块的教程很少,且大部分是错误的教程,如:Fiddler(八) - 抓取手机APP的流量-插件Fiddler Orchestra Beta安装&配置 、fiddler-003-抓取app视频,抓取抖音、西瓜、快手视频,小小的七色花,想抓保存什么就保存什….。
这些教程错误之处在与:
- 不用反向代理 HTTP\HTTPS 且错误引导开启 HTTP\HTTPS
- 只开启 HTTP 解析(无法解决安卓\Ios证书错误代理 HTTPS)
- 没有解释用
FiddlerOrchestra
的原因。
这些教程只用抓 HTTP 只用 Fiddler
就行,为什么 还要多次一举用 FiddlerOrchestra
呢?
这些教程的开发者可能没有注意 FiddlerOrchestra
官方的初衷, 从 FiddlerOrchestra
官方 FiddlerCore for .NET Standard and Fiddler Orchestra—the Future of Fiddler 这篇文章中其实说的很清楚,原因是: Fiddler
没有良好的跨平台性,跟不上时代步伐,所以提出 FiddlerOrchestra
一种 Web UI 方案的 Fiddler
,一种跨平台的方案的尝试。FiddlerOrchestra
官方的初衷是提供一种 Web 方式的 Fiddler
,但由于一些现实原因未全部开发完成(2017启动的开发),目前只提供连接 Fiddler
的控制器的版本 。
且不说为啥跳票这么久,但确实是提供了一种跨平台方案,后面也补上了 使用文档(A Brief User Guide on Fiddler Orchestra) 。
注意:没有其他平台需求,直接用 fiddler 就好了。
FiddlerOrchestra 原理详解
在此之前如果你想要用 MacOs、Linux、… 使用 Fiddler
,那几乎是不可能的,现在我们可以通过 FiddlerOrchestra
在 MacOs、Linux、… 使用 Fiddler
功能了。
FiddlerOrchestra
代理传统的 HTTP\HTPPS 外,还可以 反向代理 HTTP\HTPPS(目前全网上还没有一篇文章介绍),稍后我会介绍如何正确反向代理 HTTP\HTPPS(算是第一篇啦)。
截止到目前 Fiddler
还未开发好 Web UI 版 FiddlerOrchestra
抓包也没, FiddlerOrchestra
只能起到转发 Windows Fiddler
客户端作用,FiddlerOrchestra 原理如下:
- Fiddler Orchestra Controller(控制器),必须是 Windows Fiddler 用来接受 Fiddler Orchestra Client (跨平台客户端) 转发进来的流量。
- Fiddler Orchestra Client (跨平台客户端),可以是 MacOs、Linux、… 必须安装 Fiddler Orchestra Client 程序,用来连接 Fiddler Orchestra Controller(控制器)。
- Capture traffic devices(被抓包设备),任意需要抓包的设备,代理跨平台客户端。
众所周知 Fiddler
抓包是利用 中间人攻击(Man-in-the-middle attack,MitM) ,其中 Fiddler Orchestra Client (跨平台客户端)充当中间人代理 Capture traffic devices(被抓包设备)HTTP\HTTPS 请求,然后将顺带将 HTTP\HTTPS 复制一份流量转发 Fiddler Orchestra Controller(控制器)进行分析。
注意:就是说还是必须要有一台 Windows 设备安装 Fiddler 充当控制器,用来解析跨平台客户端转发的流量。
注意:Windows 设备安装 Fiddler 充当控制器,在控制器模式下有些 rule 过滤条件无法生效(可能是 bug)。
Fiddler Orchestra Client (跨平台客户端) 安装与连接
使用 FiddlerOrchestra
前需要安装 Fiddler Orchestra Client (跨平台客户端)客户端。
注意:官方提供了 使用文档(A Brief User Guide on Fiddler Orchestra) 详细的安装方式,本文以 Windows 为例安装 Fiddler Orchestra Client 。
安装相应 .NET 环境
Fiddler Orchestra Client (跨平台客户端)是基于.NET开发需要安装相应的环境 .NET 2.0安装地址 和 .NET Framework 4.6.1安装地址 安装无脑下一步即可。
安装 Fiddler Orchestra Client
- 管理员身份启动 Fiddler,在工具栏打开 Fiddler Orchestra Beta 选项卡,根据自己的操作系统选择客户端下载。
2. 解压Fiddler Orchestra Beta客户端,并创建 Fiddler Orchestra Beta 客户端启动文件
- 解压后的目录创建:FiddlerOrchestra.bat 文件
- 文件内容:「dotnet FiddlerOrchestra.Client.NetCore.dll」
- 管理员身份运行:FiddlerOrchestra.bat
连接 Fiddler
- 在 Fiddler Orchestra Beta 标签栏点击 start
2. 用浏览器打开 127.0.0.1:8800 页面 Orchestra Connection 选项卡填入 fiddler Private key 点击 Connect! 按钮
如图则连接成功!
FiddlerOrchestra 代理 HTTP\HTTPS
本文演示安卓抓包,因为 Fiddler 默认生成策略 中不包含 Authority KeyID
字段,安卓 和 IOS 设备证书需要通过 CertMaker for iOS and Android
插件生成 CA 证书。
CertMaker for iOS and Android
插件下载地址为:CertMaker for iOS and Android,下载后直接点击就行后,进入 tool =>option 导出 FiddlerRoot.cer 到桌面。
注意:一定仔细看 Certificates generated by 选项是否为:BccertMaker.BccertMakerfrom certMaker.dll,不是则重新生成。
Capture traffic devices(被抓包设备)信任证书
其他设备安装 fiddler 默认的信任证书步骤即可,某些安卓无法信任证书,可参考 Fiddler 安卓模拟器 HTTPS 证书配置。
生成.p12证书并上传证书【解决安卓证书错误问题】
生成 .p12 确保抓包 HTTPS 协议,如只需要抓 HTTP 跳过本小节即可。
生成 .p12 证书需要用到 openssl,安装 openssl 可参考:win10安装OpenSSL及简单的使用
安装拷贝出 CA证书私钥,具体步骤在快速执行命令行输入
about:config
回车,拷贝fiddler.certmaker.bc.key
的值,如图所示:
3. 在桌面上新建一个记事本文件,命名为 private_key.pem
添加指定的头尾,再将刚刚拷贝的字符粘贴到其中。
-----BEGIN PRIVATE KEY-----
私钥字符串xxx
-----END PRIVATE KEY-----
- 打开 cmd 到桌面目录(一定要到)下,执行如下命令:
openssl pkcs12 -export -out output.p12 -inkey private_key.pem -in FiddlerRoot.cer -macalg sha1 -keypbe pbeWithSHA1And3-KeyTripleDES-CBC -certpbe pbeWithSHA1And3-KeyTripleDES-CBC
参数说明:
- -export:指示 OpenSSL 导出为 P12 格式。
- -out output.p12:指定生成的 P12 文件名。
- -inkey private_key.pem:指定包含私钥的文件。
- -in certificate.cer:指定包含公钥证书的文件。
- -passout pass:your_password:设置导出密码,替换 your_password 为你希望使用的密码。
- -macalg sha1:指定使用 SHA-1 作为 MAC 算法。
- -keypbe 和 -certpbe:分别指定私钥和证书的加密算法,这里必须使用 pbeWithSHA1And3-KeyTripleDES-CBC。
一定要确保在生成 P12 文件时使用的文件和参数符合 Fiddler Orchestra 的要求.
-macalg sha1 -keypbe pbeWithSHA1And3-KeyTripleDES-CBC -certpbe pbeWithSHA1And3-KeyTripleDES-CBC
- 上传.p12证书,看到提示即算成功。
代理 HTTP/HTTPS
- 回到 127.0.0.1:8800 页面,选择:
Allow remote clients to connect
和Decrypt HTTPS
(不抓包 HTTPS 不需要选择此项)。
注意:网上很多教程代理 HTTP/HTPPS ,必须要开启 HTTP/HTTPS 反向代理选项是错误的。
- 设置 Capture traffic devices(被抓包设备)代理
被抓包雷电模拟器模拟安卓设备设置代理,填写好代理后,如果按照之前的操作 [Capture traffic devices(被抓包设备)信任证书](#Capture traffic devices(被抓包设备)信任证书) 信任了证书,就可以愉快的抓包了。
3. 抓包 HTTP/HTTPS 流量。
进行流量访问就可以将包传到 Fiddler Orchestra Controller(控制器)中分析流量了。
反向代理 HTTP/HTPPS
FiddlerOrchestra
反向代理类似于 Nginx ,也就是说在代理过程中将流量转发至 Fiddler
。目前感觉反向代理 HTTP/HTPPS 有点鸡肋,不知后期 FiddlerOrchestra
团队是有什么特殊的奇淫技巧。
全网对 FiddlerOrchestra
反向代理 HTTP/HTPPS 教程并不多,导致很多博主写博文时都错误的以为 代理 HTTP/HTPPS 必须要开启 反向代理 HTTP/HTPPS,实际上是两种不同代理。
原理如下:
具体流程:
- Capture traffic devices(被抓包设备)通过 80/443 端口访问 Web 服务器(被抓包设备并不知情是否发给了某某)。
- 流量通过 80/443 端口访问服务器时被 Fiddler Orchestra Client (跨平台客户端)反向代理给 Web 服务器可能端口是 9000 (PHP-FPM),其中在复制一份流量给 Fiddler Orchestra Controller(控制器)。【也就类似 Nginx 功能】
- Fiddler Orchestra Controller(控制器)可以通过中间人攻击篡改一些数据给 Capture traffic devices(被抓包设备)。
注意:如果都有服务反向代理需求,基本上直接改 Nginx 就行,篡改请求日志打印 Nginx 都有。
反向代理 HTTP 测试
本文只演示 反向代理 HTTP 代理,反向代理 HTTPS 代理 同理,把秘钥输入好就行。
- 先填写 代理(Listen on port)和 被代理端口(Host listens on port)并勾选 Allow remote clients to connect 后点击 start。这里 Capture traffic devices(被抓包设备)先会 访问代理(Listen on port)8080 端口,然后被转发至 被代理端口(Host listens on port)80 端口,并复制一份流量给Fiddler Orchestra Controller(控制器)。
2. 用 Go 语言 编写一个 Http 协议的 Hello, World!,访问 127.0.0.1:80 会显示 Hello, World!。
package main
import (
"fmt"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, World!")
}
func main() {
http.HandleFunc("/", handler)
fmt.Println("Listening on port 81...")
err := http.ListenAndServe(":81", nil)
if err != nil {
fmt.Println("Error starting server:", err)
}
}
3. 访问 127.0.0.1:8080 端口,查看 Fiddler Orchestra Controller(控制器)是否抓包成功。
4. 抓包成功后篡改请求,测试反向代理是否成功。
已成功篡改请求
话说我们都有服务器反向代理了,还用的着去篡改请求吗?直接用 Nginx 返回就行,所以我说是鸡肋功能,再者说 Nginx 也有请求日志分析。