域环境应急响应之特权帐户密码重置

admin 2023年8月3日16:16:44评论209 views字数 2894阅读9分38秒阅读模式

概述

在针对微软的活动目录域环境进行应急响应时,如果我们确认攻击者已经获得了域管理员权限,那我们首要的工作之一就是对特权帐户的密码进行重置,包括所有域管理员以及krbtgt帐户。


因为在攻击者获得域管理员权限后,可以利用活动目录的特性,通过多种方式实现权限维持,包括Golden Tickets,添加dcsync权限,silver ticket,DSRM等。如果前期没有针对性地开启相关的审计策略,在应急响应过程是很难在短时间内排查出所有后门的。但是当我们重置特权帐户的密码后,多数后门将会无法使用,除非攻击者使用相同的路径再进行一次攻击。


下面我们将介绍如何批量修改域管理员密码以及krbtgt帐户密码。

域管理员密码重置
01

重置域管理员密码比较简单,我们可以在命令行通过net user命令修改用户密码,但是对于大型活动目录环境,可能有多个域管理员,使用net user命令一个一个重置会比较耗时,而且密码信息可能会被记录在日志里面。


此时我们可以使用Active Directory PowerShell Module(域控默认安装)的Set-ADAccountPassword命令批量重置。


首先获取域管理员列表:

Get-ADGroupMember -Identity "Domain Admins" -Recursive |select SamAccountNam


域环境应急响应之特权帐户密码重置

然后针对每个用户,生成不同的强口令,并保存为csv格式:

SamAccountName,NewPasswordAdministrator,0bB5iG(u9ihkusr,v0R9/ZKZQ

最后,使用Set-ADAccountPassword重置密码:

Import-Csv .DA.csv -Delimiter "," | Foreach { 
$NewPassword = ConvertTo-SecureString -AsPlainText $_.NewPassword -Force
Set-ADAccountPassword -Identity $_.SamAccountName -NewPassword $NewPassword -Reset -PassThru | Set-ADUser -ChangePasswordAtLogon $false}


域环境应急响应之特权帐户密码重置

查看结果,可以看到密码成功修改:

域环境应急响应之特权帐户密码重置


krbtgt密码重置
02

krbtgt帐户的密码每年应该至少修改两次,ANSSI建议40天修改一次,微软建议180天修改一次。

我们可以使用Get-ADUser查看krbtgt帐户密码的最近修改时间:

Get-ADUser "krbtgt" -Property Created, PasswordLastSet

域环境应急响应之特权帐户密码重置

krbtgt的密码需要修改两次来移除密码历史。为了避免服务中断,可以先修改一次,然后等待复制(replication) 完成,一般为10小时,然后再修改一次10 hours are the default Maximum lifetime for user ticket and Maximum lifetime for service ticket policy settings)。因为krbtgt会使用先前和当前的密码校验kerberos票据。


但是如果怀疑活动目录环境被入侵,我们可以快速地连续两次更改密码,以使客户端(包括应用服务)重新进行认证,但此时需要重启使用kerberos认证的应用服务器(至少需要重启应用),因此需要考虑对业务连续性的影响。


下面我们介绍使用PowerShell脚本来修改krbtgt帐户的密码:

https://github.com/zjorz/Public-AD-Scripts/blob/master/Reset-KrbTgt-Password-For-RWDCs-And-RODCs.ps1


这个脚本有多个模式,这里我们只使用5和6:

  • 5 - Simulation Mode | Use KrbTgt PROD/REAL Accounts - No Password Reset/WhatIf Mode!

  • 6 - Real Reset Mode | Use KrbTgt PROD/REAL Accounts - Password Will Be Reset Once!

选项5不会修改任何东西,只会显示将会发生什么:

域环境应急响应之特权帐户密码重置

要实际修改密码,我们选择选项6,然后选择对应的域:

域环境应急响应之特权帐户密码重置

在第一次修改完成后,我们可以等10小时。如果是入侵场景,可立刻再次使用选项6修改一次:

域环境应急响应之特权帐户密码重置
我们选择继续后,会再次修改krbtgt的密码:

域环境应急响应之特权帐户密码重置

最后,我们可能需要重启使用kerberos认证的应用服务或者应用服务器。


除了使用上面的脚本,也可以使用ADUC(Active Directory Users and Computers)的图形界面进行修改。首先启用Advanced Features:

域环境应急响应之特权帐户密码重置

然后在Users容器下找到krbtgt帐户,右键选择Reset Password:

域环境应急响应之特权帐户密码重置

在输入新密码和确认密码后,点击ok。因为我们设置的密码不满足复杂度要求,系统将会自动重新创建一个。我们仍然需要在复制在所有域控之间完成后再次修改。


建议先使用上面的脚本通过选项5模拟修改,看是否满足修改条件,然后使用选项6进行修改,如果脚本报错,可以尝试使用低版本的脚本。


总结
03

特权帐户密码重置只是活动目录域环境应急响应的一个步骤,在实际应急响应过程,我们还需要对组策略变更进行分析,通过各种日志还原攻击路径,对影响范围进行评估等。


对于应急响应,前期的准备至关重要。首先我们要通过各种准备工作,比如渗透测试,漏洞扫描等,避免安全事件的发生。但是如果安全事件发生,我们需要有对应的playbook以及标准流程对事件进行处理,而且需要有必要的数据源对影响范围进行评估以及对攻击路径进行还原。对于Windows环境,建议参考如下资源,提前开启相关的审计策略:

  • https://github.com/nsacyber/Event-Forwarding-Guidance/tree/master/Events

  • https://learn.microsoft.com/en-us/defender-for-identity/configure-windows-event-collection#configure-object-auditing


参考资料

https://learn.microsoft.com/en-us/windows-server/identity/ad-ds/manage/forest-recovery-guide/ad-forest-recovery-reset-the-krbtgt-password

https://github.com/zjorz/Public-AD-Scripts/blob/master/Reset-KrbTgt-Password-For-RWDCs-And-RODCs.ps1

https://learn.microsoft.com/en-us/answers/questions/87978/reset-krbtgt-password


原文始发于微信公众号(Desync InfoSec):域环境应急响应之特权帐户密码重置

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年8月3日16:16:44
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   域环境应急响应之特权帐户密码重置https://cn-sec.com/archives/1929315.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息