域渗透权限维持之Skeleton_Key
前言
随着企业信息化程度的加深,内网环境逐渐成为攻击者的关注的重点目标,在内网渗透的过程中权限维持是不可或缺的关键环节之一,它往往决定了攻击者能否在目标系统中长时间潜伏,获取敏感信息或者造成更大范围的破坏。
SkeletonKey是一种能在不重启域控制器的情况下,使所有域用户使用统一密码登录的技术。通过将SkeletonKey注入lsass进程,即使在LSA保护开启的情况下,也能通过加载特定驱动绕过限制。
使用 Skeleton Key(万能密码),可以对域内权限进行持久化操作。
使用 mimikatz 完成注入 Skeleon Key 的操作,将 Skeleton Key 注入域控制器的 lsass.exe 进程。
简介
Skeleton Key(万能密码),是一种可以对域内权限进行持久化的操作,在获取域控制器权限的基础上,通过将Skeleton Key注入到lsass进程,无需重启域控即可生效,而且能够在不影响当前域用户正常登录的情况下,让所有域用户使用同一个万能密码进行登录,它只存在于内存中,如果域控制器重启,注入的 Skeleton Key 将会失效。
实验环境
- 域名:god.org
域控制器:
- 主机名:owa
- IP地址:192.168.52.138
- 用户名:administrator
- 密码:hongrisec@2025
域成员服务器:
- 主机名:stu1
- IP地址:192.168.52.143
- 用户名:god\test2
- 密码:hongrisec@2025
利用过程
Mimikatz 中使用 Skeleton Key
尝试以当前登录用户身份(当前用户身份是192.168.52.143–win7机器下的test2用户)列出域控制器 C 盘共享目录中的文件
1 |
|
因为此时是一个普通的域用户身份,所以系统提示权限不足!
这个时候使用域管理员账号和密码进行连接:
连接成功,这个时候就列出了域控制器 C 盘的共享目录。
之后在域控制器中以管理员权限打开 mimikatz,输入命令将 Skeleton Key 注入域控制器的 lsass.exe 进程:
切换到域控制器中以管理员身份运行
1 |
|
这个时候系统提示 Skeleton Key 已经注入成功,此时会在域内的所有账号中添加一个 Skeleton Key,其密码默认为:“mimikatz”。
接下来就可以了使用域内任意用户的身份配合 Skeleton Key 进行域内身份授权验证了。
在不使用域管理员原始密码的情况下,使用注入的 Skeleton Key,同样可以成功连接系统:
切换为我们的普通用户,在192.168.52.143上
1 |
|
输入命令,使用域管理员账号和 Skeleton Key 与域控制器建立 ipc$:
1 |
|
建立成功后这样就可以列出域控制器的共享目录了!
Skeleton Key 防御措施
- 域管理员用户要设置强密码,确保恶意代码不会在域控制器中执行。
- 在所有域用户中启用双因子认证,例如智能卡认证。
- 启动应用程序白名单(例如 AppLocker),以限制 mimikatz 在域控制器中的运行。
PS:因为 Skeleton Key 是被注入到 lsass.exe 进程的,所以它只存在于内存中,如果域控制器重启,注入的 Skeleton Key 将会失效。
绕过LSA保护
微软在2014年3月12日添加了LSA保护策略,用来防止对进程lsass.exe的代码注入,这样一来就无法使用mimikatz对lsass.exe进行注入。启用 LSA 保护,只需要在注册表中添加一个值,重启服务器即可。
在win2012上,mimikatz通过导入驱动文件mimidrv.sys后,可绕过LSA 保护。
检测方法
(1)检测注册表位置:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa ,是否开启PPL保护。
(2)当攻击者尝试加载mimidrv.sys驱动时,将会生成4697事件,这个行为可作为安全日志中最为明显的特征进行识别检测。