深度好文 | 中间人攻击、ARP欺骗背后的原理及漏洞还原-程序员宅基地

作者 | 杨秀璋

来源 | 程序员宅基地

头图 | 付费下载自视觉中国

出品 | CSDN(ID:CSDNnews)

本文将详细讲解中间人攻击或ARP欺骗攻击,从ARP原理到局域网配置进行描述,重点是让您对ARP欺骗和网络投毒攻击有一定认识。真心希望这篇基础文章对你有所帮助,也欢迎大家讨论。

PS:本文参考了B站(千峰教育峰老师)、安全网站和参考文献中的文章,并结合自己的经验和实践进行撰写,也推荐大家阅读参考文献。

下载地址:

https://github.com/eastmountyxz/NetworkSecuritySelf-study

中间人攻击相关知识

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

注意:本文的实验绝对禁止在真实环境中去完成,作者将引用B站视频中虚拟机实验复现,未经授权的测试或攻击行为我们一律禁止。

实验目标:

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

实验环境:

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

  • 虚拟机软件:VMware V12.0版本

  • 三台虚拟机:Windows XP(模拟客户机)、Windows Server 2003(模拟WEB及FTP服务器)、Kali(模拟攻击机)

  • Web站点素材

  • Ettercap软件

漏洞简述:

中间人攻击究竟是如何利用别人的漏洞去攻击对方的呢?

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

基本流程:

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

  • 第一步是构建整个局域网,并且配置好IP地址且能相互通讯(ping通)。

  • 第二步是将Windows 2003系统作为服务器(现实中也可以将该系统设置为服务器),包括Web或FTP服务器;接着将Windows XP系统设置为客户机,需要账号和密码登录。

  • 第三步是搭建Kali攻击机,之前是客户机和服务器直接通讯,现在是客户机发送的信息流经Kali机,再传至服务器。由于经过中间人,Kali机就可以监听客户机和服务器的通讯内容,甚至篡改数据。

首先给大家普及下网络的基础知识。

网络基础:

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

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

回归到这个局域网,我们开3台虚拟机(Windows 2003、Windows XP、Kali系统),然后需要这三台虚拟机构建一个局域网。

ARP攻击浅析

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

1.VMware设置虚拟网络

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

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

接着我们桥接其他两个虚拟机。VMNet0是真实机的交换机,VMNet1-VMNet19是虚拟的交换机。

如果想要虚拟机能上网,则是将它桥接到VMNet0即可,如下图所示。

2.ARP协议原理

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

攻击和漏洞息息相关,如果不存在漏洞或漏洞被补上了,你就可能失败。因此,所有的攻击都不是百分之百成功的。如果你是白帽子,你的责任就是找到漏洞并补上。

大家面试的时候经常会被询问“ARP协议原理是什么呢”?

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

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

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

请问小杨知道小娜的MAC地址吗?答案是不知道。他只能知道IP地址,但无法知道其MAC地址。

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

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

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

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

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

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

ARP协议总结:

最终小娜收到了这个信息,ARP协议是已知IP,解析MAC地址。原理是:

(1) 发送ARP广播请求

(2) 发送ARP单播应答

3. ARP攻击漏洞分析

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

小杨此时问“谁是10.1.1.3”,小娜回答“我是10.1.1.3,我的MAC地址是CC”,而Eastmount也回答“我是10.1.1.3,我的MAC地址是BB”。

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

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

接着小杨再向“10.1.1.3”多次发送信息,但MAC地址写的是BB,你以为给小娜,其实发到攻击者Eastmount那里了,因为交换机只检测MAC地址。Eastmount通过工具拦截信息,如果发送的是账号和密码,它也能够捕获。

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

简单总结:

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

ARP攻击原理:

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

ARP欺骗实验

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

第一步,开启三台虚拟机(Win XP、Win 2003、Kali)。

打开虚拟机如下图所示:

比如Kali虚拟机:

这里作者使用“还原快照”,读者可以尝试自己配置环境。XP系统点击“还原快照”,点击“转到”即可。

2003系统选择服务器快照还原,FTP、WEB服务器。

第二步,配置IP地址。

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

配置IP地址需要选中“网上邻居”,再右键“属性”,点击“本地连接”右键“属性”。

设置IP地址如下“10.1.1.1”,子网掩码设置为“255.255.255.0”。

接着登录Windows 2003服务器。

登录Kali系统。

小技巧1:如果Kali窗口比较小,可以点击“查看”,选择“立即适应客户机”即可。

小技巧2:打开控制台Terminal,如果字体太小,可以尝试按Ctrl+Shift+"加号"变大。

在Kali系统中输入命令配置IP地址,eth表示网卡名称。

