专栏名称: 51CTO
51CTO官方公众号——聚焦最新最前沿最有料的IT技术资讯、IT行业精华内容、产品交流心得。本订阅号为大家提供各种技术干货,还会不定期的举办有奖活动,敬请关注。
目录
相关文章推荐
新浪科技  ·  【#聚美优品官网仅剩公司介绍# ... ·  昨天  
新浪科技  ·  【#超100名科学家建议叫停星链发射# ... ·  5 天前  
51好读  ›  专栏  ›  51CTO

被ARP攻击了,如何揪出"内鬼",并"优雅的还手"?

51CTO  · 公众号  · 科技媒体  · 2017-09-07 11:50

正文

如何进行有效的 ARP 防御?作为普通用户怎么防御?作为网络/安全管理员又怎么防御?有哪些 ARP 防御软件?如果被 ARP 攻击了,如何揪出"内鬼",并"优雅的还手"?


ARP 防御概述

通过之前的文章,我们已经了解了 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 防御可以在网络设备上实现,也可以在用户端实现,更可以在网络设备和用户端同时实现。


接下来,我们先来了解下网络设备(例如这里的交换机)的防御技术。

上面这张图,展现的是交换机的 ARP 防御能力,当 PC2 发送 ARP 回应包时,交换机将其转发给 PC1,而当 PC3 发送 ARP 回应包(欺骗)时,交换机直接丢弃。


但是,人家 PC3 上脸上又没有写着"hacker",凭什么交换机要丢弃它的 ARP 回应包?凭什么判断它的包就是"欺骗"的呢?


接下来,我就要给大家介绍下局域网安全里比较常用的防御技术,这种防御技术被称为 DAI(Dynamic ARP Inspection)- 动态 ARP 检测。


它的原理可以用两句话简单概括:

  • 交换机记录每个接口对应的 IP 地址和 MAC,即 portmacip,生成 DAI 检测表。

  • 交换机检测每个接口发送过来的 ARP 回应包,根据 DAI 表判断是否违规,若违规则丢弃此数据包并对接口进行惩罚。

我们知道,PC3 是在交换机的 Port3、MAC 地址是 MAC3,IP 地址是 IP3,所以本地 DAI 表项内容是


当交换机从接口 Port3 收到 ARP 回应包,内容却是 IP2 和 MAC3 映射,即


经判断,这个包就是虚假的欺骗包,交换机马上丢弃这个包,并且可以对接口做惩罚(不同设备的惩罚方式有所不同,可以直接将接口"软关闭",直接将攻击者断网;也可以"静默处理",仅丢弃欺骗包,其他通信正常)。


上面这个动态 ARP 监测技术,可以说是目前防御 ARP 攻击最有效的方法之一。


作为初学者,大家可能还会有三个疑问:

  • 一般的交换机或网络设备能部署动态 ARP 监测技术吗?

  • 连接用户的交换机,怎么能识别 IP 地址信息呢?

  • 上面这张 DAI 表是如何生成的?是不是像 CAM 表一样能自动识别?

 

这里要给大家说个稍微悲伤一点的事实,大部分能支持这种动态 ARP 监测技术的交换机或者无线路由器,都基本是企业级的产品。


即便是企业级交换机,具备局域网安全防御功能的设备,价格都要高出不少。所以很多中小型企业网或校园网,基本都愿意买"阉割版"网络接入产品,因为"能通就行",至于安全性怎样,这是另外要考虑的问题。


所以,简单的交换机不具备动态 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 防火墙做安全防御,很多普通用户甚至“以电脑裸奔为豪,以骂安全厂商为荣”,这是对技术的严重藐视,对自己隐私的不负责任。


普通小白一定要记住一句话:你没有被黑,只是你还没有到达被黑的价值。


ARP 防火墙在技术实现上,一般都有以下功能:

  • 绑定正确的的 IP 和 MAC 映射,收到攻击包时不被欺骗。

  • 能够根据网络数据包特征(参考上一篇讲解的 ARP 攻击数据包溯源分析),自动识别局域网存在的 ARP 扫描和欺骗行为,并做出攻击判断(哪个主机做了攻击,IP 和 MAC 是多少)。


那么,有哪些常见的ARP安全产品呢?

  • 自带 ARP 防御功能:腾讯电脑管家、360 安全卫士……

  • 专业的 ARP 防火墙:彩影 ARP、金山贝壳、360ARP 防火墙……


采用安全产品肯定是普通用户最省时省力的做法,而对于技术人/工程师而言,如果不屑于使用安全产品,并且希望解决 ARP 攻击行为,也可以通过"ARP 双向绑定"的技术来实现。


什么是"ARP 双向绑定"呢?

从上图可以看到,PC1 和 PC2 通信双方都静态绑定对方的 IP 和 MAC 映射,即便收到 ARP 欺骗包,由于静态绑定的 ARP 映射条目优先级高于动态学习到的,所以可以保证不被欺骗。


这种做法非常"绿色无污染",因为不需要额外的软件安装,但是缺点也非常明显,例如普通用户不知道如何在电脑上做 ARP 静态绑定,另外工作量也比较大,每个主机和网关设备都需要绑定整个局域网的 ARP 静态映射。


以下面的家庭 WiFi 网络为例:

像这个 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 双向绑定。


对于绝大部分用户来讲,虽然安装防火墙不能保证百分百安全了,但是能够解决很大一部分的隐患。


如果被 ARP 攻击了,如何揪出"内鬼"并"优雅的还手"?

相比"如何防御 ARP 攻击",我相信更多人感兴趣的是"如何揪出内鬼并进行还手",因为"揪出内鬼"的时候,我们充当着"网络警察"的角色(把小偷逮住),而"优雅的还手"又充当着"法官"的角色(惩治小偷)。


而充当网络警察或法官这种角色,我可能算是比较有经验的。


从我刚接触网络/安全到现在,充当的次数多的数不过来:在学校外面租房的时候(别想歪)、在网吧上网的时候、在音乐餐吧吃饭的时候、在麦当劳/德克士蹭网的时候......


可能普通用户觉得稀疏平常的地方,在网络世界里实则暗流涌动。


我第一次"抓内鬼当法官"应该是在 2010 年的时候,当时在学校旁边租了一个房子自己做技术研究。


有一天晚上,网速变得特别慢,网页基本没法打开,QQ 勉强还能挂着,但是租房以来网络一直还可以,虽然不算快,但是也至少满足平常上网需求啊。


我心想:算了,毕竟租的房子一般,每个月网费也就 30 块,房东拉的宽带可能比较垃圾不稳定吧,明天再看看。


第二天早上爬起来,发现网络一点问题都没有,该开的网页,该下载的资料,都没有任何影响。嗯,心情不错,不用专门跑回学校一趟下载资源之类的。


但是到了晚上七八点的时候,网络又出现问题了,跟昨天晚上的情况一模一样,基本没法上网,但是网卡又显示连接着,这让我非常的郁闷。


然后我突然想起这几天,这栋楼好像新来了一个租客,这栋楼一共就四层,一层就 3 户租客,一共也就 10 来户,而一楼还是房东自己一家人住,我自己住二楼。


基本上这栋楼里的租客都能记得七七八八,所以如果有陌生面孔的话,一眼就能认出来,我们暂且把这个人称为 H,看上去是个上班族。


虽然当时还是个小菜鸟,但是毕竟学这块的,还是有点敏感:擦,会不会是这个人白天去上班,晚上回来宿舍,就开始限制我们的网速啊?


你不犯我,相安无事,你若范我,我必搞你。(年轻人还是有点浮躁啊....)


行,开干吧,多想没用。然后便拿出了 P2P 终结者(忘了当时用什么软件了,不过八九不离十)一扫描,想探探网络究竟。


万万没想到啊,居然遇到老司机了,人家局域网权限比我还高(很多局域网流控软件都有权限的概念,若同一个局域网同时有多个使用这个流控软件,则权限高的优先控制,其他人的软件会自动退出)。


网络扫描进行一半,就提示"局域网有多人使用,由于你权限较低暂停退出"这样的提示,这样一来,就验证了我的判断,这个内鬼应该是 H。自从他来了之后,这个网络就出了问题。


这栋楼的网络拓扑结构是这样的:

普通小白遇到这种情况,装个 ARP 防火墙,咬咬牙也就过去了。但是咱们学网络和安全的,遇到这种情况,感觉就好像被人骑在头上一样,那咋办呢?


作为一个理科男,做事情还是得按步骤走,不能被脾气牵着走,虽然当时已经非常生气了,但是基本定下来这个解决流程:

  • 第一马上给电脑安装防火墙,先脱离 H 的控制(当时电脑居然是裸奔的...)。

  • 第二想尽办法找到 H 的 IP 和 MAC 地址(很多小伙伴看到这里可能会想:直接上去楼上揍他一顿不就得了,还费什么劲找地址啊。

    这个有必要说明下:①我个头没人家大只。②人家要是问:你有证据吗,你取证了吗?所以,武力不能解决问题,但是技术能力可以。)

  • 第三想方设法拿到网络控制权,把他踢下去。


实操步骤

第一步:具体就不说了,也忘了当时装的什么安全软件了。


第二步:怎么找到攻击者的 IP 和 MAC 地址呢?


2010 年的安全软件,不像现在的 ARP 防火墙,能够主动告警,并且说明攻击次数和攻击源,所以还是需要自己折腾下。


熟练的打开电脑之前安装好了的 Wireshark,监听自己电脑网卡的流量,设置流量过滤器(仅过滤 ARP 协议)。


不出意外,接下来就是一堆"带有节奏的 ARP 扫描包"(还记不记得之前章节说过的,ARP 攻击一般会涉及到持续的内网扫描和欺骗攻击)。


当时收到的数据包大概这样的:

通过流量数据包分析,很快就确定了攻击者的 IP 和 MAC 地址。


这里要注意:虽然抓到了攻击者的 IP 和 MAC 地址。但是,我们还是没法实锤的证明:攻击者就是 H。


这个攻击者是不是真的 H 啊?怎么确定就是这个人干的呢?如何把虚拟世界里的地址跟真实世界的人匹配起来?


接下来我便想到了一个方法:如果我们能先拿到网络的控制权,然后把攻击者给踢下去直接断网,同时保证其他人网络连通;然后,谁要是下去跟房东沟通反馈不能上网,不就可以基本断定这个人就是攻击者?  说白了,就是"谁叫谁小狗"......


到了计划的第三步:如何拿到整个网络的控制权?这里就没走的那么顺畅了。


现在的实际情况是:我和攻击者同时开启局域网流控软件,而是我被踢下来了,因为我权限低一些。


当时的第一个想法是:我换一个流控软件不就得了?这样我不跟你拼这个软件的权限。但是仔细想了想,即便换一个流控软件能用,但是顶多也就是打个平手,我控制不了你,你也控制不了我,但最终遭殃的还是其他普通小白,这个方法不能"斩草除根"啊。


怎么办呢?是不是只能跟他打个平手。在这里卡了很久但又心有不甘,然后到了大半夜了突然顿悟:擦,为什么要跟他"限来限去"呢,直接上整栋楼的出口路由器,把他踢出去不就得了?


路由器(应该是 TP-LINK)就在一楼楼梯口,然后其他楼层加一个 Hub 级联上去,所以大家都在一个网络里面。


但问题是没有路由器的后台登录密码,怎么解决呢?抱着侥幸的心理,查看电脑网关地址,然后浏览器输入网关地址,弹出了登录页面,尝试 admin/admin?不行,再尝试 admin/123456?还是不行。


就这样尝试了常见的十几二十个账号密码,都提示账号密码错误,看来运气不是很好。


既然这样的话,就只能拿出暴力破解软件跑几个词典看看,用 Hydra 挂着用户名和密码词典,慢慢的看着命令行输出,但输出结果基本都是 Failed。


所以,第二天晚上虽然发现了攻击者的 IP 和 MAC 地址信息,但是拿他没办法,只能先忍着。


到了第三天白天,脑子里想的都是如何登录这个路由器后台管理界面,尝试跑了几个词典都没法登录。


