如何使用 Charles 抓包并分析 Http 报文

时间:2024-04-12 08:11:08


前言


从 Web 安全的攻击防御方面来说,最多接触的应该就是 Http 协议了,当我们作为中间人(man-in-the-middle)查看到所有浏览器到 web 服务器的 http 报文的时候,一切就都有意思起来。


如何使用 Charles 抓包并分析 Http 报文


比如,分析某电商在交易支付的时候请求了哪些东西,分析某网站的登录流程都请求了哪些数据,分析某社交软件有没有偷偷的上传隐私数据等等,甚至可以拿到 Https 加密过的请求哦!

如果我是黑客,分析过后也许就会通过工具篡改伪造请求报文,欺骗服务器,从而实现某些恶意行为,比如撞库、刷单、撸羊毛、恶意爬虫爬取数据等等。

那么,如何快速有效的抓取 http 数据包并进行分析呢,这里推荐一个跨平台抓包神器— Charles。

charles 是一个图形界面可视化的代理形式(HTTP,SOCKS,SSL/HTTPS)的抓包工具,它提供对 HTTP,SSL/HTTPS 协议下通过同一个路由器下的设备的数据交流分析,包括各种HTTP请求和响应信息,charles 目前只支持抓到部分 socket 的数据。



安装配置


1下载安装


http://www.charlesproxy.com/download/

charles 需求 java 环境,并且为收费工具,试用版每30分钟将会关闭。



2socks/http 代理配置


charles 提供透明代理功能,当安装配置对象为网关服务器时,菜单处 proxy->proxy setting 勾选 HTTP 代理,勾选enabletransparent HTTP proxying 选项即可。


如何使用 Charles 抓包并分析 Http 报文


检测为第一次安装使用时 charles 会提供部分浏览器和应用的自动代理设置:


Windows / Internet Explorer proxy settings – used automatically by mostWindows applications

Mac OS X proxy settings – used automatically by most Mac OS Xapplications

Mozilla Firefox proxy settings (all platforms)


Mozilla Firefox 可在设置 ADD-ONs 处添加自动配置插件:


https://addons.mozilla.org/en-US/firefox/addon/charles-proxy/


其他应用/浏览器:

当于 charles 菜单 proxy 处设置好了设置以后,可以查询各个浏览器,应用的代理设置方式,在设备(包括手机)处于同一网络(同一路由)下时,填写 charles 所处设备的 ip 地址和 charles 设置的代理端口(默认8888),即可通过 charles 代理。


3SSL https 代理配置


> 非手机:

charles 菜单 help->SSL proxy->安装 certificates 后

菜单 proxy->SSLproxy setting->添加代理目标地址(可于另外两个选项添加 client 和 root 的 certificates)。


如何使用 Charles 抓包并分析 Http 报文



> 手机:

在手机端浏览器输入“http://www.charlesproxy.com/getssl“ 下载证书,并将格式转换为 crt 安装在手机上即可。


如何使用 Charles 抓包并分析 Http 报文


> 通过代理 client ip 段设置:

于菜单 proxy->AccessControl 处可设置通过代理的 clientIP 段。


如何使用 Charles 抓包并分析 Http 报文


charles 可再通过代理传输数据,可在 proxy->external proxy 处设置代理,使 charles 再通过其他代理。



使用


charles 的图形界面提供格式话的抓包数据的分析和各种处理方式。

当配置完毕以后数据会在当前 session 数据界面(Structure树状和Sequence 队列两种方式)显示抓到的各个请求和相应信息,树状抓到的数据会以相同地址聚合的方式堆列为树状,而队列形式为以先后的顺序显示。对显示的数据有相应的选项可操作数据,其中 request 和response 可以以 image,text,html,json,javascript……的形式显示。


如何使用 Charles 抓包并分析 Http 报文


charles 提供断点形式(breakpoint)的代理,可对请求进行再编辑以后再将请求发送过去。同时提供 repeat 的重复发送功能,并有相应的功能设置(advance repeat)对该重复发送功能进行设置(定时定量)。


如何使用 Charles 抓包并分析 Http 报文



4模式


charles 在启用时提供的模式主要以 record,throttle,断点模式。

其中,记录模式即使关闭 charles 一样在进行抓取数据,只是不将其显示出来。


如何使用 Charles 抓包并分析 Http 报文


throttle 模式可将目前连接代理的所有 client 虚拟为所设置的网络质量。


如何使用 Charles 抓包并分析 Http 报文


其中,在附带工具中有可选其他关联选项附加模式。


菜单->tool 下有:

● no caching

对 caching 设置的工具,设置以后,代理将拒绝代理的 client 使用cache 缓存的形式显示相应。


● map *

local:该功能可将代理本地的文件替换请求所响应的结果,目标请求的响应将替换为本地所选资源返回并显示给 client。

remote:同上功能,但所替换的资源为远程他网络服务器上的其他请求地址或数据接口。


● rewrite

该工具可再编辑 client 发送给目标服务器的请求,并且提供批量改写字段的编辑。


● blocking cookies

该功能提供保存目标服务器发送/接收的各个 cookies,可用来测试该web服务器是否对代理所持有的 cookies 有效(该功能提供导入和导出所保存的 cookies)。


● Mirror

该工具提供对目前的 session 进行镜像处理。

charles 提供终端下的命令形式操作方式和浏览器接口形式的操作方式。


● 终端:


charles <path>

以一个session文件打开一个新的 session

charles -config <path>

制定一个 config 文件的使用

charles -headless

无图形界面的启动 charles

charles -throttling

开启 throttling 模式


● 网页接口:

包括增加删除,保存 session,开启关闭各种模式。同终端模式,并不提供各种可视化的抓包数据分析。