ifconfig eth0 10.1.1.2/24

然后尝试查看是否IP地址建立成功。Linux默认一直ping,如下图所示小杨是连接成功的。

ping 10.1.1.1

接着尝试连接小娜的电脑。

ping 10.1.1.3

到此,我们成功建立了如下图所示的虚拟局域网。

第三步,将Win2003搭建成WEB服务器和FTP服务器。

发布Web服务器的软件有apache,比如LAMP(Linux+Apache+MySQL+PHP)框架,还有IIS。这里使用微软的动态网站软件IIS搭建ASP网站。重点是这个动态网站需要账号和密码登录,我们可以截获这个账号和密码。

首先,点击“Internet信息服务管理器”。

可以发现这个IIS不仅可以发布网站,还可以发布FTP。

接着,我们尝试发布一个网站,先禁止默认网站。

假设需要发布下面这个ASP语言编写的网站。

右键“新建”->“网站”,然后选择搭建网站。

设置网站本机地址及80端口。

选择网站搭建所需的源文件。

网站访问权限勾选下列选项。

Windows 2003服务器网站发布成功之后,我们尝试是否其他计算机能访问该服务器的数据。

接着配置其访问的首页,默认一般是“index.html”,这里是“Index.asp”。

选择该网站,然后右键“属性”,点击“文档”,显示如下图所示。

然后添加主页“Index.asp”。

选择“Web服务扩展”,找到“Active Server Pages”动态网页,右键“允许”。这样整个服务器的ASP网站配置成功。

Windows XP系统直接访问“10.1.1.3”,显示成功。

一般的管理系统都有后台管理员,会有相应的管理员登录页面。我们实验的重点是获取访问该页面的管理员用户名和密码。

该示例网站的后台管理员登录页面为“Admin”文件夹下的“Admin_login.asp”网页。通常我们可以通过扫描工具,对路径进行暴库扫描。

显示如下图所示:http://10.1.1.3/admin/admin_login.asp

假设登录的信息如下所示:

但登录的时候却显示失败,因为服务器还需要配置。

由于管理员登录页面在Admin子文件夹下,需要开启相关的选项。右键“zhirui”点击“属性”,然后点击“主目录”中的“配置”。

配置中间“选项”中勾选上“启用父路径”即可。此时,该站点下的所有子目录文件均能访问。

后台管理员页面访问成功如下图所示。

第四步,验证Web及FTP服务是否可以访问。

配置FTP服务器类似,选择“默认FTP站点”,点击“属性”,然后可以在“主目录”中看到FTP默认的本地路径“C:\inetpub\ftproot”。

向该文件夹添加东西,可以直接访问,比如添加“x move.txt”。

此时打开XP电脑,输入“ftp://10.1.1.3”即可访问该文件。

但是它没有输入账号和密码就直接获取了,所以我们接着配置服务器,让其他人下载我们FTP内容时,需要输入账号和密码。回到Win2003服务器,右键“默认FTP站点”,点击“属性”,然后在“安全账户”中去掉“允许匿名连接”,设置成功之后,再次访问就需要账号和密码。

如下图所示:

这里再问一个问题,假设我让大家访问我的IP地址服务器,我能把我的管理员账号和密码给你们吗?不行,这样太危险了。所以在这里补充CMD的两个命令,非常重要的命令,并且是黑客必备的命令。

第五步,配置临时用户和密码。

net user

列出当前服务器上所有的用户,包括管理员。

net user a feigeshuai /add

增加用户a,且密码为feigeshuai,注意如果不存在a用户,则使用“/add”来增加新用户。

此时,我们可以看到a账户创建成功,并且将该信息发给员工使用。

输入用户名和密码即可登录FTP服务器。

第六步,开启ARP欺骗及Sniff嗅探功能。

Kali中包含了丰富的渗透和安全测试软件供大家使用。

我们接下来要使用的软件叫“Ettercap”。

该软件打开如下图所示,它不仅仅能ARP投毒,还能进行各种DNS投毒等。

点击“Sniff”第一个选项“Unified sniffing”。

选择网卡接口“eth0”。

选中网卡之后,开始点击“Host list”,列出所有主机。

再点击第三个按钮“Scan for hosts”扫描。

输出结果如下图所示,包括“10.1.1.1”和“10.1.1.3”。接下来我要在它们两个之间做中间人,怎么做呢?

选择第一个,添加目标1“Add to Target 1”;再选择第二个,添加目标2“Add to Target 2”。

再点击“Mitm”->“ARP poisoning”,并且勾选“Sniff remote connections”,此时就建立了ARP投毒,把10.1.1.1和10.1.1.3欺骗,并且开始数据拦截。

