资讯详情

Metasploit后渗透实战:权限提升、持久化与横向移动核心思路

📅 2026/10/14 22:22:58 | 华诺云谱 👁 阅读
Metasploit后渗透实战:权限提升、持久化与横向移动核心思路
1. 后渗透阶段的工作拆解与核心目标1.1 拿到Meterpreter会话之后真正的工作才刚开始很多初学者在Kali里成功利用漏洞、看到meterpreter 提示符出现时会觉得目标已经拿下了。实际上我个人的经验是利用漏洞拿到会话只是整个渗透测试流程里最运气的一步后渗透才是真正拉开差距的环节。后渗透阶段Post-Exploitation处理的不是一个单一问题而是一连串问题当前拿到了什么权限这台机器在目标网络里处于什么位置系统里有没有其他有价值的信息能否把普通用户权限提升到管理员或SYSTEM在被防守方发现之前能不能完成数据收集和权限维持这些问题环环相扣任何一个环节没想清楚都可能让前面拿到的会话白白浪费掉。Metasploit Framework 之所以把后渗透做得这么重是因为它不只是给你一个shell就结束了而是把大量常见操作封装成了模块和命令。以 Meterpreter 为例它能直接在内存里做信息收集、文件操作、权限提升、进程迁移等工作不用像传统方式那样反复上传工具这大大降低了被杀毒软件发现的概率。这也是后渗透阶段学习笔记里非常重要的一条主线少碰磁盘、多用内存操作、一切以隐蔽为前提。1.2 后渗透阶段的基本工作流我习惯把后渗透阶段分成五个模块每次拿到会话后都会按这个顺序过一遍环境识别查看系统版本、当前用户、网络连接、进程列表确认自己在哪、有什么权限。信息收集抓取系统内敏感文件、用户密码哈希、浏览器记录、WiFi密码等评估数据价值。权限提升从普通用户提升到管理员或SYSTEM为后续操作解锁更高权限。权限维持通过后门模块或系统机制确保会话断开后还能重新拿回来。横向移动以当前机器为跳板探测内网其他主机扩大控制范围。这篇笔记主要讲后渗透阶段二所以重点放在后面三个环节权限提升、权限维持和横向移动。基础的环境识别和信息收集属于后渗透一的内容我在这里就简单带过。建议大家在实际练习时也按这个顺序来不要一拿到shell就急着上传工具到处翻文件先冷静下来把环境摸清楚往往能少踩很多坑。2. 会话管理与基础信息收集的深耕2.1 session的查看、后台化和切换进入后渗透阶段一个很容易被忽略的问题就是会话管理。当你同时维持着多个目标机器的会话时要是没有管理好很容易混乱。实际操作中常用到这样几条命令# 在当前Meterpreter会话中查看所有活动会话 sessions # 将会话转入后台回到msf6主控端 background # 重新回到某个后台会话 sessions -i 3关于编号要提醒一句sessions命令列出的编号是动态分配的后台化之后不会重新排序。如果你同时开着五六个会话建议用sessions -i 编号切换前先看一眼列表别凭记忆硬点。还有一个非常实用的技巧给会话设置注释和排序方便后期维护。# 给会话加上备注有助于区分不同目标 sessions -n 3 win7-办公区-10.10.14.5实际测试中这个备注功能特别有用。尤其是横向移动之后你手上可能有十几个会话没有备注的话过半小时你自己都会忘了每个会话对应哪台机器。2.2 系统信息与网络信息收集的组合拳进入 Meterpreter 后我一般先用sysinfo确认系统基本信息sysinfo getuid ipconfig这三条命令的顺序很讲究。sysinfo告诉你系统的版本、架构和 Meterpreter 类型这决定了后续提权和利用模块的选择方向。getuid确认当前权限是谁是普通用户还是管理员。ipconfig则能让你快速了解这台机器有几张网卡、接入了哪些网段这对判断横向移动路径很关键。举个例子我在一次授权测试中碰到一台双网卡 Windows 主机一张网卡连办公网一张网卡连服务器网段。本来以为只是个普通工作站看到第二张网卡之后才确定这是一台跳板机后续横向移动的路线立刻清晰了很多。这种拓扑判断靠的就是后渗透第一步的信息收集。除了这些基础命令arp命令也能提供不少线索arp routearp能看到当前主机最近通信过的内网IP很多时候比扫描器更快帮你圈定活跃主机范围。而route则展示路由表可以判断是否有多层网络。2.3 键盘记录与屏幕截图的正确打开方式后渗透阶段常见的两个功能是键盘记录keylog和屏幕截图screenshot。keyscan_start keyscan_dump keyscan_stopscreenshot这两个功能很容易操作但有几个细节一定要掌握键盘记录必须迁移到目标用户所在进程才能生效。比如你拿到的会话跑在某个服务进程下而这个服务进程是以SYSTEM权限运行的那么敲键盘的用户可能根本不在这个会话的上下文里。处理办法是先在ps命令里找到用户正在使用的进程比如explorer.exe然后用migrate迁移过去再开始键盘记录。屏幕截图同样受制于会话所在会话层。如果你迁移到了SYSTEM服务进程中截出来的往往是一个空白桌面或者锁屏界面因为服务进程不持有用户的桌面交互句柄。想要截到真实的用户桌面需要迁移到该用户启动的进程里。有一次我在授权的测试环境里迁移到explorer.exe之后截图意外看到桌面上开着客户的内部运维系统页面上面还有登录账户名。这个信息价值比一堆密码哈希还高。所以你看后渗透阶段的操作顺序不是随便定的每一步之间都有因果关系。3. 权限提升的思路与踩坑记录3.1 getsystem与令牌模拟的核心区别提到提权Metasploit 里最常用的就是getsystemgetsystem很多人以为getsystem是直接利用某个系统漏洞打入SYSTEM账户其实它的底层原理是结合了几种令牌模拟和进程注入技术强行把当前会话权限提升到NT AUTHORITY/SYSTEM。你可以简单把它理解成Metasploit自带的一条提权捷径。但getsystem有时候会失败原因很常见当前用户不是管理员或者系统不允许当前进程开启调试权限。遇到这种情况我的建议是先别急着换提权漏洞先把用户切换到管理员再说。令牌模拟Token Impersonation则是一个更精细的操作。Metasploit 的steal_token命令可以从某个进程中窃取令牌ps steal_token 1234 drop_token这条命令的原理是Windows系统中某些进程会携带更高权限的访问令牌如果你能拿到这个令牌就可以以令牌所代表的身份执行操作。这个过程不需要密码也不需要加载驱动是典型的令牌伪造利用。不过要特别注意窃取令牌成功之后当前getuid显示的不一定是SYSTEM。有时候拿到的是一个域管理员令牌但Windows会在特定操作时才验证令牌权限。所以窃取令牌后尽量顺手执行一条getuid或者尝试访问受保护目录验证一下当前身份是否真的有效。3.2 内核提权模块的挑选逻辑当getsystem和令牌模拟都失败时就得考虑内核漏洞提权了。Metasploit 里有大量exploit/windows/local/目录下的模块但千万不要看到哪个模块就乱跑很多模块会直接把目标系统打崩溃。我挑选提权模块时遵循三条原则先看系统版本和补丁情况。在目标主机上执行systeminfo查看安装的补丁编号然后去模块描述里确认是否覆盖该补丁。优先使用经过广泛验证的模块。一些著名提权模块的兼容性写在描述里比如tested on Windows 7 x64这类模块相对可靠。使用前先拍快照或备好恢复方案。尤其是物理机和生产机器提权失败导致蓝屏的案例太多了。举个例子对一台打了补丁的 Windows 10 机器你还在跑针对旧版本系统的提权模块大概率会失败甚至可能让目标进程崩溃直接把会话整没了。这是典型的操作前不看版本的翻车现场。还有一个小技巧提权前先执行getsystem如果失败用background把当前会话暂时后台化然后通过search exploit/windows/local 提权关键词来搜索匹配模块选好模块后再sessions -i回来执行。这样不至于在主控台和会话之间来回切换得手忙脚乱。3.3 提权成功后的验证提权成功不是终点必须验证当前权限身份getuid正常情况下应该显示类似NT AUTHORITY\SYSTEM的信息。如果只是Administrator说明你拿到的是管理员但不是系统最高权限很多操作依然受限。提权完成之后别忘了重新查看一下sysinfo。有些提权漏洞会改变 Token 权限可能导致之前的网络连接、SMB共享访问都失效。另外某些提权操作会被防病毒软件记录行为特征所以提权完成后最好不要在原会话里立刻做大规模文件操作先快速验证权限然后进入下一阶段。提示任何提权操作都存在系统崩溃风险我只建议在授权的测试环境和虚拟机靶场里操作。生产环境必须提前获得书面授权并做好出现蓝屏和重启的应急预案。4. 持久化与痕迹清理从攻击链路看系统薄弱点4.1 持久化到底在解决什么问题一次完整的渗透测试会话丢失是大概率事件。目标机器重启、网络断开、杀毒软件查杀进程都可能导致 Meterpreter 会话失效。持久化的目的是在会话丢失后你依然能通过某种方式重新获得访问权。Metasploit 的持久化模块本质上是往目标系统写入一段可以被周期性执行的载荷常见的方式包括注册表自启动、服务创建、计划任务、启动目录脚本等。4.2 常见持久化模块及其原理Metasploit 中有几个典型的持久化模块exploit/windows/local/persistence通过注册表或启动目录实现自启动。post/windows/manage/persistence_exe上传一个可执行文件并设置自启动项。exploit/windows/local/scheduler通过计划任务定时触发载荷。以注册表持久化为例它的执行流程大致是把载荷放到指定目录然后在注册表Run键下写入一条指向载荷的启动项。这样每次用户登录载荷就会跟着启动回连到你的监听端口。但持久化模块的使用在真实测试中争议很大。一方面是稳定性问题运行一段时间后目标机器可能因为载荷兼容性出问题另一方面这本质上是留后门行为在授权范围外使用是违法的。所以我对这个模块的建议是了解原理、在本地虚拟机里做验证、从防御角度理解注册表和计划任务里哪些位置是攻击者最常埋雷的地方。应急响应的朋友可以把这些位置当成排查重点注册表HKCU\Software\Microsoft\Windows\CurrentVersion\Run、服务列表、计划任务、启动文件夹都是后门高频藏身处。4.3 防御视角看痕迹清理从攻击者角度看的痕迹清理本质上就是对抗防御方的日志分析。Metasploit 里没有一条一键清除所有痕迹的命令因为日志分散在系统事件、应用日志、网络连接记录和文件访问记录等多个位置。实操中需要关注的痕迹包括timestomp命令修改文件时间戳避免被时间线分析发现。删除临时上传的工具文件。清理端口监听痕迹避免留下异常连接信息。但从防御方来看真正的重点是Windows 的很多行为痕迹不是简单删除就能抹干净的。比如 PowerShell 的历史记录、内存中的执行痕迹、WMI 事件日志都会留下蛛丝马迹。所以我的立场是在学习阶段把痕迹清理理解为如何理解攻击者的操作会在哪些层面留下数据这对蓝队和应急响应更有价值。5. 横向移动的常见姿势与实验建议5.1 pass the hash与psexec的原理拿到一台主机的管理员权限后下一步往往就是横向移动。Metasploit 中最经典的手段是pass the hash哈希传递配合psexec模块。原理要先说清楚Windows 的 NTLM 认证允许直接使用密码哈希进行网络身份验证而不需要明文密码。你只要从一台机器上抓到了管理员账户的 NTLM 哈希就可以拿着这个哈希去访问同一内网里的其他机器只要那台机器上存在相同账户且开启了 SMB 服务。Metasploit 的调用方式大致是use exploit/windows/smb/psexec set RHOSTS 内网目标IP set SMBDomain 域名 set SMBUser 管理员账号 set SMBPass 哈希值 run这个模块会把一个服务二进制上传到目标机器并通过 SMB 创建服务、执行载荷最后删除服务。整个过程会留下明显的事件日志属于容易踩坑也容易被发现的技术。5.2 令牌窃取在域环境中的作用在域环境下横向移动还有一个更隐蔽的手段是令牌窃取。如果你在一台机器上的会话是SYSTEM权限且这台机器上某位域管理员恰好在线那么它的登录令牌可能就留在当前机器的内存里。通过steal_token把这个令牌偷过来你就能以域管理员的身份去访问域内其他机器。这个操作的难点在于你要先找到持有高价值令牌的进程。实操时可以关注那些以管理员用户身份运行的进程比如explorer.exe、mmc.exe等。要注意的是窃取到的令牌不一定能立刻用于所有场景。有些服务在认证时会要求重新验证凭据令牌就不起作用。所以我建议遇到令牌窃取成功但访问失败的情况冷静退回一步改用哈希传递。5.3 横向移动的实验建议横向移动想练好单机靶场是不够的至少需要三台以上的虚拟机组成一个小内网。推荐的结构是一台 Kali 作为攻击机。一台 Windows 7 作为第一跳板。一台 Windows Server 作为域控或业务主机。如果你没有现成的环境用本地虚拟机软件手动搭建即可。网络设成 NAT 或自定义虚拟网段确保三台机器能互通。整个实验过程中建议开一个抓包工具在跳板机上抓一下 SMB 流量看看哈希传递的过程到底在网络上长什么样。这样你对原理的理解会扎实很多。注意横向移动操作极易触发安全设备告警这种能力只应在授权渗透测试或自建靶场中使用。在未经授权的情况下扫描或尝试登录其他主机哪怕只是探测都已经越界。6. 常见问题与排查技巧速查表6.1 会话无故掉线这是后渗透阶段最常遇到的问题。会话掉线的原因通常有三个目标机器重启这是最常见的很多提权模块或持久化操作容易引起蓝屏。网络断开如果你是通过远程办公网络做授权测试中间任意一跳断开都会导致会话中断。杀毒软件拦截Meterpreter 的流量特征和行为特征被安全软件识别直接杀掉会话进程。排查思路先用ping或curl确认目标主机是否在线如果在线但会话没了那大概率是载荷被干掉了。此时可以重新利用漏洞建立会话但这次建议先做进程迁移尽量迁移到常见的系统进程里。6.2 杀毒软件拦住了所有操作真实环境中基本不可能完全绕过杀毒软件Metasploit 的原始载荷很容易被查杀。我的经验是不要在目标机器上大量写入文件优先使用upload到临时目录用后立即删除。尽量避免使用默认的windows/meterpreter/reverse_tcp载荷可以换成基于 HTTPS 的载荷通信流量更像正常网页访问。实际操作中大量操作可以通过 PowerShell 或内存执行来完成减少落地文件。关于免杀我不展开细讲因为它是一个巨大的独立领域而且容易走偏。初学者只需要记住如果你的测试环境里装的是真实杀毒软件先用最简单的载荷确认连通性再考虑进一步操作别在提权和横向移动上浪费太多时间——也许杀毒才是你真正的对手。6.3 提权失败之后的下一步提权失败不要死磕同一个方法。我的排查顺序是确认当前getuid的结果是否只是普通用户。查看系统版本和补丁搜索匹配的本地提权模块。尝试令牌窃取和getsystem的组合。如果都失败退回信息收集阶段看看目标系统里有没有保存的明文密码、脚本中的硬编码凭据、浏览器保存的密码等。很多时候提权失败不是因为技术不到位而是因为你从一开始就没找到最有价值的信息入口。后渗透阶段本质上是一个信息驱动的过程系统给的信息越多你的下一步就越清晰。最后再分享一个我自己的体会学 Metasploit 后渗透最忌讳的就是只记命令不练场景。命令敲一百遍不如在靶场里完整跑一遍信息收集-提权-横向移动-痕迹清理的流程。把每个模块为什么这么设计、在真实环境里会遇到什么问题搞清楚比背住一堆模块路径有用得多。后面这个系列的笔记我会继续往里填实际的靶场操作记录和踩坑过程欢迎一起交流。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