ARP地址解析协议详解及其漏洞分析.docx

ARP地址解析协议详解及其漏洞分析.docx

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
ARP地址解析协议详解及其漏洞分析 * 以太网解释协议(ARP). 文件名:/sys/netinet/if_ether.c? * 注释:xie_minix? *一,函数入口:? * ARP有两个入口:1? * 由ether_input发出一软中断(见我的ethernet网络代码详解一文),arpintr中断例程被调用,检查完数据后? * 该中断例程调用in_arpinput函数.? * 入口2:? * 由ether_output函数在查询输出的硬件地址时,调用arpresolve函数进行地址解析.? * 所以,ARP基本上是和ether网输出密切相关的.? *二,相关的结构:? * 关于他使用的结构方面,llinfo_arp是和路由相关的一个结构,ether_arp结构是一个遵循RFC826的一个ARP包的结构.? *三,学习顺序:? * 在看本文的时候,一般从函数arpintr(中断例程)开始看,紧接着看in_arpinput函数.再看看支撑函数arplookup后停止,这是第一入口.? * arpresolve是第二入口的开始,他是解析地址的函数,如果解析不了,调用arprequest函数发送一ARP请求包,第二入口结束.? * 关于arp_rtrequest函数和路由函数相关,作用是添加或删除一ARP节点.如果看不懂,可到以后的路由函数讲解时再了解.?乐淘棋牌 *四,ARP欺骗的核心内实现:? * 在整个程序中,有hack------是我加入的代码,一直到end------结束,大概有十来段这样的代码,是用来实现ARP欺骗,下面我简要的讲一? * 讲他的实现原理:? * 在我们开机后, \t "/article/200608/_blank" 系统初始化阶段,确切的说是在arp_ifinit初始函数被调用时,将发送一免费ARP,所谓免费,是指要寻找的IP地址是我自? * 己的IP地址,那么网络上如果有和我相同的IP地址的机器(IP地址冲突),他就会根据我的这个ARP包中的发送源硬件地址应答一个ARP? * 包给我,我的接收函数就能判断是否有人和我的IP设置的是一样的.初始化函数不但在开机后初始化时实行,而且在你执行ifconfig改变? * IP地址时也会调用,如果要进行ARP欺骗,那么你就不能发送一免费ARP包,要不然对方的机器会记录下你的欺骗.这一点是其他的关于? * ARP欺骗方式在用户区域所不能达到的.在你的机器冒充另外一台机器期间,会遇见两种情况,第一种是:被冒充的机器发送一个ARP? * 请求,因为是广播发送,所以你也接到了该请求,被请求的机器会应答一ARP,这时我们也要应答一ARP,不过要比真正的那台机器晚一点? * (在程序中我用的是DELAY延迟500毫秒,该数据可以进行调整,以适合你本地网络中较慢的机器),他就在被冒充的机器上进行覆盖前? * 一个回应,使得被冒充的机器认为你就是他要找的机器,当然被冒充的机器紧接着将发送IP包给你的机器,由于你的IP层会判断包的目的? * IP地址(肯定目的IP不对,因为被欺骗了),所以IP层会将他抛弃.第二种情况是:有其他的机器想和被欺骗的机器相联系,其他机器也将广播? * 一ARP请求,目的IP是被欺骗机器的IP,首先被欺骗主机会回应一ARP,我们也和被欺骗主机一样回应一ARP,覆盖被欺骗主机的回应.? * 五, \t "/article/200608/_blank" 漏洞的分析:? * 目前,我所见到的BSD类操作系统都可能被欺骗,其原因是没有判断ARP请求方的目的硬件地址是否是来之于广播地址,而我们进行的? * 所有欺骗都是进行单播方式的请求.? *六,解决方案:? * 在程序中的patch到patch end部分是我的解决方案.主要是对ARP请求部分的目的硬件地址是否是广播地址进行判断,如果要使用,请? * 把注释去掉就行了.? *七,编译:? *对于FreeBSD4.4版本,可直接拷贝覆盖/sys/net/if_ether.c文件,对于当前版本,只要把hack-----到end-----之间的段粘贴到相应的地方.? *本程序在4.4下已经编译通过,由于实验条件不行,实验没有在两台以上机器进行过,在这里希望网友能帮忙测试,测试的方法是:? *1.覆盖原文件后,进行核心编译.? *2.重启动后,执行:? * arp -d -a? * sysctl net.link.ether.inet.ctrlhack=1? * ifconfig vr0 ? * ^ ^ ^? * 你的卡 你要冒充的IP 掩码? * 最好是把上面几个命令放到批执行文件中执行.? *3.用被冒充的机器去PING 其他机器,这时候有可能ICMP包能发出几个,但应该立即没有反应.? *4.如果有

文档评论(0)

知识贩卖机 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

认证主体黄**

1亿VIP精品文档免费下

相关文档

相关课程推荐