域控权限维持 中在我们拿到域控账号密码后,为了防止密码被改,需要使用隐蔽后 门等手段来维持我们取得的域控权限。将二进制文件放在Windows 启动项目录中是最简单的方式,但是隐蔽性差,较主流的域控权限维 持方法通常有三种,本篇讲第二种Skeleton Key。 Skeleton KeySkeleton Key与上篇Golden Ticket均不需要域控重启即能生效。Skeleton Key被安装 在64位的域控服务器上,支持Windows Server2003到Windows Server2012 R2,能够 让所有域用户使用同一个万能密码进行登录,现有的所有域用户使用原密码仍能继 续登录,注意并不能更改用户权限,这里需要注意的是重启将失效。其被称为万能 钥匙,是一种域控制器权限维持工具。它无须破解域用户的任何密码,进行此攻击时 需要运行在64位操作系统的域控制器中,并且拥有域管理员权限。 我们在域控制器上运行mimikatz.exe,执行 mimikatz # misc::skeleton命令 这会将Kerberos加密降级到RC4_HMAC_MD5,并以内存更新的方式将主密 码修补到 lsass.exe 进程,mimikatz的默认Skeleton Key设置为mimikatz 使用主机名链接。这使得所有用户可同时使用万能钥匙修补DC使用"主密码” (又名万能钥匙)以及他们自己通常使用的密码进行身份验证。 1.域环境域控制器:
域成员服务器:
2.LSA Protection从Windows 8.1(和Server 2012 R2)开始,Microsoft引入了一项 称为LSA保护的功能。此功能基于PPL技术,它是一种纵深防御的安 全功能,旨在“防止非管理员非PPL进程通过打开进程之类的函数串 改PPL进程的代码和数据”。防止对进程 lsass.exe 的代码注入这 样一来就无法使用 mimikatz 对 lsass.exe 进行注入,相关操作 也会失败。开启LSA保护策略操作如下图所示。 |
但是LSA保护不能完全抵御这些攻击,它让Mimikatz提取凭证变得更困难一些。域控存在LSA保护时,攻击者需要做一些额外的操作攻击者有几种选择:
-
删除RunAsPPL注册表项并重新启动(这可能是最糟糕的方法,因为您将丢失内存中的所有凭据)
-
通过修改EPROCESS内核结构,在LSASS进程上禁用PPL标志。
-
直接读取LSASS过程存储器的内容,而不使用打开的过程函数。
3.注意事项
-
内存攻击技术,域控制器重新启动后,主密码将失效,这时需重新执行攻击。
-
Skeleton Key只是给所有账户添加了一个万能密码,无法修改账户的权限。
-
对于Server 2012 R2以上系统版本,需要mimidrv.sys文件。
4.安装Key
在域控制器上安装Skeleton Key,相关命令如下:
minikatz # privilege::debug
mimikatz # misc::skeleton
在域控制器上安装Skeleton Key,执行效果如下图所示。
5.验证成功
域内主机使用Skeleton Key登录。此时不需要知道域管理员admin密码,使用主密码mimikatz即可建立磁盘映射,查看域控制器中C盘的文件。执行的命令如下:
net use \dc.pentestlab.com mimikatz /user:admin
dir \dc.pentestlab.comc$
查看域控C盘目录文件执行效果如下图所示。
5.验证成功
域内主机使用Skeleton Key登录。此时不需要知道域管理员admin密码,使用主密码mimikatz即可建立磁盘映射,查看域控制器中C盘的文件。执行的命令如下:
net use \dc.pentestlab.com mimikatz /user:admin
dir \dc.pentestlab.comc$
查看域控C盘目录文件执行效果如下图所示。
如果想更改主密码mimikatz为其他密码,可以自行修改mimikatz源码中的Skeleton Key模块。
6.防御措施
-
重启服务器,使得被注入到 lsass.exe 进程主密码失效。
-
域管理员用户要设置强密码,确保恶意代码不会在域控制器中执行。
-
在所有域用户中启用双因子认证,例如智能卡认证。
-
启动应用程序白名单(例如 AppLocker),以限制 mimikatz 在域控制器中的运行。
本文始发于微信公众号(疯猫网络):域控权限维持(中)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论