随笔-17  评论-64  文章-79  trackbacks-1
作者:
   CSDN  VC/MFC 网络编程PiggyXP  ^_^
 
本篇目录:

    四。ARP包的游戏

      1 .   小伎俩

      2.    ARP欺骗的实现

      3.   基于ARP欺骗的监听原理  

 

四.ARP包的游戏

既然我们可以自己来填充数据包,那么来玩些 ARP 的“小游戏”欺骗就是易如反掌了,当然,是在没有安全防护的网络里 ,比如只有 hub 或者交换机把你们相连,而没有路由分段 ……^_^

下面我就由浅入深的讲一些介绍一些关于 ARP 的小伎俩。

 

1. 小伎俩

1)       你可以试着发一个请求包广播,其中的 ARP 帧里关于你的信息填成这样:

( 为了节省篇幅,我只写需要特别指出的填充字段 )

发送方MAC

6

随便乱填一个错误的

发送方IP

4

  填上你的IP

   出现什么结果?是不是弹出一个 IP 地址冲突的提示?呵呵,同样的道理,如果发送方 IP 填成别人的,然后每隔 1 秒发一次 ………..-_-b

 

2)       比如你们都靠一个网关 192.168.0.1 上网 ,如果你想让 192.168.0.77 上不了网,就可以伪装成网关给 192.168.0.77 发一个错误的 ARP 响应包 , like this

发送方MAC

6

随便乱填一个错误的

发送方IP

4

  网关IP 192.168.0.1

接收方就填 192.168.0.77 的相关信息,发送之后,它还能上网不?

这样能折腾他好一阵子了,只要它的系统得不到正确的到网关的 ARP 映射表它就一直上不了网了 ^_^

           呵呵类似的伎俩还有很多,不过只停留在这点东西上也没什么意思,还是看看稍微高深一点的吧 ^_^

 

       2.        ARP 欺骗

因为在以太网里,网络设备就是靠 MAC 信息来识别的计算机的,比如 A 电脑知道 MAC 地址为 22-22-22-22-22-22 的电脑是 B ,而如果我给 A 发送一个 ARP 响应包,告诉它我的 MAC 22-22-22-22-22-22 的话, A 同样会认为我的计算机是 B 了,那么好,我们设想有这么一个环境,

A 的防火墙只对 IP 192.168.0.2 MAC 22-22-22-22-22-22 B 有信任关系,而且 A 打开了 21 端口提供 FTP 服务,正常情况下因为防火墙的缘故我们的计算机是连不到 A 的,

于是我们想办法让 B down 掉,或者在它关机的时候,我们把我们的 IP 改成 B 192.168.0.2 ,然后给 A 发送一个 ARP 回应包,告诉 A 更新一下 ARP 缓存列表, 192.168.0.2 IP 映射到我们的
MAC
地址上来,于是,奇迹出现了,我们可以连到 A FTP 上了,防火墙失效了 ^_^

不过这个办法只能在同网段内生效,如果我们和 A 不在一个网段内,那就要复杂的多了,还要配合 ICMP 的重定向来控制报文的路由,这个我准备在以后阐述 ICMP 包的时候详细讲解,就不再此多说了。

    3.        基于 ARP 欺骗的监听原理

监听的技术有很多了,不过我们常用的 sniffer 工具只能在基于 hub 的网络中起作用,碰到哪怕是交换机都无能为力了,这个时候我们的 ARP 欺骗技术就派上用场了。

还是假设有三台主机 A,B, 还有我们的主机,位于同一个交换式局域网中

A B 正在通信,如果我们想要刺探 A ―― >B 通信的内容,于是我们就可以给 A 发送一个伪造的 ARP 回应包,告诉 A B IP 对应的 MAC 条目为我们的 MAC 地址,于是, A 也就会相应的刷新自己的 ARP 缓存,将发给 B 的数据,源源不断的发送到我们的主机上来,这样我就可以对接收到的数据包进行分析就好了,达到了监听的目的。当然,因为动态 ARP 缓存是动态的,有超时时间的,所以我们必须每隔一段时间就给 A 发送一个 ARP 回应包

虽然我们这样达到了目的,但是 A B 的通信却被停止了,为了不让 B 发现,我们还要对每次接收到的数据包进行转发,全部都转发给 B ,这样就天衣无缝了 ^_^

同样的,如果我们还想监听 B à A 的数据包,一样给 B 发一个 ARP 回应包,告诉 B A IP 对应的 MAC 是我们的主机 MAC ,于是 B A 的数据包也源源不断的发到我们的主机上来了,当然我们也是一样要对这些数据包进行转发,如图:

A  <------>    我们的主机    <------>   B

一切都无误的话, A B 的通信内容就这样不知不觉的被我们监听到了 ^_^

具体的代码实现由于篇幅的关系我就不放在这里讲了,如果需要我就专门另写篇文章附上完整代码吧

至此,我们的 ARP 基础知识就讲完了,但愿您能从中有所收获

 

后记:

 因为本人开发都是使用 VC++.net 2003 ,所以没有安装 .net 的朋友是打不开工程的, 可以试一下 vckbase 上的工程转换工具,本人没有试过,不保证有效

              http://www.vckbase.com/tools/assist/prjconverter.rar

而且本文的代码使用了 winpcap 开发包,是要另外安装 ainpcap 驱动。

读者可以安装我代码包里的驱动,不过它更新很快,可以到它主页上去下载最新版本

        http://winpcap.polito.it/install/default.htm

    不做开发的读者,只用下载并安装这个就可以了 WinPcap auto-installer (driver +DLLs)

   我的原文及源码下载地址稍后贴出,请关注本帖 ^_^

   

     源码下载地址,新鲜出炉,非常感谢 _foo 兄弟提供的空间

http://iunknown.com.cn/csdn/network/ARPPlayer_By_PiggyXP.rar

posted on 2007-02-16 15:49 飞鸟 阅读(557) 评论(0)  编辑  收藏 所属分类: VC

只有注册用户登录后才能发表评论。


网站导航: