1   1  /  1  页   跳转

[讲义] [梅罗教程]ARP欺骗

[梅罗教程]ARP欺骗

为了在短时间内使各位有个稍微系统的认识,那么我们先从2个基础知识开始说,其中由于本人的知识有限,有出入的地方请大家原谅:

1.
OSI
参考模型(OSI/RM)的全称是开放系统互连参考模型(Open System Interconnection Reference ModelOSI/RM),它是由国际标准化组织(International Standard OrganizationISO)提出的一个网络系统互连模型。


 附件: 您所在的用户组无法下载或查看附件
那么通过下面这个图来理解一下什么是包,为了方便大家理解下一个基础知识点ARP包,那么我们就来简单说说各层的功能,以及包是怎么封装的, 2个计算机之间的信息和数据通过包交换和传输,请看下面的图:


 附件: 您所在的用户组无法下载或查看附件

我们再大概了解一下各层的功能以及他们用的协议:

1、物理层(Physical Layer
  物理层规定了激活、维持、关闭通信端点之间的机械特性、电气特性、功能特性以及过程特性。该层为上层协议提供了一个传输数据的物理媒体。
  在这一层,数据的单位称为比特(bit)。
  属于物理层定义的典型规范代表包括:EIA/TIA RS-232EIA/TIA RS-449V.35RJ-45等。
  2、数据链路层(Data Link Layer
  数据链路层在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。
  在这一层,数据的单位称为帧(frame)。
  数据链路层协议的代表包括:SDLCHDLCPPPSTP、帧中继等。
  3、网络层(Network Layer)
    网络层负责对子网间的数据包进行路由选择。此外,网络层还可以实现拥塞控制、网际互连等功能。
  在这一层,数据的单位称为数据包(packet)。
  网络层协议的代表包括:IPIPXRIPOSPF等。
  4、传输层(Transport Layer
  传输层是第一个端到端,即主机到主机的层次。传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输。此外,传输层还要处理端到端的差错控制和流量控制问题。
  在这一层,数据的单位称为数据段(segment)。
  传输层协议的代表包括:TCPUDPSPX等。
  5、会话层(Session Layer
  会话层管理主机之间的会话进程,即负责建立、管理、终止进程之间的会话。会话层还利用在数据中插入校验点来实现数据的同步。
  会话层协议的代表包括:NetBIOSZIPAppleTalk区域信息协议)等。
  6、表示层(Presentation Layer
  表示层对上层数据或信息进行变换以保证一个主机应用层信息可以被另一个主机的应用程序理解。表示层的数据转换包括数据的加密、压缩、格式转换等。
  表示层协议的代表包括:ASCIIASN.1JPEGMPEG等。
  7、应用层(Application Layer
  应用层为操作系统或网络应用程序提供访问网络服务的接口。
  应用层协议的代表包括:TelnetFTPHTTPSNMP等。



OSI
参考模型中,当一台主机需要传送用户的数据(DATA)时,数据首先通过应用层的接口进入应用层。在应用层,用户的数据被加上应用层的报头(Application HeaderAH),形成应用层协议数据单元(Protocol Data UnitPDU),然后被递交到下一层-表示层。
  表示层并不"关心"上层-应用层的数据格式而是把整个应用层递交的数据包看成是一个整体进行封装,即加上表示层的报头(Presentation HeaderPH)。然后,递交到下层-会话层。
  同样,会话层、传输层、网络层、数据链路层也都要分别给上层递交下来的数据加上自己的报头。它们是:会话层报头(Session HeaderSH)、传输层报头(Transport HeaderTH)、网络层报头(Network HeaderNH)和数据链路层报头(Data link HeaderDH)。其中,数据链路层还要给网络层递交的数据加上数据链路层报尾(Data link TerminationDT)形成最终的一帧数据。
  当一帧数据通过物理层传送到目标主机的物理层时,该主机的物理层把它递交到上层-数据链路层。数据链路层负责去掉数据帧的帧头部DH和尾部DT(同时还进行数据校验)。如果数据没有出错,则递交到上层-网络层。
  同样,网络层、传输层、会话层、表示层、应用层也要做类似的工作。最终,原始数据被递交到目标主机的具体应用程序中。


通过这里,我们可以看出,我们2台计算机之间的信息和数据交流是以下的过程,首先由上次的应用程序决定需要发送的数据(我们需要着重了解的是传输层,网络层,数据链路层这3层,因为数据在网络的传输主要是这3层在起作用),在这里我们可以根据TCP模型将OSI模型的后3层归结于应用层,这里的应用程序即是笼统意义上指的应用程序,关于后3层之间的关系,为了篇幅我们在这里不过多的讲述,请感兴趣的同学自行百度吧,我们只抽象出一个应用程序的概念即可。我们知道一个程序在系统里是通过一个或多个进程来体现的,我们抽象出的应用层决定了将要发送的数据,并且发起了建立会话的要求,并已经加好了后3层各层的头,于是数据被指明利用传输层的某种协议(比如TCP协议),于是被加上TCP头,变成数据段,再被网络层封装成IP包,交到数据链路层封装成帧,交到物理层发送。

2.
ARP协议:
我们所说的ARP欺骗实际上是根据ARP协议的原理来进行的,具体呢也是利用了ARP协议。 

ARPAddress Resolution Protocol,地址解析协议)是一个位于TCP/IP协议栈中的低层协议,负责将某个IP地址解析成对应的MAC地址。ARP协议和ICMP协议是常用的TCP/IP底层协议。我们通常将他归结于网络层。
首先我们来了解两个地址:
1.
IP地址,这个大家都应该很熟悉;
2.
MAC(Media Access Control)地址:或称为 MAC位址、硬件位址,用来定义网络设备的位置。在OSI模型中,第三层网络负责IP地址,第二层数据链路层则负责 MAC位址。因此一个主机会有一个IP地址,而每个网络位置会有一个专属于它的MAC位址。所以主机,路由器,交换机都会有自己的MAC地址,因为他们都是标准的网络设备,而我们说的主机的MAC地址通常指的是主机里网卡的MAC地址,这在网卡出厂时已经设定好了且不可更改。

 附件: 您所在的用户组无法下载或查看附件





用户系统信息:Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 3.5.21022; MAXTHON 2.0)
本帖被评分 1 次
最后编辑梅罗 最后编辑于 2010-02-04 18:00:35
天地间那一抹不灭的流光 即我
分享到:
gototop
 

回复:[梅罗教程]ARP欺骗

那么什么时候要用到ARP协议呢,我们知道,当一台新的计算机AIP地址为192.168.1.2)加入以太网并要和另外一台计算机BIP地址为192.168.1.4
)进行通讯时,它怎么知道另外一台的位置呢,这时候ARP协议就有用处了,这个时候主机A会先检查其ARP缓存内是否有主机BMAC地址。如果没有,主机A会发送一个ARP请求广播包(即向网内所有主机发送),此包内包含着其欲与之通信的主机的IP地址,也就是主机BIP地址(192.168.1.4)。目标MAC地址是“FF.FF.FF.FF.FF.FF”,这表示向同一网段内的所有主机发出这样的询问:“192.168.1.4MAC地址是什么?网络上其他主机并不响应ARP询问,只有主机B接收到这个帧时,才向主机A做出这样的回应:“IP192.168.1.4的主机BMAC地址是00-aa-00-62-c6-09”并更新自己的ARP缓存,也就是同时将主机AIP地址/MAC地址对保存起来,以供后面使用。主机A在得到主机BMAC地址后,就可以与主机B通信了。同时,主机A也将主机BIP地址/MAC地址对保存在自己的ARP缓存内。



3.ARP欺骗:
          说了这么多,我们终于可以说到哦ARP欺骗了,呼。

ARP
欺骗其实就是利用ARP协议向网关虚构一个IP地址和MAC的关系(虚构地址之后就欺骗了网关),导致某台计算机无法上网或者接受数据。一般分为两种情况,通过以下的图梅罗来详细说明它们各自的情况:

 附件: 您所在的用户组无法下载或查看附件




        第一种ARP欺骗的原理是——截获网关数据。它通知路由器一系列错误的内网MAC地址,并按照一定的频率不断进行,使真实的地址信息无法通过更新保存在路由器中(路由器的路由表刷新时间是有间隔的,各厂商的不同),结果路由器的所有数据只能发送给错误的MAC地址,造成正常PC无法收到信息,比如说,主机A(小明)不想让主机B(小丽)接受数据(就是讲义里的小明不想让小王和小丽说话),它不断的向路由器发送ARP包声明IP 192.168.1.3的主机B对应的MAC地址为00-23-ed-51-32(这个地址是虚构的和主机IP原来的MAC不同)这样外网主机F(小王)原本通过路由给主机B的信息其实就被传输到一个虚假的MAC,小丽就收不到信息了(邪恶的小明啊!)。
                  第二种ARP欺骗的原理是——伪造网关。它的原理是建立假网关,让被它欺骗的PC向假网关发数据,而不是通过正常的路由器途径上网,这是局域网木马常用的手段,还是以上图为例,假设主机B中了木马(小王:为什么受伤的总是我!),这个时候能它就会向局域网内别的主机发送ARP包声明IP192.168.1.1的路由(它是网关)MAC地址是00-aa-00-62-c6-09(其实就是把自己的MAC和网关的IP绑定然后大叫三声:我是网关,想上网的快来孝敬我!),这下局域里的其他主机就把数据包发到了主机B,但是由于他没有网关的功能(他是残疾只能呆在大院里),别的主机自然就上不了网了。
       
        那么我们来分析如何处理ARP欺骗,当然杜绝ARP欺骗当然是进行IP MAC双向绑定,但是绑定的权限需要受到保护,这个是我个人的补充;那么,遇见ARP欺骗怎么办呢,最简单的方法当然是关闭ARP发送源。关于这个源头如何判定,我们根据原理并参照论坛的这个例子来解释一下:

论坛问题地址http://bbs.ikaka.com/showtopic.aspx?page=end&topicid=8694034#10249187



 附件: 您所在的用户组无法下载或查看附件
        那么,从上面的理论来说,有可能是之前绑定静态规则的网关设备,即00-25-86-83-ED-4E中马,则它会发送IP192.168.1.1虚假MAC地址为00-13-D4-CB-A3-D3ARP欺骗包。当然,也会有人问那么难道不可能是MAC00-13-D4-CB-A3-D3中马并伪造网关呢,我认为也是可能的,当然从ARP欺骗包的MAC多半是虚构的情况,我们应该当先从下面的MAC开始查起,因为之前的静态规则我们可以肯定00-25-86-83-ED-4E这台设备在网络中是存在的,而00-13-D4-CB-A3-D3有可能则是局域里根本不存在的设备,当然我们排除了00-25-86-83-ED-4E的嫌疑之后,我们仍然需要排查MAC00-13-D4-CB-A3-D3的设备。

        最后呢,ARP欺骗实际是不能被完全防止和解决的,只要还用ARP协议一天,就会有ARP欺骗~
                在文章的最后梅罗谢谢大家的捧场,希望对大家有用,祝大家新年快乐~

最后编辑梅罗 最后编辑于 2010-02-04 18:10:35
天地间那一抹不灭的流光 即我
gototop
 

回复:[梅罗教程]ARP欺骗

更新完了 大家将就着看吧 这个排版很有问题  要保存的可以问我索取DOC文档 图是原创 转载不要打水印
最后编辑梅罗 最后编辑于 2010-02-04 18:37:16
天地间那一抹不灭的流光 即我
gototop
 

回复 6F Luke8 的帖子

答1:MAC地址是烧录在Network Interface Card(网卡,NIC)里,网卡的物理地址通常是由网卡生产厂家烧入网卡的EPROM(一种闪存芯片,通常可以通过程序擦写),它存储的是传输数据时真正赖以标识发出数据的电脑和接收数据的主机的地址。也就是说,在网络底层的物理传输过程中,是通过物理地址来识别主机的,它一般也是全球唯一的。我估计你是把系统分配的硬件地址和MAC地址的概念搞混了
答2:是表示2台计算机之间是如何传输信息的
天地间那一抹不灭的流光 即我
gototop
 

回复 12F jks_风 的帖子

恩 其实双向绑定网关就真的可以杜绝ARP了吗?我个人的回答也是NO,我认为这个只是简单的解决ARP欺骗的一个比较好的方法,伪造MAC当然是可以的,至少现在可以通过简单的修改注册表或者通过或一些制造网卡厂商的专用修改软件就可以修改。但是其实这不是关键,我的文章里一直强调的是ARP欺骗的实质其实是修改IP和某个MAC的对应关系,而我们知道,2个集合之间的元素可以存在很多种映射,IP MAC双向绑定,即是说从左边的IP来说绑定了右边的MAC,而对右边的MAC来说绑定了左边的IP,这样一个一一映射就确定了,从而他们的对应关系就确定了,单方面伪造他们之前的关系是行不通的,IP只认对应的MAC,而MAC只认对应的IP,杜绝了单方面的仿冒,我不知道这么说你是否能理解》?
而ARP欺骗和内网嗅探技术的关系,可以简单的理解为内网嗅探可以通过ARP欺骗技术实现而达到嗅探目的,也可以利用一些其它的技术达到嗅探的目的而不依赖arp欺骗。比如通过伪造MAC和PORT的关系同样可以达到内网嗅探的目的。

恩 “请不要有那么多的属于” 没看懂
最后编辑梅罗 最后编辑于 2010-02-06 18:30:50
天地间那一抹不灭的流光 即我
gototop
 

回复 14F jks_风 的帖子

你看 如果没绑定或者绑定一端的时候我们可以这样做,假设A端IP是110,MAC是AB,B端IP是120,MAC是AC,那么为了达到我们的目的,那么如果A只绑定了B的120和原始MAC AC,这叫单方面绑定,但是我们发送声明120对应的MAC地址修改的时候,由于与预先绑定的MAC不符,然后我们可以判定是个ARP欺骗不理会,但是由于B端没有绑定A的IP和MAC,我们可以发包欺骗B端,而双向绑定就不存在这个漏洞了。

而MAC地址是先调入内存中后传输出去的,所以,我们可以通过修改其MAC地址来打破这些限制。

我们可以通过修改注册表的方法来实现修改网卡MAC地址。注册表中HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}子键,在子键下的0000,0001,0002等分支中查找DriverDesc(如果你有一块以上的网卡,就有0001,0002……在这里保存了有关你的网卡的信息,其中的DriverDesc的内容就是你的网卡的信息描述,比如我的无线网卡就是Intel(R) PRO/Wireless 3945ABG Network Connection)。我们可以通过查找这个键值来了解现在使用的网卡是在0000还是在0001(我的在0011)分支下。

