中间人攻击和ARP欺骗原理


声明:文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担!

[toc]

本文将利用一个实验来详细讲解中间人攻击或ARP欺骗攻击,从ARP原理到局域网配置进行描述,重点是能够对ARP欺骗和网络投毒攻击有一定认识。

一.ARP中间人攻击基础知识

中间人攻击(Man-in-the-Middle Attack,简称“MITM攻击”)是一种间接的入侵攻击,这种攻击模式是通过各种技术手段将受入侵者控制的一台计算机虚拟放置在网络连接中的两台通信计算机之间,这台计算机就称为“中间人”。中间人攻击非常令人头疼,比较难避免,我们先分享基础知识及漏洞原理,再复现该攻击。

实验目标:

使用Kali系统模拟攻击者,利用中间人的攻击手段来获取Web服务器的用户名与密码。换句话说,通过该攻击窃取别人的账号和密码

实验环境:

这次实验会开三台虚拟机,一台XP系统、一台2003系统、一台Kali攻击机。

  • 虚拟机软件:VMware V12.0版本
  • 三台虚拟机:Windows 7(模拟客户机)、Windows Server 2008(模拟WEB服务器)、Kali(模拟攻击机)
  • Web站点素材
  • Ettercap工具

漏洞简述:

中间人攻击究竟是如何利用别人的漏洞去攻击对方的呢?
中间人攻击中有两个受害者,中间人对他俩实施攻击,攻击结果是甲和乙的传输内容,它们都需要经过中间人,但是两人(甲和乙)却不知道。聊天内容被中间人截获,如果截获信息有用户名和密码,危害就会更大,而且中间人攻击不会损害甲方和乙方的通讯。

基本流程:

构建的拓扑图如下所示,首先开3台虚拟机,然后有1台交换机,这3台虚拟机都连接在这台交换机上,共同构成一个虚拟的局域网,来进行这个实验。我们的实验基本流程如下:

  • 第一步是构建整个局域网,并且配置好IP地址且能相互通讯(ping通)。
  • 第二步是将Windows Server 2008系统作为Web服务器;接着将Windows 7系统设置为客户机,需要账号和密码登录。
  • 第三步是搭建Kali攻击机,之前是客户机和服务器直接通讯,现在是客户机发送的信息流经Kali机,再传至服务器。由于经过中间人,Kali机就可以监听客户机和服务器的通讯内容,甚至篡改数据。

首先普及一下关于网络的基础知识。

网络基础:

交换机只能组建局域网。想让员工上网(连接外网),必须购买路由器(网络层);反过来,路由器没有组建局域网的能力,但它能让员工去联网。这里我们构建一个虚拟的内网通讯,所以不需要路由器,但需要交换机。如下图所示的局域网。

如果这个局域网想上网(连接外网)只需要像上图所示连个路由器或猫,再连接互联网即可。由于大家的电脑IP地址都在同一个网段,所以大家就能进行通讯。

回归到这个局域网,我们开3台虚拟机(Windows Server 2008、Windows 7、Kali攻击机),然后需要这三台虚拟机构建一个局域网。

二.ARP攻击浅析

原理和操作同样重要,接下来将讲解ARP攻击原理,也希望大家了解网络攻防背后的知识,更好地进行防御和保护。

1.VMware设置虚拟网络

VMware软件在安装时会在电脑上内嵌一个虚拟交换机,理解为虚拟网络。选择虚拟机,点击右键,然后点击“设置”进入“设置页面”。

点击“网络适配器”,选择自定义“特定虚拟网络”,比如选择“VMnet1”,点击确定后,此时相当于这台虚拟机连接到了VMnet1虚拟网络中,我们称之为桥接。

image-20201010182409437

接着我们桥接其他两个虚拟机。VMNet0是真实机的交换机,VMNet1-VMNet19是虚拟的交换机。如果想要虚拟机能上网,则是将它桥接到VMNet0即可。

2.ARP协议原理

中间人攻击是利用ARP协议的漏洞。

那么“ARP协议原理是什么呢”?

假设存在一个局域网,有三个人WHOAMI(通讯甲方)、攻击者、Bunny(通讯乙方),三个地址分别如下,并且都有一个MAC地址。由于MAC地址比较长,这里设置为AA、BB、CC。

假设WHOAMI需要给Bunny发一句话“你真漂亮”,TCP/IP五层协议处理流程如下。首先应用层会发一句话 “你真漂亮”,传输层指定端口号(源端口和末端口),网络层封装IP包头(原始IP和目标IP)。

那么现在这个信息能发出去了吗?不能,因为这个数据包现在只停留在网络层,还得往数据链路层处理并找到网卡,网卡会在数据包前封装一个帧头和帧尾,封装目标MAC地址和原始MAC地址。

那么请问WHOAMI知道Bunny的MAC地址吗?答案是不知道。他只能知道Bunny的IP地址(192.168.52.138),但无法知道其MAC地址。

为什么要知道Bunny的MAC地址呢?因为 交换机只会根据目标 MAC地址 来转发数据。交换机是链路层的设备,它不会检查数据,只会检查帧头,只认MAC地址,它存在一张MAC地址表(自动生成)。

现在WHOAMI不知道Bunny的MAC地址,他无法发送出去信息,他会先将这个信息在网卡中缓存起来。接下来在网络层中有个协议——ARP协议

ARP协议属于网络层协议,它会生成“我192.168.52.143,我的MAC地址是AA,谁是192.168.52.138,你的MAC地址是多少?”这么一句话。ARP协议在网络层封装这个信息之后,会将这句话 广播 出去,让所有人都收到这个信息。此时,WHOAMI的网卡会封装一个帧头,并设置为广播地址“FF”。

此时,交换机一看目标MAC地址是“FF”,然后它直接复制N份,向其他所有的端口发送数据。但攻击者收到这个消息时,它会自动丢弃这个包,因为目标IP地址是192.168.52.138,和我无关。

而Bunny呢?她会将目标MAC地址填上,她回复的时候如下图所示。ARP回应是单播,而不是广播,因为它知道是谁发过来的消息。填写地址“CC”之后,再单独将这个信息发送给小杨。

WHOAMI收到这个信息之后,喜出望外,没有第一时间把这个填写过来,而是先建立一个ARP缓存表。为什么要建立这个缓存表呢?因为我不是只发一句话,而是成千上万个帧。但如果长时间不通讯时,这个表就会消失。提示一句,该漏洞就存在这个ARP缓存表中

ARP协议总结:

最终Bunny收到了这个信息,可见,ARP协议是已知IP,解析MAC地址。原理是:
(1) 发送ARP 广播 请求
(2) 回复ARP 单播 应答

3.ARP攻击漏洞分析

接着我们开始讲解中间人攻击原理知识,该漏洞点在ARP缓存表这里。突然,攻击者站出来了,正常情况下攻击者的机器是不会反映的,但他的电脑上装了一个ARP攻击工具,它会向外发送 假的伪装的ARP信息

WHOAMI此时问“谁是192.168.52.138”,Bunny回答“我是192.168.52.138,我的MAC地址是CC”,而攻击者也回答“我是192.168.52.138,我的MAC地址是BB”。

请问谁说的是正确的呢?Bunny说的是正确的,而攻击者是冒充的。但是WHOAMI又会选哪个呢?ARP原理是后到达的被选,Bunny先到,ARP缓存表中写“CC”,而此时攻击者也到了,会瞬间 修改 为“BB”。所以说是最后到达的信息能被送达。

正常情况下Bunny只回复一次,而攻击者这个工具可以一秒钟回10次,而且每秒钟都回应,所以最后的结果是WHOAMI那个ARP缓存表中一定是BB。

接着WHOAMI再向 “192.168.52.138”(实则是 192.168.52.129 了) 多次发送信息,但MAC地址写的是BB,你以为给Bunny,其实发到攻击者那里了,因为交换机只检测(只认)MAC地址来转发数据。攻击者通过工具拦截信息,如果发送的是账号和密码,它也能够捕获。

但此时Bunny没有收到回应,攻击者为了避嫌,将帧头“BB”修改为了“CC”,再转发给小娜,小娜也作出相应的回应。最终导致WHOAMI以为“192.168.52.138”是BB,小娜以为“192.168.52.143”是BB。这样,攻击者作为中间人窃取信息,这也称之为——ARP欺骗攻击

简单总结:

该漏洞最大的问题是ARP协议每次使用后到达的,而不对每个应答作身份认证。换句话说,你没有办法检查这个应答的真伪,所以说你才使用最后达到的。这个协议开发出来很多年,为什么一直没有更新这个漏洞呢?因为ARP协议很难去验证哪个应答是真是假。ARP攻击也成为了企业最头疼的一种攻击之一。

ARP攻击关键原理:

攻击人通过发送虚假的ARP应答实现缓存投毒,而受害人没有办法进行身份真伪验证。

三.ARP欺骗实验

接着我们开始搭建环境并完成ARP欺骗实验。

第一步,开启三台虚拟机(Winows 7、Windows Server 2008、Kali)。

第二步,配置IP地址。

将三台虚拟机桥接到同一个虚拟网络中去。对三台虚拟机分别右键设置,点击“网络适配器”,选择“VMnet1”,将三台虚拟机都桥接到该虚拟网络“VMnet1”中,这样三台虚拟机就成功连成了同一个局域网。

然后经过测试,三台主机能够ping通。到此,我们成功建立了如下图所示的虚拟局域网。

第三步,将Windows Server 2008搭建成WEB服务器。

这里我们直接用phpstudy+dvwa靶场搭建了一个简单的web服务:

第四部,攻击机开启ARP欺骗及Sniff嗅探功能。

这里我们攻击者将要使用的是kali上面的“Ettercap”工具。

该工具不仅仅能ARP投毒,还能进行各种DNS投毒等等。

点击开启选项“Sniffing at startup”(启动时嗅探),然后选择网卡接口为“eth0”:

然后点击上面的“对勾”,进入如下页面,点击上面的下拉菜单,选择Hosts:

点击“Host list”,列出所有主机:

如果没有列出主机,我们也可以点击第三个按钮“Scan for hosts”扫描:

得到如上图所示的几台主机,包括我们的目标主机“192.168.52.128”和“192.168.52.138”。接下来我要在它们两个之间做中间人,怎么做呢?

再点击上面的“Mitm”,选择“ARP poisoning”,并且勾选“Sniff remote connections”后点击“OK”,此时就建立了ARP投毒,把192.168.52.128和192.168.52.138欺骗,并且开始数据拦截。

接着,我们打开Windows 7系统,在CMD中输入“arp -a”,该命令是查看ARP缓存表,如下图所示。可以看到,在Windows 7主机上,发现192.168.52.129和192.168.52.138的MAC地址都是“00-0c-29-c6-0a-6e”,所以基本能确定这个人是坏蛋,说明已经被欺骗了。

接着,在Windows 7系统中访问Web服务器,然后输入用户名“admin”、密码“password”:

如下图,能成功访问,说明ARP攻击并没有影响正常通讯:

再来看Kali,成功获取到了Windows 7用户的的用户名和密码:

参考:

https://blog.csdn.net/Eastmount/article/details/103898463


Author: WHOAMI
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint polocy. If reproduced, please indicate source WHOAMI !
评论
  TOC