接着,我们打开Win XP系统,在CMD中输入“arp -a”,该命令是查看ARP缓存表,如下图所示。可以看到,在10.1.1.1主机上,发现10.1.1.2和10.1.1.3的MAC地址都是“52-81”,所以基本能确定这个人是坏蛋,说明已经被欺骗了。

接着来测试FTP,在XP系统中访问FTP服务器,然后输入用户名“a”、密码“feigeshuai”。并且能成功访问,说明ARP攻击并没有影响正常通讯。

再来看Kali,用户名和密码被成功获取。同时说明FTP协议默认传输数据没有加密,是明文传输。显示两次是因为FTP是核对-验证机制,确认之后会再发送一遍。

同样,我们在XP系统中打开浏览器,输入相关信息。

抓取的信息如下,用户名“admin”、密码“123456”,同时包括认证码和code。

但如果别人的密码是加密的话,我们还需要进行解密,比如HTTPS。

补充,如果你的信息没有获取成功,则可能是:

  1. IP没有配置正确

  2. 临时配置PI地址失效,尝试“reboot”重启,在输入“ifconfig”配置

原文链接:

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

【End】

《原力计划【第二季】- 学习力挑战》正式开始!
即日起至 3月21日,千万流量支持原创作者,更有专属【勋章】等你来挑战

推荐阅读 

上线两个月冲上 App Store 免费榜 Top 2,腾讯会议有什么独到之处?

谁说国产编译器没救了?这个 C/C++ 和 JavaScript 编译器来了 | 程序人生 2020

用于小型图形挖掘研究的瑞士军刀:空手道俱乐部的图表学习Python库

罗永浩欲直播带货,京东说可以帮忙联系

MySQL数据库无完整备份删库,除了跑路还能怎么办?

Libra新编程语言 :Move 的所有权模型灵感来源原来是它……

你点的每一个在看,我认真当成了喜欢

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/csdnnews/article/details/104809986

智能推荐

什么是内部类?成员内部类、静态内部类、局部内部类和匿名内部类的区别及作用?_成员内部类和局部内部类的区别-程序员宅基地

文章浏览阅读3.4k次,点赞8次,收藏42次。一、什么是内部类?or 内部类的概念内部类是定义在另一个类中的类;下面类TestB是类TestA的内部类。即内部类对象引用了实例化该内部对象的外围类对象。public class TestA{ class TestB {}}二、 为什么需要内部类?or 内部类有什么作用?1、 内部类方法可以访问该类定义所在的作用域中的数据,包括私有数据。2、内部类可以对同一个包中的其他类隐藏起来。3、 当想要定义一个回调函数且不想编写大量代码时,使用匿名内部类比较便捷。三、 内部类的分类成员内部_成员内部类和局部内部类的区别

分布式系统_分布式系统运维工具-程序员宅基地

文章浏览阅读118次。分布式系统要求拆分分布式思想的实质搭配要求分布式系统要求按照某些特定的规则将项目进行拆分。如果将一个项目的所有模板功能都写到一起,当某个模块出现问题时将直接导致整个服务器出现问题。拆分按照业务拆分为不同的服务器,有效的降低系统架构的耦合性在业务拆分的基础上可按照代码层级进行拆分(view、controller、service、pojo)分布式思想的实质分布式思想的实质是为了系统的..._分布式系统运维工具

用Exce分析l数据极简入门_exce l趋势分析数据量-程序员宅基地

文章浏览阅读174次。1.数据源准备2.数据处理step1:数据表处理应用函数:①VLOOKUP函数; ② CONCATENATE函数终表:step2:数据透视表统计分析(1) 透视表汇总不同渠道用户数, 金额(2)透视表汇总不同日期购买用户数,金额(3)透视表汇总不同用户购买订单数,金额step3:讲第二步结果可视化, 比如, 柱形图(1)不同渠道用户数, 金额(2)不同日期..._exce l趋势分析数据量

宁盾堡垒机双因素认证方案_horizon宁盾双因素配置-程序员宅基地

文章浏览阅读3.3k次。堡垒机可以为企业实现服务器、网络设备、数据库、安全设备等的集中管控和安全可靠运行,帮助IT运维人员提高工作效率。通俗来说,就是用来控制哪些人可以登录哪些资产(事先防范和事中控制),以及录像记录登录资产后做了什么事情(事后溯源)。由于堡垒机内部保存着企业所有的设备资产和权限关系,是企业内部信息安全的重要一环。但目前出现的以下问题产生了很大安全隐患:密码设置过于简单,容易被暴力破解;为方便记忆,设置统一的密码,一旦单点被破,极易引发全面危机。在单一的静态密码验证机制下,登录密码是堡垒机安全的唯一_horizon宁盾双因素配置

