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

[db:作者] 2022 年 1 月 8 日10:52:28
评论
摘要

[db:摘要]

如何进行有效的 ARP 防御?作为普通用户怎么防御?作为网络/安全管理员又怎么防御?有哪些 ARP 防御软件?如果被 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 防御可以在网络设备上实现,也可以在用户端实现,更可以在网络设备和用户端同时实现。

接下来,我们先来了解下网络设备(例如这里的交换机)的防御技术。被ARP攻击了,如何揪出”内鬼”,并”优雅的还手”?

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

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

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

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

交换机记录每个接口对应的 IP 地址和 MAC,即 port<->mac<->ip,生成 DAI 检测表。

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

被ARP攻击了,如何揪出”内鬼”,并”优雅的还手”?
我们知道,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 防火墙做安全防御,很多普通用户甚至“以电脑裸奔为豪,以骂安全厂商为荣”,这是对技术的严重藐视,对自己隐私的不负责任。

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

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

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

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

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

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

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

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

什么是”ARP 双向绑定”呢?
被ARP攻击了,如何揪出”内鬼”,并”优雅的还手”?
从上图可以看到,PC1 和 PC2 通信双方都静态绑定对方的 IP 和 MAC 映射,即便收到 ARP 欺骗包,由于静态绑定的 ARP 映射条目优先级高于动态学习到的,所以可以保证不被欺骗。

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

以下面的家庭 WiFi 网络为例:
被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 双向绑定。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

这栋楼的网络拓扑结构是这样的:
被ARP攻击了,如何揪出”内鬼”,并”优雅的还手”?
普通小白遇到这种情况,装个 ARP 防火墙,咬咬牙也就过去了。但是咱们学网络和安全的,遇到这种情况,感觉就好像被人骑在头上一样,那咋办呢?

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

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

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

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

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

实操步骤

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

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

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

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

不出意外,接下来就是一堆”带有节奏的 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.作为一名有素养的网络/安全工程师,应该不作恶。但是如果遭受攻击,应该揪出内鬼并”优雅的还手”,做一个网络警察,还普通用户一个干净的网络环境。

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin
[db:作者]
  • 本文由 发表于 2022 年 1 月 8 日10:52:28
  • 转载请务必保留本文链接:https://jiang-cheng.com/the-internet-journal/331.html
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: