解析中间人攻击(1/4)---ARP缓存中毒
本系列将讨论最常被使用的中间人攻击形式,包括ARP缓存中毒攻击(ARP Cache Poisoning)、DNS欺骗(DNS Spoofing)、HTTP会话劫持等。
导言
用于攻击个人以及企业的最常见的网络攻击方式就是中间人攻击(MITM)。作为一种主动窃听攻击方式,中间人攻击方式主要是通过与目标机器建立连接并在目标机器间传递信息来发动攻击。在这种情况下,用户会认为自己正在与另一名用户直接通信,而实际上,通过主机的通信流量正在对用户执行攻击。最终结果是,攻击主机不仅能截取重要信息,而且能够注入数据流来进一步控制受害用户。
在本系列文章中,我们将讨论最常被使用的中间人攻击形式,包括ARP缓存中毒攻击(ARP Cache Poisoning)、DNS欺骗(DNS Spoofing)、HTTP会话劫持等。在实际情况中,你会发现,大多数受害用户使用的都是windows系统,因此我们将详细分析运行不同版本的windows系统时中间人攻击的情况。
ARP缓存中毒
在本文中我们将主要探讨ARP缓存中毒,这也是现代中间人攻击中最早出现的攻击形式,ARP缓存中毒(有时也被称为ARP中毒路由)能够让与受害用户在相同子网的攻击者窃取用户的所有网络留恋。我们首先讨论这种攻击形式是因为,它是最容易执行的攻击形式,但也是最有效的攻击形式。
正常ARP通信
ARP协议的主要目的在于简化OSI模型第二层和第三层间地址的翻译。第二层(也就是数据链层)使用MAC地址,以便硬件设备可以在小范围内直接进行通信。第三层(也就是网络层)使用IP地址(最常见的形式)来创建连通世界各地用户的大规模网络。数据链层直接处理连接在一起的设备,而网络层处理那些直接以及间接连接的设备,每一层都有自己的地址形式,他们必须合作才能实现网络通信。正是由于这个原因,ARP与RFC826(以太网地址解析协议)一起被创建。
图1:ARP通信过程
ARP运作实际上是围绕两个数据包进行的:ARP请求和ARP回复。请求和回复的目的在于确定与特定IP地址相关的硬件MAC地址,这样流量才能够在网络上找到目的地。请求数据包被发送给网络段上的每台设备并发出信息“我的IP地址是XX.XX.XX.XX,我的MAC地址是XX:XX:XX:XX:XX:XX,我需要将信息发送给这个IP地址XX.XX.XX.XX,但是我不知道它的硬件地址,请这个IP地址将其MAC地址回复给我?”回复会以ARP回复数据包的形式,并回复说“你好,传递设备,我就是你要找的IP地址XX.XX.XX.XX,我的MAC地址是XX:XX:XX:XX:XX:XX”,收到回复后,传递设备会更新其ARP缓存表,然后设备就可以与另一台设备进行通信。
缓存中毒
ARP缓存中毒利用了ARP协议不安全的本质。ARP协议有别于其他协议,例如DNS协议可以配置为仅接受安全动态更新,而使用ARP的设备则可以接受任何时间的更新。这意味着任何机器都可以向另一台主机发送ARP回复数据包,并迫使主机更新其ARP缓存。发送ARP回复而没有生成请求时,此时被成为无效ARP。当恶意攻击者以这种方式放置一些无效ARP时,用户就会认为他们正在与另一用户通信,而实际上是与窃取信息的攻击者通信。
图2: ARP缓存中毒截取通信
使用Cain & Abel工具
让我们从具体情况来分析,攻击者会使用几种不同的工具执行必要的步骤以毒化受害者的ARP缓存,我们将使用常见的安全工具Cain & Abel来模拟缓存中毒攻击。Cain & Abel是非常有效的安全工具,并且安装过程也十分简单。
在开始模拟缓存中毒前,你需要收集一些信息,包括你此次模拟攻击希望使用的网络接口,以及两个通信受害者IP地址。
当你第一次打开Cain & Abel工具时,你会发现在窗口上方有很多选项卡,我们只需要使用Sniffer选项,当你点击此按钮,你会看到一个空表。为了完成此表格,你需要激活该程序的内置嗅探器并且扫描你的网络。
图3: Cain&Abel工具的Sniffer选项
点击工具栏上的第二个图标,类似于网络卡。首次操作时,会要求你选择你希望嗅探的接口,这个接口应该是连接到你将要执行ARP缓存中毒攻击的接口。选择好接口后,点击确认来激活Cain & Abel的内置嗅探器。此时,工具栏图标会变暗。为网络中有效主机建立列表,你需要点击类似+符号的主要工具栏,点击确认。
图4:扫描主机
之前的空表格现在以及填满了所有连接网络上的主机名,以及MAC地址、IP地址以及供应商验证信息,这些是发动ARP缓存中毒攻击的有利信息。
在程序窗口的地步,你会看到一组标签,这些标签将引领你到嗅探器的其他窗口。现在你已经建立了主机列表,你需要从ARP标签开始,点击标签以切换到ARP窗口。
打开ARP窗口后,你会看到两个空表格:上表和下表。设置好这两个表格后,上表会显示ARP缓存中毒涉及的设备,下表会显示中毒机器间的所有通信。
点击程序的标准工具栏上的+符号的图标以继续设置ARP中毒,显示的窗口有并排两个选择列,在左侧,你会看到所有有效主机的列表。点击其中一个IP地址,你会看到,右边窗口显示的是网络中所有主机,而没有显示你所选择的IP地址。在右边窗口,点击另一个受害者的IP地址,然后点击确认。
图5:选择缓存中毒的攻击主机
这些设备的IP地址现在都被列在主要程序窗口的上表中,为了完成这个操作,请点击标准工具栏的黄黑色放射符号。这样将激活Cain & Abel的ARP缓存中毒功能并允许系统成为受害机器间所有通信的中间人。如果你很好奇背后发生的情况,可以安装wireshark并窃听接口,你很快会看到受害电脑间的通信。
图6:ARP通信注射
完成以上操作后,只要再次点击黄黑色发射符号就可以停止ARP缓存中毒。
防御ARP缓存中毒
从防御者的角度来看ARP缓存中毒攻击似乎处于不利的位置,ARP进程在后台进行,我们很难控制。并没有万能的解决方案,你可以采用主动和被动的立场来考虑ARP缓存中毒。
保护局域网安全
ARP缓存中毒的确是截取位于相同局域网的两台主机间的通信的可行的攻击技术,但只有当网络上的本地设备比破坏,受信任用户有恶意企图,或者某用户试图将不可信设备接入网络时,ARP缓存中毒攻击才可能造成真正的威胁。尽管我们往往将主要精力集中在保护网络外围安全上,但抵御内部威胁以及确保内部安全绝对可以更好的确保系统安全。
硬编码ARP缓存
抵御ARP请求和回复的动态本质所带来的威胁的方法是使这个进程不那么动态,这是因为windows系统主机允许其他静态表项进入ARP缓存,你可以通过打开命令提示符并输入arp-a命令来查看windows系统的ARP缓存。
图7:查看ARP缓存
可以通过使用这个命令arp –s 来添加表项到这个列表。
如果你的网络配置并不是经常变动,做静态ARP表项的列表并通过自动化脚本将表项部署到客户端是完全可行的。这可以确保设备始终依赖本地ARP缓存,而不是依赖ARP请求和回复。
使用第三方程序监测ARP通信
抵御ARP缓存中毒攻击的另一种方法是被动方法,监控主机的网络流量,这可以通过入侵检测系统(如Snort)或者其他监测工具(如xARP)来进行监控流量。对于一台主机而言,这可能是很简单的事情,但是对于整个网络而言就不是那么简单了。
总结
ARP缓存中毒是中间人攻击中最有效的攻击方式,因为它非常容易执行,对于现代网络是巨大的威胁,并且这种攻击方式很难检测和防御。
备注:转自IT专家网