谷歌浏览器安装(Win、Linux、离线安装)_chrome linux debian离线安装依赖-程序员宅基地

文章浏览阅读7.7k次,点赞4次,收藏16次。Chrome作为一款挺不错的浏览器,其有着诸多的优良特性,并且支持跨平台。其支持(Windows、Linux、Mac OS X、BSD、Android),在绝大多数情况下,其的安装都很简单,但有时会由于网络原因,无法安装,所以在这里总结下Chrome的安装。Windows下的安装:在线安装:离线安装:Linux下的安装:在线安装:离线安装:..._chrome linux debian离线安装依赖

烤仔TVの尚书房 | 逃离北上广?不如押宝越南“北上广”-程序员宅基地

文章浏览阅读153次。中国发达城市榜单每天都在刷新,但无非是北上广轮流坐庄。北京拥有最顶尖的文化资源,上海是“摩登”的国际化大都市,广州是活力四射的千年商都。GDP和发展潜力是衡量城市的数字指...

随便推点

java spark的使用和配置_使用java调用spark注册进去的程序-程序员宅基地

文章浏览阅读3.3k次。前言spark在java使用比较少,多是scala的用法,我这里介绍一下我在项目中使用的代码配置详细算法的使用请点击我主页列表查看版本jar版本说明spark3.0.1scala2.12这个版本注意和spark版本对应,只是为了引jar包springboot版本2.3.2.RELEASEmaven<!-- spark --> <dependency> <gro_使用java调用spark注册进去的程序

汽车零部件开发工具巨头V公司全套bootloader中UDS协议栈源代码,自己完成底层外设驱动开发后,集成即可使用_uds协议栈 源代码-程序员宅基地

文章浏览阅读4.8k次。汽车零部件开发工具巨头V公司全套bootloader中UDS协议栈源代码,自己完成底层外设驱动开发后,集成即可使用,代码精简高效,大厂出品有量产保证。:139800617636213023darcy169_uds协议栈 源代码

AUTOSAR基础篇之OS(下)_autosar 定义了 5 种多核支持类型-程序员宅基地

文章浏览阅读4.6k次,点赞20次,收藏148次。AUTOSAR基础篇之OS(下)前言首先,请问大家几个小小的问题,你清楚:你知道多核OS在什么场景下使用吗?多核系统OS又是如何协同启动或者关闭的呢?AUTOSAR OS存在哪些功能安全等方面的要求呢?多核OS之间的启动关闭与单核相比又存在哪些异同呢?。。。。。。今天,我们来一起探索并回答这些问题。为了便于大家理解,以下是本文的主题大纲:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JCXrdI0k-1636287756923)(https://gite_autosar 定义了 5 种多核支持类型

VS报错无法打开自己写的头文件_vs2013打不开自己定义的头文件-程序员宅基地

文章浏览阅读2.2k次,点赞6次,收藏14次。原因:自己写的头文件没有被加入到方案的包含目录中去,无法被检索到,也就无法打开。将自己写的头文件都放入header files。然后在VS界面上,右键方案名,点击属性。将自己头文件夹的目录添加进去。_vs2013打不开自己定义的头文件

【Redis】Redis基础命令集详解_redis命令-程序员宅基地

文章浏览阅读3.3w次,点赞80次,收藏342次。此时,可以将系统中所有用户的 Session 数据全部保存到 Redis 中,用户在提交新的请求后,系统先从Redis 中查找相应的Session 数据,如果存在,则再进行相关操作,否则跳转到登录页面。此时,可以将系统中所有用户的 Session 数据全部保存到 Redis 中,用户在提交新的请求后,系统先从Redis 中查找相应的Session 数据,如果存在,则再进行相关操作,否则跳转到登录页面。当数据量很大时,count 的数量的指定可能会不起作用,Redis 会自动调整每次的遍历数目。_redis命令

URP渲染管线简介-程序员宅基地

文章浏览阅读449次,点赞3次,收藏3次。URP的设计目标是在保持高性能的同时,提供更多的渲染功能和自定义选项。与普通项目相比,会多出Presets文件夹,里面包含着一些设置,包括本色,声音,法线,贴图等设置。全局只有主光源和附加光源,主光源只支持平行光,附加光源数量有限制,主光源和附加光源在一次Pass中可以一起着色。URP:全局只有主光源和附加光源,主光源只支持平行光,附加光源数量有限制,一次Pass可以计算多个光源。可编程渲染管线:渲染策略是可以供程序员定制的,可以定制的有:光照计算和光源,深度测试,摄像机光照烘焙,后期处理策略等等。_urp渲染管线