《爆肝整理》保姆级系列教程-玩转Charles抓包神器教程(5)-Charles如何设置捕获Https会话
1.简介
在大数据时代,互联网时代,个人信息安全尤为重要,网络安全在近日多起电信诈骗事情发酵下的情况下,引起国家,企业,个人对于互联网安全进一步的重视。而之前很多以http协议传输的网站出现的网站信息泄露,个人信息裸露在大数据的泳池中,让我们在遇到一个陌生网站的时候,都会格外考虑其安全性。通过认证SSL证书的以https加密协议访问网站比没有加密的http协议访问网站要安全的多。由于近几年来各大网站越来越注重安全性都改成了https协议,不像前十几年前直接是http协议直接裸奔在互联网。还有的小伙伴或者童鞋们按照上一篇宏哥的配置都配置好了,想大展身手抓一下百度的包,结果一试傻眼了,竟然毛都没有抓到,怀疑是不是上了宏哥的当了。不是的哈,今天宏哥趁热打铁接着讲解如何抓取https协议会话。
2.HTTP
HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少.
3.HTTPS
HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。
4.HTTP和HTTPS区别
http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
5.Charles抓取HTTP包
charles中不安装证书,默认就能抓http类型网址的包信息。这部分宏哥在上一篇中就提到过。如下图所示:
6.Charles抓取HTTPS原理
Charles 的主要工作原理就是:对客户端伪装成服务器,对服务器伪装成客户端。
1.客户端向服务器发起HTTPS请求
2.Charles拦截客户端的请求,伪装成客户端向服务器进行请求
3.服务器向“客户端”(实际上是Charles)返回服务器的CA证书
4.Charles拦截服务器的响应,获取服务器证书公钥,然后自己制作一张证书,将服务器证书替换后发送给客户端。
5.客户端接收到“服务器”(实际上是Charles)的证书后,生成一个对称秘钥,用Charles的公钥加密,发送给“服务器”(Charles)
6.Charles拦截客户端的响应,用自己的私钥解密对称密钥(Charles拿到了对密钥),然后用服务器证书公钥加密,发送给服务器。
7.服务器用自己的私钥解密对称密钥,向“客户端”(Charles)发送响应
8.Charles拦截服务器的响应,替换成自己的证书后发送给客户端
至此,连接建立,Charles拿到了 服务器证书的公钥 和 客户端与服务器协商的对称密钥,之后就可以解密或者修改加密的报文了。
7.Charles抓取HTTPS包
宏哥安装好Charles后,没有对其进行任何配置,现在可以抓取http的包,然后宏哥访问百度试着抓取一下百度的https包,看一下会出现什么情况。
1.浏览器情况:不能正常访问百度,出现这个类似证书错误的提示,如下图所示:
2.Charles情况:不能抓取百度的https的包,出现unknown的错误,如下图所示:
7.1安装证书
从上边的错误我们可以看出是证书问题,那我们就需要安装一下证书在电脑端,具体操作步骤如下:
1.打开charles,点击help-->SSL Proxying-->Install Charles root Certificate 安装证书,如下图所示:
2.点击完“Install Charles root Certificate”后,然后点击“安装证书”,如下图所示:
3.点击“安装证书”后,选择存储位置“本地计算机”,点击“下一步”,如下图所示:
4.证书存储位置选择‘将所有的证书都放入下列存储’,然后点击证书存储后的“浏览”,证书存储选择“受信任的根证书颁发机构”,点击“确定”,如下图所示:
5.点击“下一步”,如下图所示:
6.点击“完成”,提示导入成功。如下图所示:
7.2配置SSL代理
证书安装好后,我们还需要配置Charles的SSL Proxy Settings。具体操作步骤如下:
1.打开Charles,点击proxy>SSL Proxying Settings打开如下弹框,勾选ssl代理开关,左侧inclide为需要抓取的代理,右侧为需要排除抓取的代理,如下图所示:
2.右侧exclude排除的,点击add即可添加,host为域名,port为端口号,我们要想抓取https,在include里,点击add,填写需要抓取https的host,port里填写443即可,也可以用*号代替。宏哥这里在弹出选项卡中,勾选【Enable SSL Proxying】点击【add】,在Host输入【*】表示接收任何主机,在Prot输入【443】最后点击【ok】保存。如下图所示:
3.完成以上步骤基本就已经结束了,这时候我们打开浏览器输入www.baidu,com便可以抓取到了。
(1)浏览器情况:能正常访问百度,如下图所示:
(2)Charles情况:能抓取百度的https的包,如下图所示:
8.小结
其实从头到尾感觉和Fiddler的抓取Https的步骤差不多,首先安装证书,然后进行抓包工具自身的配置,最后就可以成功抓取到Https包了。
Q: HTTPS 为什么安全?
A: 因为 HTTPS 保证了传输安全,防止传输过程被监听、防止数据被窃取,可以确认网站的真实性。
Q: HTTPS 的传输过程是怎样的?
A: 客户端发起 HTTPS请求,服务端返回证书,客户端对证书进行验证,验证通过后本地生成用于改造对称加密算法的随机数,通过证书中的公钥对随机数进行加密传输到服务端,服务端接收后通过私钥解密得到随机数,之后的数据交互通过对称加密算法进行加解密。
Q: 为什么需要证书?
A: 防止”中间人“攻击,同时可以为网站提供身份证明。
Q: 使用 HTTPS 会被抓包吗?
A: 会被抓包,HTTPS 只防止用户在不知情的情况下通信被监听,如果用户主动授信,是可以构建“中间人”网络,代理软件可以对传输内容进行解密。
感谢您花时间阅读此篇文章,如果您觉得这篇文章你学到了东西也是为了犒劳下博主的码字不易不妨打赏一下吧,让博主能喝上一杯咖啡,在此谢过了!
如果您觉得阅读本文对您有帮助,请点一下左下角“推荐”按钮,您的
本文版权归作者和博客园共有,来源网址:https://www.cnblogs.com/du-hong 欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利!
公众号(关注宏哥)                                                                                 客服微信