下面以我的笔记本位列,简述MAC地址的修改步骤:

1. 在运行中输入:regedit命令,进入注册表。

在注册表中找到下面位置:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}

2. 通过查找诸如0000,0001分支中的DriverDesc的键值来查看现有网卡是在哪个分支下。(我的是在0011下)

3. 在0011子键下添加一个字符串,命名为“NetworkAddress”,键值为修改后的MAC地址,要求为连续的12个16进制数。

4. 然后在“0011”子键下的NDI\params中新建一项名为NetworkAddress的子键,在该子键下添加名为“default”的字符串,键值为修改后的MAC地址。

5. 在NetworkAddress的子键下继续建立名为“ParamDesc”的字符串,其作用为指定NetworkAddress的描述,其值可为“MAC Address”。这样以后打开网络邻居的“属性”,双击相应的网卡就会发现有一个“高级”设置,其下存在MAC Address的选项,它就是你在注册表中加入的新项NetworkAddress,以后只要在此修改MAC地址就可以了。

上面的好像是针对XP/2000系统的。

然后MAC和端口的port的欺骗 你必须理解我上面说的信息的传输过程。。。
天地间那一抹不灭的流光 即我
gototop
 

回复 16F jks_风 的帖子

- - 我建议你看下这个帖子 虽然术语多但是对你很有好处
天地间那一抹不灭的流光 即我
gototop
 
1   1  /  1  页   跳转
页面顶部
Powered by Discuz!NT