电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

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

6页
  • 卖家[上传人]:m****
  • 文档编号:60957448
  • 上传时间:2018-11-21
  • 文档格式:DOCX
  • 文档大小:18.82KB
  • / 6 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、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请求包,第二入口结束.* 关于ar

      2、p_rtrequest函数和路由函数相关,作用是添加或删除一ARP节点.如果看不懂,可到以后的路由函数讲解时再了解.乐淘棋牌http:/*四,ARP欺骗的核心内实现:* 在整个程序中,有hack-是我加入的代码,一直到end-结束,大概有十来段这样的代码,是用来实现ARP欺骗,下面我简要的讲一* 讲他的实现原理:* 在我们开机后,系统初始化阶段,确切的说是在arp_ifinit初始函数被调用时,将发送一免费ARP,所谓免费,是指要寻找的IP地址是我自* 己的IP地址,那么网络上如果有和我相同的IP地址的机器(IP地址冲突),他就会根据我的这个ARP包中的发送源硬件地址应答一个ARP* 包给我,我的接收函数就能判断是否有人和我的IP设置的是一样的.初始化函数不但在开机后初始化时实行,而且在你执行ifconfig改变* IP地址时也会调用,如果要进行ARP欺骗,那么你就不能发送一免费ARP包,要不然对方的机器会记录下你的欺骗.这一点是其他的关于* ARP欺骗方式在用户区域所不能达到的.在你的机器冒充另外一台机器期间,会遇见两种情况,第一种是:被冒充的机器发送一个ARP* 请求,因为是广播发

      3、送,所以你也接到了该请求,被请求的机器会应答一ARP,这时我们也要应答一ARP,不过要比真正的那台机器晚一点* (在程序中我用的是DELAY延迟500毫秒,该数据可以进行调整,以适合你本地网络中较慢的机器),他就在被冒充的机器上进行覆盖前* 一个回应,使得被冒充的机器认为你就是他要找的机器,当然被冒充的机器紧接着将发送IP包给你的机器,由于你的IP层会判断包的目的* IP地址(肯定目的IP不对,因为被欺骗了),所以IP层会将他抛弃.第二种情况是:有其他的机器想和被欺骗的机器相联系,其他机器也将广播* 一ARP请求,目的IP是被欺骗机器的IP,首先被欺骗主机会回应一ARP,我们也和被欺骗主机一样回应一ARP,覆盖被欺骗主机的回应.* 五,漏洞的分析:* 目前,我所见到的BSD类操作系统都可能被欺骗,其原因是没有判断ARP请求方的目的硬件地址是否是来之于广播地址,而我们进行的* 所有欺骗都是进行单播方式的请求.*六,解决方案:* 在程序中的patch到patch end部分是我的解决方案.主要是对ARP请求部分的目的硬件地址是否是广播地址进行判断,如果要使用,请* 把注释去掉就行了.*七,

      4、编译:*对于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 192.168.0.4 255.255.255.0* * 你的卡 你要冒充的IP 掩码* 最好是把上面几个命令放到批执行文件中执行.*3.用被冒充的机器去PING 其他机器,这时候有可能ICMP包能发出几个,但应该立即没有反应.*4.如果有什么问题,大家可以把他记录,并发布到BBS上,更希望能多测试几种系统.*/#include opt_inet.h /*2个头文件由编译器在编译操作系统核心时产生的一些常量*/#include opt_bdg.h#include #include #include /*队列操作*/#inclu

      5、de #include #include /*缓冲管理*/#include /*分配缓冲*/#include /*主要是sockaddr_in结构要用到*/#include /*LOG宏用到,即日志记录*/#include /*硬件接口使用的一些结构,if的意思是interface*/#include /*链路层的一些数据结构*/#include #include /*和路由相关的函数*/#include /*注册中断向量用到的函数*/#include #ifdef BRIDGE /*如果定义了桥转发*/#include #include #endif#include #include #include #include /*hack:-*/#include /*因为要使用DELAY()延迟函数*/static int arphacklock=0; /*全局变量用的锁*/struct in_addr gatewayip; /*网关IP*/struct in_addr oldip; /*我机器老的IP地址*/static int trueip=0; /*是否使用冒充IP发送ARP请求*/

      6、static u_char ithardaddr6;/*要冒充机器的硬件地址,在转移到临时缓冲之前由锁来控制其写*/static int fromsubr=100; /*实验用,看看本机发出ARP请求是那个函数*/*end-*/#define SIN(s) (struct sockaddr_in *)s) /*强制转化成sockaddr_in结构,即Internet地址结构,其中s一般是sockaddr结构*/#define SDL(s) (struct sockaddr_dl *)s)/*强制转化成sockaddr_dl结构,即ethernet地址结构,其中s一般是sockaddr结构*/天地棋牌http:/SYSCTL_DECL(_net_link_ether);/*用于sysctl 用法如下:sysctl net.link.ether.=XXX,SYSCTL_DECL是申明下面的SYSCTL_NODE将继承的节点*/SYSCTL_NODE(_net_link_ether, PF_INET, inet, CTLFLAG_RW, 0, );/*/*hack:static int ha

      7、ckarp=0;SYSCTL_INT(_net_link_ether_inet, OID_AUTO, ctrlhack, CTLFLAG_RW,&hackarp, 0, );/*这方便你在用户区可控制核心变量,用法如下:sysctl net.link.ether.inet.ctlhackarp=1 那么变量hackarp就为1了.下面的程序会根据hack的真假判断来进行欺骗*/* 一些记时器的值 */static int arpt_prune = (5*60*1); /* 每5分钟过一遍列表,这个变量是由计时器使用,看看有没有超时ARP结点,有就删除他 */static int arpt_keep = (20*60); /* 一旦解析了, 保持 20 分钟 */static int arpt_down = 20; /* 一旦公布了down, 20秒不发送 */*对以上3个变量的控制*/*使用方法:sysctl net.link.ether.inet.prune_intvl=180 也就是把ARP定时期改为了每3分钟查一次ARP结点*/SYSCTL_INT(_net_link_ether

      8、_inet, OID_AUTO, prune_intvl, CTLFLAG_RW,&arpt_prune, 0, );SYSCTL_INT(_net_link_ether_inet, OID_AUTO, max_age, CTLFLAG_RW,&arpt_keep, 0, );SYSCTL_INT(_net_link_ether_inet, OID_AUTO, host_down_time, CTLFLAG_RW,&arpt_down, 0, );#define rt_expire rt_rmx.rmx_expire /*这里是放当前时间的,如果rtinit路由初始程序加入一IP路由,那么把当前时间+20*60秒放进去,*/*arptimer函数会和当前时间(当前时间由时钟每秒加1)比较,如果相等或比当前时间小,即到了或*/*该ARP结点时间过了20分钟.即超时*/*这里其实是真正的ARP列表*/struct llinfo_arp LIST_ENTRY(llinfo_arp) la_le;/*单向列表宏,说明该结构是一单向的列表,尾巴为0*/struct rtentry *la_rt; /*和该结点相关的路由*/struct mbuf *la_hold; /* 由于该地址正等待解释,所以要发送的数据(mbuf链头)指针暂时存放 */long la_asked; /* 为该地址发送了一共几个ARP请求,如果到了5个,那么暂时停止20秒*/#define la_timer la_rt-rt_rmx.rmx_expire;static LIST_HEAD(,

      《ARP地址解析协议详解及其漏洞分析》由会员m****分享,可在线阅读,更多相关《ARP地址解析协议详解及其漏洞分析》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.