注意:本文所有测试操作仅可在自己搭建的虚拟机环境中进行,未经授权对他人的设备进行实验测试属于违法行为,请切勿触碰法律红线。本文复现漏洞为永恒之蓝(EternalBlue),对应官方漏洞编号:
-CVE: CVE-2017-0144
-CNVD: CNVD-2017-05028
-CNNVD: CNNVD-201705-082
今天在网课上系统性的了解了永恒之蓝这一经典漏洞并进行了简单实操,颇有感悟,下面为大家分享一些心得体会,如有不足或错误,欢迎各位大佬前来指正,也欢迎各位新手朋友一起谈论学习。
一、我们该如何理解这个漏洞
永恒之蓝是一种利用Windows系统的SMB协议漏洞来获取系统的最高权限,永恒之蓝是在Windows的SMB服务处理SMB v1请求时发生的漏洞,其导致攻击者在目标系统上可以执行任何代码。
要点:
- 核心载体:SMBv1协议(Windows默认开启的系统服务,对应445端口)
- 最大危害:攻击者不需要你的账号密码,远程就能拿到你电脑的System最高权限(比管理员权限还高),完全控制你的设备。
- 影响范围:Win7、Windows Server 2008等未打补丁的老版本Windows系统。(由于系统更新,像近几年的win11,win10系统默认不存在永恒之蓝漏洞)
二、简单原理
SMBv1是Windows默认开机自启的系统服务,属于系统底层核心服务。但是这个老服务有个致命的bug:它收到网络发来的数据包时,不会严格检查内容是否合法、长度是否合规。因此攻击者可以给开放445端口的目标设备,发一个构造好的恶意数据包,就能触发这个bug,让目标设备自动执行恶意代码。代码执行后,攻击者直接拿到Windows最高的System权限,能随意的在目标设备上创建隐藏影子用户,修改数据文件,盗取珍贵资料或者植入各种病毒等。
三、简单的漏洞复现实验 (以下实操全程在个人搭建的虚拟机环境中进行,未经他人授权,严禁对他人电脑发起任何形式的攻击!)
在攻击之前可以通过扫描查看目标主机是否存在ms17-010漏洞,在这里我以自己搭建的虚拟机win7系统作为演示:
nmap -sV -p445 --script=smb-vuln-ms17-010 192.168.179.128
看到确实存在该漏洞后,下一步我们发起攻击。
1. 实验所需要的环境
- 攻击机:Kali Linux(其中自带的msfconsole工具可以实现攻击,无需再安装其他工具)
- 靶机:Win7(未打MS17-010补丁,仍存在漏洞,注意要和攻击机在同一局域网)
2. 具体操作
1. 打开Kali终端,输入 msfconsole ,打开所需工具
2.search ms17-010 #查找模块
输入该指令后你可以看到非常多的模块,我们注意到紫色的ms17-010位于0(序号),所以接下来我们输入: use 0 就可以使用该漏洞模块进行攻击。
3.set rhosts 192.168.179.128(在该模块下设置被攻击的主机,这里以我搭建的虚拟机为例)
4. 输入 run 执行攻击
出现以上画面,且成功建立meterpreter会话,说明攻击成功,已获取目标主机的控制权
成功后我们可以通过 run vnc (对目标主机实行实时监控) ; screenshot (截图目标当前状态); shell (打开目标主机的命令提示符);等各种指令来获取更多我们想要得到的信息,在这里就不过多赘述。
四、防护方法
1. 最直接根本:打补丁
开启Windows自动更新,系统会自动安装修复这个漏洞的安全补丁,最大可能的杜绝隐患。
2. 关无用服务:禁用SMBv1协议(不推荐)
这个老协议现在基本用不到,管理员身份打开CMD,输入以下命令,重启电脑即可生效,从根源关闭攻击入口:
cmd
dism /online /disable-feature /featurename:SMB1Protocol
3. 端口+防火墙防护
开启Windows自带防火墙,不用文件共享的话,直接封禁445端口的入站连接,不让外部设备访问你的对应端口。
4. 权限管控
日常用电脑,不要一直用管理员账号登录,用标准用户即可,就算遇到风险,也能大幅降低危害。
五、总结
1. 这个漏洞是Windows安全的经典入门案例,将系统服务、端口、权限还有后面会更新的用户组等一些知识点串了起来,耐心的搞懂它,对于快速建立Windows安全的基础认知将会有很大的帮助。
2. 永远守住合规底线:网络安全测试的前提是合法授权,所有操作只能在自己的虚拟机里做,绝对不要对未经授权的设备动手。
(本文章仅用于安全研究与学习,严禁用于非法用途。漏洞已公开多年,相关编号可在 CVE/CNVD 官网查询)