共计 4559 个字符,预计需要花费 12 分钟才能阅读完成。
全站 HTTPS 正在称为潮流趋势, 国内实现全站https 的有淘宝和百度两家
0x01:https 的作用
C I A:机密性,完整性,可用性(可用性是合法用户可以访问自己有权限访问的资源)
解决的是信息传输中数据被篡改。窃取
加密:对称、非对称、单向
0x02:https 工作原理
https 的工作原理还是有必要研究下的(原理我也是从网上学习总结的,感谢这些前辈)
1. 客户端发起 HTTPS 请求
用户在浏览器里输入一个https 网址,然后连接到 server 的 443 端口。
2. 服务端的配置
采用HTTPS 协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请。区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面
web 通信中的 SSL 加密的 公钥证书(受信任的第三方证书颁发机构签名颁发)常见的如
VeriSign
Thawte
GlobalSign
Symantec
3. 传送证书
这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间等等。
4. 客户端解析证书
这部分工作是有客户端的TLS 来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随即值。然后用证书对该随机值进行加密。
5. 传送加密信息
这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。
6. 服务段解密信息
服务端用私钥解密后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密。所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。
7. 传输加密后的信息
这部分信息是服务段用私钥加密后的信息,可以在客户端被还原
8. 客户端解密信息
客户端用之前生成的私钥解密服务段传过来的信息,于是获取了解密后的内容。整个过程第三方即使监听到了数据,也束手无策。
大概过程如下:
握手——协商加密算法——获得公钥证书——验证公钥证书——交换会话密钥——加密信息传输
0x03:SSL 的弱点
1.ssl 是不同的对称、非对称、单向加密算法的组合加密实现(cipher suite)
如密钥交换、身份验证使用RAS/Diffie-Hellman,加密数据,使用 AES 加密,有 RAS/DH 完成密钥交换,摘要信息由 HMAC-SHA2,组成了一个 cipher suite,当然,也可以是其他组合。
2. 服务器端为提供更好的兼容性,选择支持大量过时的 cipher suite。
3. 协商过程中强迫降级加密强度。
4. 现代处理器计算能力可以在接收的时间内破解过时加密算法。
5. 黑客购买云计算资源破解。
0x04:HTTPS 常见攻击方式
针对其弱点,常见的 https 攻击方法有
降级攻击(把高安全级别的加密算法强制降成低安全级别的加密算法)
解密攻击(明文、证书伪造)
协议漏洞、实现方法的漏洞、配置不严格
0x05:HTTPS 证书查看
在进行中间人攻击之前,先查看下证书,可以使用以下软件(以百度为例)
1、OpenSSL
OpenSSL是一个安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。
直接调用openssl 库识别目标服务器支持的 SSL/TLS cipher suite
openssl s_client -connect www.baidu.com:443,
2、sslcan
SSLscan 主要探测基于 ssl 的服务,如 https。SSLscan 是一款探测目标服务器所支持的 SSL 加密算法工具。
sslcan 能 自动识别ssl 配置错误,过期协议,过时 cipher suite 和 hash 算法
默认会检查CRIME、heartbled 漏洞,绿色表示安全、红色黄色需要引起注意
sslscan -tlsall www.baidu.com:443
分析证书详细数据
sslscan -show-certificate –no-ciphersuites www.baidu.com:443
3、nmap
还可以使用 nmap 的脚本。
nmap –script=ssl-enum-ciphers.nse www.baidu.com
0x06、https 中间人攻击
1、先生成一个证书。
openssl req -new -x509 -days 1096 -key ca.key -out ca.crt,进行一个新的请求,格式为 -x509,现在的证书基本是x509 的国际标准的证书格式,有效期为 1096 天,并使用 ca.key 私钥,生成 ca.crt 标准的证书文件。
sslsplit会自动的调用根证书,根据你要访问哪些网站,根据网站的名称,由根证书签发一个专门针对网站的证书。
2. 开启路由功能
中间人也是个终端设备,不具有路由功能,转发过程不是由软件实现的,是由操作系统的路由功能实现的。
sysctl -w net.ipv4.ip_forward=1,将 net.ipv4.ip_forward=1 的值设为 1,当然用输出重定向或者vim 编辑 proc/sys/net/ipv4/ip_forward 也可。
3. 写转发规则
iptables端口转发规则
当客户端把请求发给中间人终端设备的时候,发到终端的 443 端口之后,需要用 iptables 做NAT地址转换,其实是端口转换,把本地 443 端口收到的包转发到另外一个端口,而另外一个端口由 sslsplit 所侦听的端口,这样的话,凡是发给 443 端口的请求流量就会发给 slsplit 所侦听的端口,而 sslsplit 就会调用证书伪造一个看起来是目标网站的伪造网站,sslsplit会利用伪造的证书对发过来的流量进行解密
iptables -t nat -L 查看 net 的配置,为避免干扰,可以使用 iptables -F 清空配置,并使用 netstat -pantu | grep :80 ,netstat -pantu | grep :443 检查 80 和443是否被使用,使用则停止进程
将 80、443 端口进行转发给 8080 和8443端口。
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 //MSA
iptables -t nat -A PREROUTING -p tcp –dport 465 -j REDIRECT –to-ports 8443 //SMTPS
iptables -t nat -A PREROUTING -p tcp –dport 993 -j REDIRECT –to-ports 8443 //IMAPS
iptables -t nat -A PREROUTING -p tcp –dport 995 -j REDIRECT –to-ports 8443 //POP3S
4. 进行 arp 欺骗
使用 arpspoof 进行 arp 欺骗,不管是进行 DNS 欺骗还是 HTTP 或 HTTPS 的中间人攻击,arp 欺骗都是前提,所以,在进行防御的时候,将 ip 和 MAC 绑定,就可以防止中间人攻击了。
arpspoof -i eth0 -t 192.168.1.127 -r 192.168.1.1(以下展示的实验环境的地址)
能看到网关的 arp 已经变成了 kali 的mac地址了。
5、进行监听
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,-D 表示 debug,-l 表示把连接请求记录到一个文件中,不是数据信息,只是连接信息,-j越狱的根目录,-S请求的数据,放在 -j 指定的目录下的目录,如 root/test/logdir,所以得先建立这个几个目录,-k 指定私钥,-c指定私钥签发的证书,ssl的流量加密的流量在本地的所有 ip 地址侦听 8443 端口,不加密的普通的 tcp 流量在本地的 8080 端口侦听。
6、验证
在客户端验证。本地电脑默认集成证书服务器的根证书,是不信任我们伪造的证书,所以在访问淘宝的时候,看到有这样的提示,就是有问题的。
登录验证并查看证书。
查看连接信息。
查看数据信息。
查看到 https 加密后的信息已经被解密。
我们就可以劫持 https 的流量了,但是会提示网站证书会报错,解决方法是 将根证书安装到客户端,再次访问就不会报根证书的问题了。访问的任何东西就会被没有告警的记录下来。所以在看到访问网站证书报错的情况下,需要格外注意。
除了 sslsplit 进行监听,还可以 使用 Mitmproxy 进行中间人攻击,同前面的步骤相同,仍然需要伪造证书,进行 arp 欺骗,但不需要指定监听的端口,默认监听 8080 端口,可以对默认的端口进行修改。
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 8080
启动Mitmproxy
mitmproxy -T –host -w mitmproxy.log,不但能进行监控,每个具体的数据可以打开查看详细的请求。
还可以使用 SSLstrip 进行监听,与前两种工具不同,将客户端到中间人的流量变为明文。需要 arp 欺骗,不需要生成伪造证书,只需写 iptables 规则,并让 sslstrip 监听某一个端口。
sslstrip -l 8080
0x07、ssl/TLS 拒绝服务攻击
ssl/TLS 拒绝服务攻击的原理及特性:
1、SSL协商加密对性能开销增加,大量握手请求会导致拒绝服务。
2、利用 ssl sevure renegotiation 特性,在单一 TCP 连接中生成数千个 SSL 重连接请求,造成服务器资源过载。
3、与流量式拒绝服务攻击不同,thc-ssl-dos可以利用 dsl 线路打垮 30G 带宽的服务器
4、对 SMTPS、POP3S 等服务同样有效
可以使用德国黑客组织“The Hacker’s Choice”发布了工具 THC SSL DOS、
thc-ssl-dos ip 端口 –accept,–accept是作者强制要求加的参数,不加此参数回提示你这个服务器是你的服务器吗,不是你的服务器就不要进行测试,–accept只有接收确认是自己的服务器,才可以使用这个工具去发起 ssl 重连接的握手请求。
对策
禁用 SSL-Renegotoation、使用SSL Accelerator(不过可以 通过修改 thc-ssl-dos 代码,可以绕过以上对策)
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-02/140470.htm