zl程序教程

您现在的位置是:首页 >  云平台

当前栏目

抓包工具Charles使用,中间人攻击,手机抓包

攻击工具手机 抓包 Charles 中间人 使用
2023-09-14 08:59:02 时间

###

1,Charles抓包工具的原理

原理都是在客户端和服务器之间充当代理服务器

 

正常的情况:客户端-------服务器

增加了Charles的情况:客户端 -----Charles -----服务器

Charles有两个功能,

1,接收客户端的请求,并且转发给服务器,

2,服务端返回结果给Charles,然后Charles转发给客户端,

 

https代理的原理:

如果是https,增加了加密的情况,这个抓包的逻辑是什么:

客户端和代理服务器建立连接,----代理服务器和真的服务器建立连接,

真的服务器下发证书给代理服务器-----代理服务器签名证书然后下发给客户端,

客户端使用签名证书生成公钥传给代理服务器,-----代理服务器用自己的签名证书解密之后,再用用服务器的证书加密传给服务器,

服务器传递加密数据给代理服务器,---代理服务器解密并加密数据传递给客户端,

然后后面的数据传输基本都是这样的了, 

2,Charles的安装配置

安装是很简单的,

代理的设置:proxy--proxy setting --proxy标签页配置端口号port:8888,----ok

访问控制设置:proxy--access control setting --- 会有一个ip列表---点击add添加ip---ok

mac代理设置:系统偏好设置--网络--代理--选择http和https代理---输入ip地址和端口号--保存(ip地址可以在Charles-help-local ip address 中查看)

mac代理设置还有更简单的方法:proxy-macOS proxy,选中就可以了,

SSL代理设置:proxy -- SSL proxy setting ---选中enable ssl setting --add *:* --保存,不设置这个可能会看到请求的返回内容是乱码,是因为做了加密

 

3,Charles主要功能

1,支持http和https代理

2,支持流量控制,比如弱网测试

3,支持接口并发请求,可以做简单的并发测试,实际很简单,就是通过:右键--repeat advanced --设置重复次数,

4,支持重发网络请求,这个很重要,重放攻击,实际很简单,就是通过,右键--repeat ,就可以了,或者通过快速工具栏的刷新按钮也可以,

5,支持断点调试,就是拦截请求和响应,--下面有介绍,也很简单,

 

界面介绍:

分成三部分,

1,菜单栏,这是主导航栏,很多功能在这里,

比如清空回话,重发请求,断点调试等,

2,左侧的请求导航栏,所有的请求可以在这里看到,

这个可以看到可以通过域名查看请求,也可以通过时间查看请求,还可以过滤请求,这是主要的功能,

 

3,点击左侧具体的一个请求,

右侧的上半部分是请求内容,

这个部分最重要的是overview,还有一个contents,这个contents是最重要的,可以看到header,cookie,请求参数,返回内容,

 

右侧的下半部分是响应内容,

如果是接口的响应内容,可以通过json查看json格式的返回数据

如果是图片的响应内容,可以通过image的格式查看到图片的显示

如果是html的响应内容,可以通过html格式查看到html内容,不能像浏览器一个看到预览,因为抓包工具没有渲染页面的能力,css,js,

可以搜索内容,这个搜索实际是很强大的,但是总是定位的地方有些不准确,不知道是不是我操作有问题,

 

4,Charles中间人攻击,拦截请求和响应, 

第一种方法,断点调试,这个这是一次性的,

打开断点调试:

首先打开代理开关,proxy--enable breakpoints 

然后在要左侧,在需要断点的请求上面右键,选择breakpoint,

然后重新浏览器请求这个连接,就会进入断点,这个断点会有两次一个是request的请求发送出去之前,还有一个response接收过来的之后做拦截,

所以可以修改请求参数,也可以修改返回内容,

 

关闭断点调试,

关闭代理开关,proxy--disable breakpoints 

如果想要关闭单个url的断点,还是在请求上右键,把breakpoint取消勾选就可以了,

 

第二种方法,使用映射本地文件的方式来调试,

第一步:把需要映射的html,在本地新建一个html文件,

第二步,在Charles的右侧,选择需要替换本地文件的请求,右键--点击map local,然后会自动填充进来域名端口路径,你只需要选择需要映射的本地文件,

第三步,修改本地的文件内容,刷新浏览器,就会发现返回的内容,变成自己本地的文件内容了,

还可以使用这个方式进行js的debug,

比如在html里面的script标签里面,输入alert(变量名),就会打印这个变量,

比如在某一行,输入debugger;这样就可以实现在这个地方打断点,

 

如果想要关闭这个map locals

在菜单,tools -map locals -然后取消掉就可以了,

 

5,Charles手机抓包,

 要使用Charles进行手机抓包,要进行两步设置,1是Charles端的设置,2是手机端的设置,

Charles端的设置

1、让电脑和手机处于同一个局域网下,即电脑和手机连接同一个WiFi【电脑开WiFi给手机连接也可以】;

2、打开Charles,点击菜单栏中Proxy –> Proxy Settings···,设置代理端口是8888【默认】,可以不修改端口号, 点击OK::

 3、查看mac电脑的ip,ifconfig,192.168.31.225

 

4、如果要对HTTPS抓包的话,还需要设置Proxy -> SSL Proxying Settings -> SSL Proxying -> Add,添加所有的域名和端口:

5、点击菜单栏Help->SSL Proxying->install Charles Root Certificates on a Mobile Device or Remote Browser,可以看到手机端安装证书提示:

 

 

#########

手机设置,

1、根据以上提示,打开手机的WiFi设置,连接和电脑同一个WiFi【或者连接电脑开启的热点】,设置代理IP与端口(代理IP就是上图的IP,端口就是Charles的代理端口8888);

如果使用的是genymotion模拟器,长按wifi名字,可以弹出设置代理的功能,

在真机使用adb命令,安装apk包,adb install 包名

2、手机浏览器访问网页,输入chls.pro/ssl,出现证书安装页面;

3、如果是苹果手机,点击安装后完成,在设置里面的通用,关于手机,信任证书:

4、如果是Android手机,点击下载,然后在手机设置的安全里面,安装证书:

注意如果安装证书失败了,换一个手机浏览器,比如使用Chrome浏览器,另外就是一定要开启一个无痕浏览器来访问chls.pro/ssl

否则也是安装证书会失败的,

 

等你安装了证书之后你就可以愉快的抓包了,哈哈哈!!!

 

 

6,Charles过滤请求

方法一、Proxy-Recording Settings-Inclede/Exclude

Inclede: 配置需要抓包的请求,其他请求被过滤,不会将请求显示到界面

exclude: 配置需要排除的请求,被配置的请求被过滤

备注

这个过滤,用的时候很不好用,有时候不生效,不知道怎么回事,

可以先采用,关闭抓包的方式,然后分析请求,不让其他的请求出现,干扰分析,

 

7,Charles修改请求

另外Charles修改请求的功能,要好好的用啊

这是一个重要功能,可以很好的模拟请求你,这是一个很重要的事情,

 

 

####

其他

抓包工具,比如fiddler,Charles,都是只能抓应用层的协议,wareshark可以抓传输层的协议,但是一般不用这个软件太重了,

另外python有一个抓包工具,mitmproxy,这个抓包工具很厉害,后面要学会使用,

抓包工具抓不到的原因,

1,可能是因为没有走http协议,而是走的tcp协议,你用抓包工具,就抓不到, 

2,可能是缓存的原因,清空缓存试试

 

 

 

 

 

###