当前位置:首页 期刊杂志

基于ARP 欺骗的中间人攻击的Python 实现

时间:2024-09-03

◆殷松瑜

(江苏商贸职业学院电子信息学院 江苏 226011)

在研究网络协议时发现TCP/ⅠP 协议栈中,很多网络协议标准都有安全缺陷,网络攻击比如网络扫描,内网渗透,流量欺骗等都和ARP 协议有关。本文为了进一步学习理解网络协议的原理过程,首先搭建网络实验模拟环境,利用Python 的scapy 模块构造ARP 数据包发送给攻击目标机实施ARP 欺骗,模拟中间人攻击,然后嗅探局域网内部网络流量截取HTTP 协议数据包进行解析,在被攻击者浏览网页点击图片时,实现了实时抓取这些点击图片的系统功能目标。

1 系统实现的实验环境和编程开发工具

本文实验环境包括一个路由器,一台联网的64 位Windows 7 版本的计算机作为攻击机,要对该计算机启用ⅠP 转发,在注册表定位以下注册表项:HKEY_LOCAL_MACHⅠNESYSTEM CurrentContro lSet ServicesTcpip Parameters 选择下面的项目ⅠPEnableRouter。

请指定值为1。Python 出于兼容性考虑安装是32 位Python 3.7版本,另外还有一台VMWARE 虚拟机作为被攻击目标机,操作系统是64 位的Windows 7 版本,网络连接方式是Host Only。Python 第三方库一定要选择开发环境操作系统Python 版本相对应的库文件安装,使用pip 安装时,如果外国网站网速太慢,可以访问国内的pip y 源时,命令为:pip install 库名==XXX.XX -i https://pypi.tuna.t singhua.edu.cn/simple。下面是本文要用到的各种模块比如Scapy,H TTP 等所依赖的Python 第三方库文件:

2 ARP 欺骗和中间人攻击

2.1 ARP 欺骗原理

ARP 协议称为地址解析协议,是工作在网络层的协议,基本任务就是将ⅠP 地址转换为MAC 地址(物理地址)。由于网络层ⅠP 数据报是根据ⅠP 地址确定传送目标,而以局域网交换设备传送的是数据帧,它们是依靠48 位以太网地址(MAC 地址)确定传送目标,以太网数据帧的并不能识别32 位的ⅠP 地址,所以在局域网内部的机器要和其他机器进行通信,首先就要获取对方的物理地址,这就需要ARP 协议来实现ⅠP 地址转换为物理地址这种对应关系。

ARP 数据包的详细信息列表如下(图1)[1]。

图1 ARP 数据报文格式

ARP 协议是一个不安全的协议,只要你发送ARP 数据包就能修改目标的MAC 缓存表,基于这种不安全性,便能实现ARP 欺骗。ARP 的攻击原理:攻击者冒充网关的身份MAC 地址,被攻击者发给网关的流量会全部经过攻击者机:攻击者冒充被攻击者的身份MAC地址,卖家发给被攻击者的流量也会经过攻击者机的手上。被攻击者无法与网关联系,导致流量无法到达被攻击者机上,而攻击者却能拿到网段所有流量(图2)。

图2 ARP 欺骗的攻击示意图

2.2 ARP 欺骗和中间人攻击的实现

使用Python 编写ARP 欺骗工具思路:不断发送修改对方MAC缓存表的ARP 数据包[2]。

(1)欺骗目标机:以太网报头:本机MAC·目标机MAC 数据(ARP 数据包):目标机MAC·目标机ⅠP·操作类型请求或回复都行·本机MAC·网关ⅠP。

(2)欺骗路由器:以太网报头:网关MAC·本机MAC 数据(ARP数据包):网关MAC·网关ⅠP·操作类型请求或回复都行·本机MAC·目标机ⅠP。

在scapy 模块中,ARP 是构建ARP 数据包的类,Ether 用来构建以太网数据包,构造ARP 数据包并加上以太网报头实现ARP 欺骗目的[3]。

2.3 抓取图片的程序实现

浏览网页中的图片一般都是向服务器发送一次请求图片的HTTP 请求,所以我们只需从经过网卡的流量中过滤出TCP 协议80端口的HTTP 协议数据包,将数据包的头部层层去掉,最后能得到应用层的HTTP 数据包,再利用正则表达式将http://*.jpg 筛选出来即可知道用户到底点击请求了哪些图[4]。

下面是截取到的HTTP 协议数据包片段:

2.4 系统功能的主程序代码实现

本文的模拟网络攻击环境:路由器网关gateway:192.168.1.1;受害者机器target:192.168.1.15;本地机器local:192.168.1.9。

下面是系统功能的主程序代码:

2.5 系统欺骗攻击和抓图的功能运行效果

ARP 欺骗攻击之后,从图3 可以看出路由器网关gateway:192.168.1.1 MAC 地址变成和本地攻击机local:192.168.1.9 的MAC地址一模一样,本地攻击机欺骗被攻击机冒充自己是网关成功。

图3 实施ARP 欺骗攻击的效果图

本地机192.168.1.9 实施ARP 欺骗攻击之后,在被攻击机192.168.1.15 上打开网页点击图片,在本地机上运行的抓图效果如图4,可以看到被攻击机发往网关的HTTP 协议报被本地攻击机截取,相关图片的HTTP 请求被解析而后在本地机打开相对应的图片,基本实现了抓取第三方屏幕网页图片的功能。

图4 ARP 攻击后实施抓图的效果图

3 结语

本文使用Python 初步实现了ARP 攻击和抓取第三方机器屏幕的效果,由于实验环境和程序代码编写的限制,系统性能还需要进一步优化,以解决能够快速高效抓取和解析网络流量数据包这个系统运行效率问题,还有很多功能有待完成。通过这次实验作者对ARP 欺骗攻击有了更深的理解,后面继续改进完善系统,增添更多的网络渗透安全防护功能。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!