心里又在想:房东不应该会设置太复杂的密码啊,四五十岁的阿姨,完全不懂技术啊,网络应该也是叫人搞的,即便别人设置密码也应该给阿姨设置比较简单的让她好记的,方便后面维护之类的。


一想到这里,赶紧从柜子里掏出之前的租房合约和房东名片,然后把房东的手机号码、房东的姓名拼音等信息做成简单的密码词典,再重新跑一次,还没反应过来,就显示密码尝试成功:admin/房东手机号码。


万万没想到,以为只要 6 位或者 8 位的密码,居然是一个 11 位的手机号码,之前尝试的词典都是 8 位以内的。


接下来用浏览器访问路由器后台管理界面,进入主机列表,还没发现这个昨晚攻击者的 IP 地址上线。


等到了晚上七八点的时候,终于在路由器上发现这个 IP 地址,而且,Wireshark 同时也抓到了这个攻击者发起的扫描包。


看来是攻击者一回到宿舍,打开电脑,就直接挂着攻击软件,确实是个"惯犯"啊。好吧,看到这个情况,我直接在出口路由器上把这个 IP 和 MAC 地址禁用,看接下来发生什么。


果然,大概过了半个钟,有人从楼上下来,直接去一楼找房东阿姨去了,具体说什么这个不清楚,但是应该是询问是不是宽带欠费之类的导致不能上网。


过了一会,阿姨带着他上来二楼,然后敲门询问:你们二楼能不能上网啊?大家都陆续回答:可以啊、没问题啊。


与此同时,我已经确定了:眼前的这个人,H 就是攻击者!他大概没料到,自己已经控制了内网,怎么可能被踢掉之类呢。


阿姨也不知道怎么办,只能说明天看看吧。看着他无辜的眼神回楼上去了,我也觉得抓到内鬼也就算了,先把他解禁看看。然后"惯犯"又上线了,看来没有吃够苦头啊,当天晚上直接让他断网。


之后的几个晚上类似的情况慢慢少了,因为只要他一扫描发起攻击,我这边就断他网,然后隔 10 分钟或者半个钟看看他反应,就这样慢慢地把他制服了,整栋楼的网络也就逐渐恢复了平静。


ARP 防御总结

1.ARP 攻击非常低门槛,但是造成的影响却很大,包括断网攻击、流量被限、账号被盗等。


2.ARP 防御可以在网络端(网络设备)上部署,也可以在用户端(电脑/手机)上部署。


3.网络设备(例如交换机)部署 ARP 防御,通常需要用到 DAI(动态 ARP 监测)技术。


更加专业的局域网安全防御,还可能结合 DHCP 侦听、IP 源防护、端口安全、AAA、802.1X 等技术,这些专业的防御技术,是由网络运维和安全运维工程师来实施的。


4.用户端(电脑/手机)实施 ARP 防御,最好的方法就是不要随意接入陌生网络,并且安装 ARP 防火墙。当然,技术宅的话,可以采用"ARP 双向绑定"的方法,相对比较麻烦,但是也奏效。


5.作为一名有素养的网络/安全工程师,应该不作恶。但是如果遭受攻击,应该揪出内鬼并"优雅的还手",做一个网络警察,还普通用户一个干净的网络环境。


作者:陈鑫杰

编辑:陶家龙、孙淑娟

博客地址:http://chenxinjie.blog.51cto.com/7749507/1960336

有投稿、寻求报道意向技术人请联络 [email protected]


陈鑫杰

拼客学院院长

5 年网络/安全行业经历,专注网络/安全项目规划与部署 ;4 年 IT 教育创业经验,学员遍布国内一线互联网/安全/政企单位;51CTO 学院金牌讲师,总排名 Top10,100 万+在线学员;与本科院校合作编著《计算机网络实践教程 》(人民邮电出版);技术栈:CCIE、企业网/政务网/数据中心网、等级保护、渗透测试、Web 安全、WiFi 安全、SDN(软件定义网络)、Python/Django 开发等。


往期回顾

全球5000名的程序员和技术专家告诉你:2017什么工具最火?

成为技术大牛的秘诀都在8月的这十篇热门文章!

记一次惊心动魄的 DNS 缓存引发的惨案