个人学习笔记之ARP攻击原理与实验

简介

ARP(Address Resolution Protocol,地址解析协议)是一个位于TCP/IP协议栈中的网络层,负责将某个IP地址解析成对应的MAC地址。

协议概述

ARP(AddressResolutionProtocol),即地址解析协议,是根据IP地址解析物理地址的一个TCP/IP协议。主机将包含目标IP地址信息的ARP请求广播到网络中的所有主机,并接收返回消息,以此确定目标IP地址的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,以便下次请求时直接查询ARP缓存以节约资源。

ARP漏洞

ARP协议存在很多漏洞和不足,给计算机网络造成很大的隐患。首先ARP协议是以广播方式发送ARP请求的,只要是同一个网段内主机都可以收到,这就为攻击者以可乘之机,攻击者可以发送大量的ARP请求包,阻塞正常网络宽带,使局域网中有限的网络资源被无用的广播信息所占用,造成网络拥堵;其次ARP协议没有安全认证机制,因为局域网内主机是建立在信任的基础上的,所以只要主机接收到ARP应答包,都会缓存在ARP表中,这就为ARP欺骗提供了可能。攻击者可以发送错误的IP地址MAC地址的映射关系。

ARP欺骗原理

我们知道主机a和主机b在通信时需要先后建立即建立ARP缓存表(即IP和MAC的映射),因为数据链路层传输数据,不识别IP地址,只能用MAC地址来识别。那么ARP欺骗就是从这里入手的。

主机IP /MAC
通信方a192.168.1.1 / MAC 1
通信方b192.168.1.2 / MAC 2
攻击者c192.168.1.3 / MAC 3

假如局域网内有另一台主机(攻击者主机c),他想窃听ab之间的通信。当a给b传输信息的时候,会先问一下b的MAC地址:IP为192.168.1.2的主机啊 你的MAC地址是多少啊?但是他不知道那个是b,所以信息是以广播的方式发出去的,局域网内所有人都能收到这条信息。
当c是正常用户的时候,他会对比自己的IP 192.168.1.3!=192.168.1.2,就会把这条信息丢弃。b收到信息,对比自己的IP 192.168.1.2=192.168.1.2,b就知道了,这是找我的,所以他会回复信息:我是192.168.1.2啊 我的MAC地址是MAC 2。但是c是攻击方,他收到这个信息的时候,也会发送消息回复:我是192.168.1.2 ,我的MAC地址是MAC 3。

这时候问题来了,a不仅收到b的回复,也收到了c的回复。都说自己是192.168.1.2 一个MAC 2 一个 MAC 3。那么缓存表记录哪一个呢?当然a有自己的判断:他会记录后来的那个信息,替换前一个信息。也就是如果b的信息比c的信息后到,那么就是记录的b的回复信息。(正确的IP-MAC映射。如果b的信息比c的信息先到,那么就是记录的c的回复信息。(被欺骗的IP-MAC映射)
这时候就会出现问题,看谁的信息来的慢,概率就百分之五十。但是事实并不是这样的,ARP缓存表是允许主动更新的,c会不断的给a发送:我是192.168.1.2 我的MAC是MAC 3。总有一个是比b的信息后到,从而覆盖b的信息欺骗成功。同理,c也能给b用同样的方式欺骗成功。这样ab之间的通信都会被c窃听到!

ARP攻击分类

  1. ARP泛洪攻击
    通过向网关发送大量ARP报文,导致网关无法正常响应。首先发送大量的ARP请求报文,然后又发送大量虚假的ARP响应报文,从而造成网关部分的CPU利用率上升难以响应正常服务请求,而且网关还会被错误的ARP表充满导致无法更新维护正常ARP表,消耗网络带宽资源。
  2. ARP欺骗主机的攻击
    ARP欺骗主机的攻击也是ARP众多攻击类型中很常见的一种。攻击者通过ARP欺骗使得局域网内被攻击主机发送给网关的流量信息实际上都发送给攻击者。主机刷新自己的ARP使得在自己的ARP缓存表中对应的MAC为攻击者的MAC,这样一来其他用户要通过网关发送出去的数据流就会发往主机这里,这样就会造成用户的数据外泄。
  3. 欺骗网关的攻击
    欺骗网关就是把别的主机发送给网关的数据通过欺骗网关的形式使得这些数据通过网关发送给攻击者。这种攻击目标选择的不是个人主机而是局域网的网关,这样就会攻击者源源不断的获取局域网内其他用户韵数据.造成数据的泄露,同时用户电脑中病毒的概率也会提升。
  4. 中间人攻击
    中间人攻击是同时欺骗局域网内的主机和网关,局域网中用户的数据和网关的数据会发给同一个攻击者,这样,用户与网关的数据就会泄露。
  5. IP地址冲突攻击
    通过对局域网中的物理主机进行扫描,扫描出局域网中的物理主机的MAC地址,然后根据物理主机的MAC进行攻击,导致局域网内的主机产生IP地址冲突,影响用户的网络正常使用。

arpspoof用法

arpspoof [-i interface] [-c own|host|both] [-t target] [-r] host

1功能:arpspoof通过伪造arp回复包将局域网中主机A(或者所有主机)的网路包重定向到主机B。

参数:

  • -i 指定用攻击机的哪个网络接口,可以使用ifconfig命令查看攻击机接口列表。
  • -c own|host|both
  • -t 指定arp攻击的目标。如果不指定,则目标为该局域网内的所有机器。可以指定多个目标,如:arpspoof -i etho -t 192.168.23.8-t 192.168.23.1
  • -r host 希望拦截攻击机和哪个host之间的通信,一般都是网关。

实验

  1. 环境
    kali虚拟机一台(攻击)
    win10一台(物理机,被攻击)
    条件:局域网内。
  2. 获取目标ip
    root@kali:~# fping -g -r 0 -s 192.168.31.0/24
    192.168.31.1 is alive (网关)
    192.168.31.60 is alive
    192.168.31.62 is alive
    192.168.31.67 is alive(kali)
    192.168.31.134 is alive(物理机)
    192.168.31.157 is alive
    192.168.31.192 is alive
    其他都是我室友的IP。
  3. 确认目标
    nmap -v 详细信息
    在这里插入图片描述
  4. 数据劫持
    在这里插入图片描述
    这样目标主机就会造成断网假象
  5. ARP欺骗
    root@kali:~# echo 1 > /proc/sys/net//ipv4/ip_forward( 把1写入/proc/sys/net//ipv4/ip_forward这个文件)开启转发进行ARP欺骗。
    在这里插入图片描述
    root@kali:~# driftnet -i eth0 对目标进行图片嗅探。
    在这里插入图片描述

危害

如果ARP攻击严重话,会导致同一个局域网(也是同一个广播域)的所有主机的ARP缓存表中都存放着错误的IP和MAC的映射,如上图,每台主机的ARP缓存表中,不论哪个IP,都会映射到攻击者的MAC地址MAC 3上,这样该局域网内的所有主机的消息都发送到恶意攻击者的主机上。