Socket基础九:ARP欺骗程序设计

Socket基础九:ARP欺骗程序设计

作者:刘磊 2020.4.27
   参考书目:《Windows网络编程》刘琰等著

一、ARP欺骗程序设计

位于数据链路层的ARP欺骗(ARP spoofing)是针对以太网地址解析协议(ARP)的一种攻击技术。此种攻击可让攻击者取得局域网上的数据分组甚至篡改分组,且可让网络上特定电脑或所有电脑无法正常连接。这种假消息攻击目前已被用于许多攻击方式中,如交换式网络环境中的嗅探、“中间人”会话劫持攻击等。除了应用于网络攻击之外,ARP欺骗还可以作为解决方案应用于在一些要 求强制重定向的业务中,比如在一- 个需要登录的网络中,让未登录的电脑将其浏览网页强制转向登录页面,以便登录后才可使用网络;或者在有些设有备援机制的网络设备或服务器中,利用ARP欺骗可以在设备出现故障时将任务重定向到备用的设备上。

二、实验内容

1、地址解析协议
2、ARP欺骗的原理

事实上,并不是每次对IP地址的解析都是通过ARP请求和应答来完成的。ARP请求是一种广播包,为了提高网络的效率,在每个主机中通常缓存着本网络内IP地址和MAC地址的映射表,这个缓存称为ARP缓存。该缓存帮助主机在需要时将IP地址映射为MAC地址,或是将MAC地址映射为IP地址,从而提高网络的效率。除了使用ARP缓存外,为了避免在局域网中发送过多的ARP广播包,ARP协议还采取了另外两个措施来提高网络效率:
●响应ARP请求的主机缓存请求者的IP-MAC映射。
●主动的ARP应答会被视为有效信息而被目的主机接受。
ARP是一个无连接的协议,对可靠性的要求不高。发送错误发送者MAC地址的ARP请求和ARP应答都将使接收到ARP包的主机信任这种映射,从而自动更新其ARP缓存,记录错误的IP-MAC地址映射。ARP欺骗就是基于这种原理实现的。
3、数据发送相关函数
WinPcap提供了发送队列和发送单包两种方式进行数据发送,对于单包发送,pcap sendpac-ket(函数完成了数据发送功能,该函数定义如下:
int pcap_ sendpacket (pcap_ t *p,u_ char *buf,int size);
其中: p指定一个打开的WinPcap会话,并在该会话中发送数据包,该捕获句柄一般是在pcap_ open live0函数打开与网络适配器绑定的设备时返回的; buf 指向待发送数据帧的缓冲区;size声明待发送缓冲区的长度。
在数据发送过程中,数据帧中的MAC CRC校验不需要计算,该部分内容会由网卡驱动透明计算并附加到数据帧尾部。如果发送成功则返回0,否则返回-1。
4、ARP欺骗的实现步骤
实现ARP欺骗有两种方法:
1)发送错误IP-MAC映射的ARP请求。
2)发送错误IP-MAC映射的ARP应答。
基于WinPcap编程框架中的wpcap.dll库,实现ARP欺骗的具体步骤如下:
第一步:调用pcap lookupdev()函数获得主机上的网络设备,该函数返回个指向主机 上的网络设备(如网卡)的指针。
第二步:选择待发送数据包的网络设备,调用pcap open live0函数打开这个网络设备,并返回一个包捕获描述符pcap t。
第三步:构造一个ARP请求或应答数据包(该原始数据包为链路帧,包括帧首部和ARP请求或响应协议数据),指明发送目标,写入错误的IP-MAC映射关系。
第四步:根据发送策略,调用pcap sendpacket(函数发送构造的ARP协议数据包。
第五步:调用pcap close(函数关闭库。

三、结果图

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值