文件名称:ARP攻击代码实例
文件大小:441KB
文件格式:RAR
更新时间:2010-11-20 07:18:42
现在有一台计算机A(IP:192.168.85.1 MAC:AA-AA-AA-AA-AA-AA),另一台计算机B(IP:192.168.85.100 MAC:BB-BB-BB-BB-BB-BB)现在用A去 ping B。看见 Reply from 192.168.85.100: bytes=32 time<10ms TTL=32 这样的信息。然后在运行中输入arp -a,会看见 192.168.8.100 BB-BB-BB-BB-BB-BB dynamic这样的信息。那就是arp高速缓存中IP地址和MAC地址的一个映射关系,在以太网中,数据传递靠的是MAC,而并不是IP地址。其实在这背后就隐藏着arp的秘密。你一定会问,网络上这么多计算机,A是怎么找到B的?那么我们就来分析一下细节。首先A并不知道B在哪里,那么A首先就会发一个广播的ARP请求,即目的MAC为FF-FF-FF-FF-FF-FF,目的IP为B的192.168.85.100,再带上自己的源IP,和源 MAC。那么一个网段上的所有计算机都会接收到来自A的ARP请求,由于每台计算机都有自己唯一的MAC和IP,那么它会分析目的IP即 192.168.85.100是不是自己的IP?如果不是,网卡会自动丢弃数据包。如果B接收到了,经过分析,目的IP是自己的,于是更新自己的ARP高速缓存,记录下A的IP和MAC。然后B就会回应A一个ARP应答,就是把A的源IP,源MAC变成现在目的IP,和目的MAC,再带上自己的源IP,源 MAC,发送给A。当A机接收到ARP应答后,更新自己的ARP高速缓存,即把arp应答中的B机的源IP,源MAC的映射关系记录在高速缓存中。那么现在A机中有B的MAC和IP,B机中也有A的MAC和IP。arp请求和应答过程就结束了。由于arp高速缓存是会定时自动更新的,在没有静态绑定的情况下,IP和MAC的映射关系会随时间流逝自动消失。在以后的通信中,A在和B通信时,会首先察看arp高速缓存中有没有B的IP和MAC的映射关系,如果有,就直接取得MAC地址,如果没有就再发一次ARP请求的广播,B再应答即重复上面动作。
好了在了解了上面基本arp通信过程后,arp欺骗就不那神秘了,计算机在接收到ARP应答的时候,不管有没有发出ARP请求,都会更新自己的高速缓存。利用这点如果C机(IP:192.168.85.200 MAC:CC-CC-CC-CC-CC-CC)伪装成B机向A发出ARP应答,自己伪造B机的源MAC为CC-CC-CC-CC-CC-CC,源IP依旧伪造成B的IP即192.168.85.100,是那么A机的ARP缓存就会被我们伪造的MAC所更新,192.168.85.100对应的MAC就会变成CC-CC-CC-CC-CC-CC.如果A机再利用192.168.85.100即B的IP和B通信,实际上数据包却发给了C机,B机根本就接收不到了。
实例基于WINCAP编写,描述其本源理与流程.
【文件预览】:
ArpCheat
----ArpCheat.sln(914B)
----ArpCheat.suo(10KB)
----ArpCheat.ncb(291KB)
----ArpCheat()
--------libwpcap.a(41KB)
--------libpacket.a(19KB)
--------normal_lookup.h(2KB)
--------Include()
--------tme.h(6KB)
--------resource.h(1KB)
--------sched.h(5KB)
--------tcp_session.h(3KB)
--------ip6_misc.h(5KB)
--------ArpCheat.h(449B)
--------semaphore.h(4KB)
--------stdafx.h(1KB)
--------wpcap.lib(17KB)
--------count_packets.h(2KB)
--------Ntddndis.h(47KB)
--------pcap-stdinc.h(2KB)
--------Devioctl.h(4KB)
--------ArpCheat.cpp(1KB)
--------Packet.lib(8KB)
--------ArpCheat.aps(295KB)
--------Ntddpack.h(1KB)
--------ArpCheat.vcproj(6KB)
--------time_calls.h(10KB)
--------pcap-bpf.h(22KB)
--------Packet32.h(21KB)
--------remote-ext.h(13KB)
--------stdafx.cpp(137B)
--------bittypes.h(4KB)
--------memory_t.h(4KB)
--------ReadMe.txt(3KB)
--------Gnuc.h(783B)
--------ArpCheatDlg.h(1KB)
--------pcap.h(11KB)
--------Lib()
--------ArpCheatModule.cpp(7KB)
--------Win32-Extensions.h(3KB)
--------gloabal.h(71B)
--------pcap-int.h(13KB)
--------ArpCheat.rc(6KB)
--------res()
--------bucket_lookup.h(2KB)
--------ArpCheatModule.h(3KB)
--------pthread.h(35KB)
--------ArpCheatDlg.cpp(10KB)