图解ARP协议(三)ARP防御篇-如何揪出”内鬼”并”优雅的还手”?
一、ARP防御概述
通过之前的文章,我们已经了解了ARP攻击的危害,黑客采用ARP软件进行扫描并发送欺骗应答,同处一个局域网的普通用户就可能遭受断网攻击、流量被限、账号被窃的危险。由于攻击门槛非常低,普通人只要拿到攻击软件就可以扰乱网络秩序,导致现在的公共网络、家庭网络、校园网、企业内网等变得脆弱无比。
接下来,我们通过图解的方式来深入了解ARP防御原理与解决方案。
二、ARP防御原理与解决方案
在讲解ARP防御之前,我们先回顾下ARP攻击最经典的一幕=>
当PC1询问PC2的MAC地址时,攻击者PC3返回ARP欺骗回应包:我的IP地址是IP2,MAC地址是MAC3。一旦PC1记录了错误的ARP映射,则发给与PC2的数据,都会落到PC3手里。
①保证电脑不接收欺骗包
②保证电脑收到欺骗包之后不相信
目前网络安全行业现有的ARP防御方案,基本都是上面两个方法的具体实现。我们来看看这张防御图:
①当黑客发起ARP欺骗包时,会途径局域网里面的交换机或无线路由器等网络设备;
②如果网络设备能够识别这种欺骗包,并且提前丢弃掉,则电脑/手机端就不会被欺骗;
③如果网络设备没有拦截这种欺骗包,则电脑/手机端需要做安全防御,然后再丢弃。
简单来说,ARP防御可以在网络设备上实现,也可以在用户端实现,更可以在网络设备和用户端同时实现。接下来,我们先来了解下网络设备(例如这里的交换机)的防御技术。
上面这张图,展现的是交换机的ARP防御能力,当PC2发送ARP回应包时,交换机将其转发给PC1,而当PC3发送ARP回应包(欺骗)时,交换机直接丢弃。
接下来,我就要给大家介绍下局域网安全里比较常用的防御技术,这种防御技术被称为DAI(Dynamic ARP Inspection)- 动态ARP检测,原理可以用两句话简单概括:
①交换机记录每个接口对应的IP地址和MAC,即port<->mac<->ip,生成DAI检测表;
②交换机检测每个接口发送过来的ARP回应包,根据DAI表判断是否违规,若违规则丢弃此数据包并对接口进行惩罚。
我们知道,PC3是在交换机的Port3、MAC地址是MAC3,IP地址是IP3,所以本地DAI表项内容是<port3-mac3-ip3>。当交换机从接口Port3收到ARP回应包,内容却是IP2和MAC3映射,即<port3-mac3-ip2>。
上面这个动态ARP监测技术,可以说是目前防御ARP攻击最有效的方法之一。但是,作为初学者,大家可能还会有疑问:
①一般的交换机或网络设备能部署动态ARP监测技术吗?
②连接用户的交换机,怎么能识别IP地址信息呢?
③上面这张DAI表是如何生成的?是不是像CAM表一样能自动识别?
所以,简单的交换机不具备动态ARP监测技术,即便市面上有带安全防御的网络产品,企业、学校、医院等大量网络,仍然在早期采购的时候,用的是比较基础版本的交换机。当然,随着网络与安全市场的激烈竞争和网络安全意识的增强,以后会越来越好。
另外,交换机能识别IP地址信息吗?
从现在的网络技术来看,分层界限越来越模糊,融合式的网络设备才是主流,现在的接入交换机基本能被Telnet/SSH/Web管理,更专业的交换机同时支持动态ARP监测(dai)、IP源防护(ipsg)、DHCP侦听(dhcp snooping)、端口安全、AAA、802.1x等局域网安全技术,已经超越了原有二层交换机的定义。
,这只是纸面上的定义。
最后一个问题,DAI检测表是如何生成的?
在上面图解中,我们看到交换机查看的表已经不是原来的CAM表了,内容也不太一样,CAM表的内容主要是MAC和Port的映射,而DAI检测表则是Port、MAC、IP三个信息映射。
目前这张表支持两种方式来生成=>
第一种方式就是手工静态绑定:即用户接入网络之后,管理员根据此用户电脑的MAC和IP地址,然后在接口上绑死,缺点就是用户数太多的话,手工绑定管不过来。
第二种方式就是目前最主流的做法,即在交换机上开启DHCP侦听技术,当用户第一次通过DHCP获取到地址的时候,交换机就把用户电脑的IP、MAC、Port信息记录在DHCP侦听表,后面ARP检测直接调用这张DHCP侦听表即可。
小结:以上便是在网络设备上部署的ARP防御技术,通过动态ARP监测技术(DAI),可以很好的解决ARP欺骗问题。技术虽好,但局域网内的交换机、无线路由器是否支持DAI,这个则取决于实际网络情况,尤其是十面埋伏的公共WiFi网络、脆弱无比的家庭网络、能通就行的校园网络…… 我们都应该持怀疑态度,至少不能完全信任这些网络。
答案是肯定的=>
对于普通用户,陌生网络不要随意接入,肯定是首选考虑的;当然,这里研究的是用户已经接入了网络,如何做安全防御的问题。从上图可以看到,用户(电脑或手机)最重要的便是通过安装ARP防火墙做安全防御,很多普通用户甚至“以电脑裸奔为豪,以骂安全厂商为荣”,这是对技术的严重藐视,对自己隐私的不负责任。普通小白一定要记住一句话:你没有被黑,只是你还没有到达被黑的价值。
ARP防火墙在技术实现上,一般都有以下功能:
①绑定正确的的IP和MAC映射,收到攻击包时不被欺骗。
②能够根据网络数据包特征(参考上一篇讲解的ARP攻击数据包溯源分析),自动识别局域网存在的ARP扫描和欺骗行为,并做出攻击判断(哪个主机做了攻击,IP和MAC是多少)。
那么,有哪些常见的ARP安全产品呢?
自带ARP防御功能:腾讯电脑管家、360安全卫士……
专业的ARP防火墙:彩影ARP、金山贝壳、360ARP防火墙……
从上图可以看到,PC1和PC2通信双方都静态绑定对方的IP和MAC映射,即便收到ARP欺骗包,由于静态绑定的ARP映射条目优先级高于动态学习到的,所以可以保证不被欺骗。
像这个WiFi网络,如果通过ARP双向绑定来解决安全问题,配置量其实蛮大的,当然,这就基本能够保障内网主机间通过以及主机访问互联网的安全性了。
Windows arp静态绑定方法=>
①进入命令行cmd界面;
② [arp -s ip地址 mac地址],例如:arp -s 192.168.1.1 00-11-22-a1-c6-09
注:家用无线路由器若要进行ARP绑定,则需要通过web登录并进行图形操作
小结:用户端的ARP防御方法,要么安装ARP防火墙,要么做ARP双向绑定。对于绝大部分用户来讲,虽然安装防火墙不是保证百分百安全了,但是能够解决很大一部分的隐患。
而充当网络警察或法官这种角色,我可能算是比较有经验的…… 从我刚接触网络/安全到现在,充当的次数多的数不过来:在学校外面租房的时候(别想歪)、在网吧上网的时候、在音乐餐吧吃饭的时候、在麦当劳/德克士蹭网的时候……可能普通用户觉得稀疏平常的地方,在网络世界里实则暗流涌动。
第二天早上爬起来,发现网络一点问题都没有,该开的网页,该下载的资料,都没有任何影响,恩,心情不错,不用专门跑回学校一趟下载资源之类的。但是到了晚上七八点的时候,网络又出现问题了,跟昨天晚上的情况一模一样,基本没法上网,但是网卡又显示连接着,这让我非常的郁闷。
然后我突然想起这几天,这栋楼好像新来了一个租客,这栋楼一共就四层,一层就3户租客,一共也就10来户,而一楼还是房东自己一家人住,我自己住二楼。基本上这栋楼里的租客都能记得七七八八,所以如果有陌生面孔的话,一眼就能认出来,我们暂且把这个人称为H,看上去是个上班族。
虽然当时还是个小菜鸟,但是毕竟学这块的,还是有点敏感:擦,会不会是这个人白天去上班,晚上回来宿舍,就开始限制我们的网速啊?
(年轻人还是有点浮躁啊….)
行,开干吧,多想没用。然后便拿出了P2P终结者(忘了当时用什么软件了,不过八九不离十)一扫描,想探探网络究竟。
普通小白遇到这种情况,装个ARP防火墙,咬咬牙也就过去了。但是咋们学网络和安全的,遇到这种情况,感觉就好像被人骑在头上一样。那咋办呢?作为一个理科男,做事情还是得按步骤走,不能被脾气牵着走,虽然当时已经非常生气了,但是基本定下来这个解决流程:
第一:马上给电脑安装防火墙,先脱离H的控制(当时电脑居然是裸奔的…);
第二:想尽办法找到H的IP和MAC地址(很多小伙伴看到这里可能会想:直接上去楼上揍他一顿不就得了,还费什么劲找地址啊。这个有必要说明下:①我个头没人家大只 ②人家要是问:你有证据吗,你取证了吗? 所以,武力不能解决问题,但是技术能力可以。)
第三:想方设法拿到网络控制权,把他踢下去。
第一步:具体就不说了,也忘了当时装的什么安全软件了;
通过流量数据包分析,很快就确定了攻击者的IP和MAC地址。这里要注意:虽然抓到了攻击者的IP和MAC地址,但是!我们还是没法实锤的证明:攻击者就是H。
这个攻击者是不是真的H啊?怎么确定就是这个人干的呢?如何把虚拟世界里的地址跟真实世界的人匹配起来?
但问题是没有路由器的后台登录密码,怎么解决呢?抱着侥幸的心理,查看电脑网关地址,然后浏览器输入网关地址,弹出了登录页面,尝试admin/admin?不行,再尝试admin/123456?还是不行…… 就这样尝试了常见的十几二十个账号密码,都提示账号密码错误,看来运气不是很好。
既然这样的话,就只能拿出暴力破解软件跑几个词典看看,用hydra挂着用户名和密码词典,慢慢的看着命令行输出,但输出结果基本都是failed…… 所以,第二天晚上虽然发现了攻击者的IP和MAC地址信息,但是拿他没办法,只能先忍着。
到了第三天白天,脑子里想的都是如何登录这个路由器后台管理界面,尝试跑了几个词典都没法登录,心理又在想:房东不应该会设置太复杂的密码啊,四五十岁的阿姨,完全不懂技术啊,网络应该也是叫人搞的,即便别人设置密码也应该给阿姨设置比较简单的让她好记的,方便后面维护之类的…… 一想到这里,赶紧从柜子里掏出之前的租房合约和房东名片,然后把房东的手机号码、房东的姓名拼音等信息做成简单的密码词典,再重新跑一次,还没反应过来,就显示密码尝试成功:admin/房东手机号码。万万没想到,以为只要6位或者8位的密码,居然是一个11位的手机号码,之前尝试的词典都是8位以内的。
啊。好吧,看到这个情况,我直接在出口路由器上把这个IP和MAC地址禁用,看接下来发生什么。
果然,大概过了半个钟,有人从楼上下来,直接去一楼找房东阿姨去了,具体说什么这个不清楚,但是应该是询问是不是宽带欠费之类的导致不能上网。
过了一会,阿姨带着他上来二楼….. 然后敲门询问:你们二楼能不能上网啊?大家都陆续回答:可以啊、没问题啊。与此同时,我已经确定了:眼前的这个人,H就是攻击者!他大概没料到,自己已经控制了内网,怎么可能被踢掉之类呢。
让他断网。之后的几个晚上类似的情况慢慢少了,因为只要他一扫描发起攻击,我这边就断他网,然后隔10分钟或者半个钟看看他反应,就这样慢慢地把他制服了,整栋楼的网络也就逐渐恢复了平静……
四、ARP防御总结
①ARP攻击非常低门槛,但是造成的影响却很大,包括断网攻击、流量被限、账号被盗等;
②ARP防御可以在网络端(网络设备)上部署,也可以在用户端(电脑/手机)上部署;
③网络设备(例如交换机)部署ARP防御,通常需要用到DAI(动态ARP监测)技术,更加专业的局域网安全防御,还可能结合DHCP侦听、IP源防护、端口安全、AAA、802.1X等技术,这些专业的防御技术,是由网络运维和安全运维工程师来实施的。