局域网中ARP攻击的查找与防范(Linux环境)

ARP是什么?

Address Resolution Protocol是指当知道一个宿主的网络层地址(IP)去寻找对应的链路层地址(hardware address)的一个方法。这个协议在RFC826中有明确的规定。

ARP协议已经被实现在各种各样的网络上,它不仅仅是一种IP专用或者局域网专用的协议,它能够映射不同类型的网络层协议地址到实际的物理地址上,但是目前的网络环境下,ARP更多的用来解析IP地址和Mac地址的对应关系。ARP也被用在令牌网络、FDDI、IEEE 802.11和ATM中。在下一代IPV6互联网中,ARP将主要提供NDP(Neighbour Discovery Protocol)功能。

Fedora下几个常用的arp命令。

arp    操作系统的arp缓存。
arp -s hostname hw_adr    可以指定静态的ip:mac对应关系,从而避免受到arp攻击的影响

arping    arping是一个用来发现网络信息的应用程序。相当与ping命令,不过是在更基础的一层进行通讯的测试。使用方法
arping    {ip}    也可以指定发送请求的次数,具体的使用可以 man arping

arptables    arptables是linux内核中用来设置、管理arp过滤规则的映射表格。一般用来防止ARP欺骗,用户系统中可能会定义多个arptable,一个table中包含一些列的规则,同时也包含着用户的规则。
可以通过arptables来防止Arp request获得你的Mac地址,这样攻击者会认为你的服务器是不存在的,这样就可以避免受到arp的攻击。

arpwatch    arpwatch是一款用来监测计算机网络中arp活动的开源软件。当它运行时会产生一个带时间戳的IP-MAC对,监测ARP活动的原因是为了防止ARP欺骗,这款软件由伯克利国家实验室开发(Lawrence Berkeley National Laboratory)。

ARP欺骗    ARP欺骗也被称为Arp Posioning,是一种用来攻击有线或者无线网络的攻击手法。ARP欺骗允许攻击者探测网络中的数据帧、修改数据流量或者停止数据流量。这种攻击方法只能使用在利用ARP进行IP-Mac映射的网络中。
ARP攻击的主要就是向局域网发送伪装过的ARP信息,从而将攻击者的Mac地址和网络中的另一个节点IP链接起来(比如默认的网关)。这样,所有送往这个地址的信息都会被错误的投递到攻击者的Mac地址,攻击者可以查看这些信息并决定如何处理。他可以不加修改的送往这些数据原本要送往的地址,也可以将修改后的信息发送到原地址,还可以将所有的流量导入到另外一个IP,从而发起DOS进攻。

ARP欺骗工具    Arpspoof、Arppoison、Cain and Abel、Ettercap都可以用来发起Arp攻击。

arpoison        arpoison的安装需要libnet的支持,有了这些下载arpoison的源文件进行编译,在fedora下编译时需要引用/usr/lib/libnet.so,编译成功后就可以使用arpoison了。
使用方法    Usage: -i -d -s -t -r [-a] [-w time between packets] [-n number to send]

补充资料:修改Mac地址
操作方法是先把网卡禁掉,ifconfig eth0 down,否则会报告系统忙,无法更改;然后用ifconfig etho hw ether 新的mac地址就可以;最后再启用网卡 ifconfig eth0 up;
如果想永久修改Mac地址,也可以将上面的命令写在 /etc/rc.d/rc.local 中,这样每次重启后就会执行这个脚本

参考资料

1、ARP            http://en.wikipedia.org/wiki/Address_Resolution_Protocol
2、RFC826        http://tools.ietf.org/html/rfc826
3、Arptables        http://en.wikipedia.org/wiki/Arptables
4、Arpwatch        http://en.wikipedia.org/wiki/Arpwatch
5、ARP防范与攻击    http://home.phpchina.com/space.php?uid=13636&do=blog&id=55489

cocowool

A FULL STACK DREAMER!