域控制器权限持久化分析和防范

  • A+
所属分类:安全文章

在获得域控制器的权限后,攻击者通常会对现有的权限进行持久化操作。

域控制器权限持久化分析和防范

DSRM域后门
DSRM域后门介绍

DSRM(Directore Services Restore Mode,目录服务恢复模式)是Windows 域环境中域控制器的安全模式启动项。每个域控制器有一个本地管理员账户(也就是DSRM账户)。DSRM的用途是:允许管理员在域环境中出现故障或崩溃时还原、修复、重建活动目录数据库,使域环境的运行恢复正常。在域环境创建之初,DSRM的密码需要在安装DC时设置,且很少会被重置。

在渗透测试中,可以使用DSRM账号对域环境进行持久化操作。我们知道,每个域控制器都由本地管理员账号和密码(与域管理员账号和密码不同)。DSRM账号可以作为一个域控制器的本地管理员账户,通过网络连接域控制器,进而控制域控制器。

DSRM域后门的防御措施

定期检查注册表中用于控制DSRM登录方式的键值HKLSystemCurrentControlSetControlLsaDsrmAdminLogonBehavior,确认该键值为1,或者删除该键值
定期修改域中所有控制器的DSRM账号
经常检查ID为4794的日志。尝试设置活动目录服务还原模式的管理员密码会被记录在4794日志中

SSP维持域控权限
SSP介绍

SSP(Security Support Provider)是Windows操作系统的安全机制的提供者。简答的说,SSP就是一个DLL文件,主要用来实现Windows操作系统的身份认证功能,例如NTML、Kerberos、Negotiate、Secure Channel、Digets、Credential。
SSPI(Security Support Provider Interface,安全支持提供程序接口)是Windows操作系统在执行认证操作时使用的API接口,可以说,SSPI是SSP的API接口。

如果获得了目标网络的System权限,可以使用该方法进行持久化操作,其主要原理是:LSA(Local Security Authority)用于身份验证;lsass.exe作为Windows的系统进程,用于本地安全和登陆策略;在系统启动时,SSP将被加载到lsass.exe进程中。但是,假如攻击者对LSA进行了扩展,自定义了恶意的DLL文件,在系统启动时将其加载到lsass.exe进程中,就能获取到lsass.exe的明文密码。这样,即使用户更改密码重新登陆,攻击者依然能获取该账号的新密码。

SSP维持域控制器权限的防御措施

检查HKEY_LOCAL_MACHINE/System/CurrentControlSet/Control/Lsa/Security Packages项中是否有可疑的DLL文件
检查C:WindowsSystem32目录下是否有可疑DLL文件
使用第三方工具检查LSA中是否有可疑的DLL文件

3 SID History域后门
SID History域后门介绍

每个用户都有自己的SID,SID的主要作用是跟踪安全主题控制用户连接资源时的访问权限。SID History是在域迁移过程中需要使用的一个属性。

如果A域中的域用户迁移到B域中,那么在B域中的新建用户的SID会随之改变,进而影响迁移后的用户权限,导致迁移后的用户不能访问本来可以访问的资源。SID History的作用是在域迁移过程中保持域用户的访问权限,即如果迁移后的用户的SID改变了,系统会将其原来的SID添加到迁移后用户的SID History属性中,使迁移后的用户保持原有权限、能访问其原来可以访问的资源。在渗透测试中,如果获得了域管理员权限,就可以将SID History作为持久化的方法。

SID History域后门的防御措施

经常查看域用户中SID为500的用户
完成域迁移工作后,对有相同SID History属性的用户进行检查
定期检查ID为4765和4766的日志:4765为将SID History属性添加到用户的日志;4766为将SID History属性添加到用户失败的日志

4 Golden Ticket
Golden Ticket介绍

在渗透测试中,如果发现系统中存在恶意行为,应及时更改域管理员密码,对受控制的机器进行断网处理,然后进行日志分析取证。然而,攻击者往往会留下多条进入内网的通道,如果我们忘记将krbtgt账号重置,攻击者就可以很快拿到域控制器权限。

krbtgt是KDC服务使用的账号,属于Domain Admins组,在域环境中,每个用户账号的票据都是由krbtgt生成的,如果攻击者拿到了krbtgt的NYLM Hash或者AES-256值,就可以伪造域内任意用户的身份,并以该用户的身份访问其他服务。

攻击者在使用域的Golden Ticket(黄金票据)进行票据攻击时,通常需要掌握以下信息:

需要伪造的域管理员用户名
完整的域名
域SID
krbtgt的NTLM Hash或AES-256值

使用Golden Ticket伪造的用户可以是任意用户(即使这个用户不存在),因为TGT的加密是由krbtgt完成的,所以,只要TGT被krbtgt账户和密码正确的加密,那么任意KDC使用krbtgt将TGT解密后,TGT的所有信息都是可信的。

Golden Ticket攻击的防御措施

管理员通常会修改域管理员的密码,但有时会忘记将krbtgt密码一并重置,所以,要想防止Golden Ticket攻击,就需要将krbtgt密码重置两次。

5 Silver Ticket
Silver Ticket介绍

Silver Ticket(白银票据)不同于Golden Ticket。Silver Ticket的利用过程是伪造TGS,通过已知授权服务密码生成一张可以访问该服务的TGT。因为在票据生成过程中不需要使用KDC,所以可以绕过域控制器,很少留下日志。而Golden Ticket在利用过程中需要由KDC颁发TGT,并且在生成伪造的TGT的20分钟内,TGS不会对该TGT真伪进行校验。

Silver Ticket依赖于服务账号的密码散列值,这不同于Golden Ticket利用需要使用krbtgt账号密码的散列值,因此更加隐蔽。

Golden Ticket使用krbtgt账号的密码散列值,利用伪造最高权限的TGT向KDC要求颁发拥有任意服务访问权限的票据,从而获得域控制器权限。而Silver Ticket会通过相应的账号服务来伪造TGS,范围有限,只能获得对应的权限服务。Golden Ticket是由krbtgt账号加密的,而Silver Ticket是由特定的服务账号加密的。

攻击者在使用Silver Ticket对内网进行攻击时,需要掌握以下信息:

域名
域SID
目标服务器的FQDN
可利用的服务
服务账号的NTLM Hash
需要伪造的用户名

Silver Ticket攻击的防范措施

在内网中安装杀毒软件,及时更新系统补丁
使用组策略在域中进行相应的设置,现值mimikatz在内网中的使用
计算机的账号密码默认30天清理一次,检查该设置是否生效

6 Skeleton Key
使用Skeleton Key(万能密码),可以对域内权限进行持久化操作。
使用mimikatz注入Skeleton Key,注入成功后。会在域内的所有账号中添加万能密码:mimikatz
Skeleton Key攻击的防范措施

域管理员要设置强口令,确保恶意代码不会再域控制器内执行
在所有域用户中启动双因子认证,例如智能卡认证
启动应用程序的白名单,以限制mimakatz在域控制器中的运行

7 Hook PasswordChangeNotify
Hook PasswordChangeNotify的作用是当用户修改密码后在系统中进行同步。攻击者可以利用该功能获取用户修改密码时输入的密码明文。

Hook PasswordChangeNotify攻击的防御措施

使用Hook PasswordChangeNotify不需要重启系统、不会再系统磁盘上留下DLL文件、不需要修改注册表。如果Hook PasswordChangeNotify被攻击者利用,网络管理员是很难检测到的。所以,在日常的网络维护工作中,需要对PowerShell进行严格检视,并启用约束语言模式,对Hook PasswordChangeNotify进行防御。


本文始发于微信公众号(黑白天实验室):域控制器权限持久化分析和防范

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: