单域安全评估以及加固方案
文章目录
- 1.前言
- 评估结果分析与加固方案
- 用户帐户问题
- 域密码策略
- Tombstone lifetime和AD backup
- 信任问题
- 域内重复的SPN
- 组策略配置文件暴露密码(GPP漏洞)
- ad admins组账号检测
- 7.1 非保护组且属于AD admin组的账号
- 7.2 拥有老密码的AD admins
- 7.3 ad admin组成员是否设置spn
- 7.4 检查默认域管账户的问题
- 7+. 特权组与默认组检测
- 7.1+.默认AD组:administrators
- 7.2+.默认AD组:Domain Admins
- 7.3+.默认AD组:Enterprise Admins
- 7.4+.默认AD组:Server Operators
- 7.5+.默认AD组:Account Operators
- 7.6+.特权AD组:VMWare Admins
- krbtgt账户没有定期改动
- 9.委派检查
- 组策略相关
- 11.检查域权限
- 12.域版本检测
- 13.AD林级别与域功能检测
- 参考文章
1.前言
在域内任何一台机器上通过powershell脚本对域中对一些基本问题进行检测,检测的目标点如下:
- 用户帐户问题
- 域密码策略
- Tombstone lifetime和AD backup
- 信任问题
- 重复的SPN
- 组策略配置文件暴露密码
- 域管或特权账户
- KRBTGT帐户-需要定期重制密码
- Kerberos委派-配置错误可导致windows委派攻击
- 组策略对象所有者-配置错误可导致GPO下发攻击
本文会对不同对检测点给出基本对防护策略,使用的时候建议多跑几遍脚本。
使用的时候可以在域控上直接使用,也可以在域内普通电脑上使用,不过需要下载AD管理模块跟组策略管理模块。
#可通过下述命令在powershell中下载组策略管理模块,通过在github上下载AD管理模块Microsoft.ActiveDirectory.Management.dll,脚本文件Invoke-TrimarcADChecks.ps1跟ad管理模块在同一个链接下载。
使用命令:
Set-ExecutionPolicy Bypass -Scope Process
import-module ./Microsoft.ActiveDirectory.Management.dll
Get-WindowsCapability -Name RSAT* -Online | Select-Object -Property Name, State
Add-WindowsCapability -Name Rsat.GroupPolicy.Management.Tools~~~~0.0.1.0 –Online;whoami
.\Invoke-TrimarcADChecks.ps1
2. 评估结果分析与加固方案
1. 用户帐户问题
有可能产生隐患的点:
- 不活跃的帐户-这些帐户很久没更改密码或已过一段时间未登录
- 可逆加密–配置了可逆加密的帐户以可逆格式存储在AD数据库中
- 无密码账户-可直接登录
- 密码永不过期-不安全的配置
- 启用DES Kerberos加密-DES加密可逆
- 存在不需要Kerberos预先认证的账户
- SID历史记录-HistorySID攻击
下图显示在test.com域内,有三个账户被识别为不活跃用户,有六个用户账户有history SID。
加固方案:
- 删除不活跃的账户或者强制其定期更改密码
- 取消配置了可逆加密的账户的错误配置,在域控上的用户与计算机功能中直接对账户进行管理。
- 给空密码用户设置密码
- 取消密码永不过期选项
- 不开启DES加密
- 开启kerberos预认证
- 检查各个账号的SIDHistory并对未授权的SIDHistory进行删除。
以上大多数设置都能在域控上的用户与计算机功能直接配置,示例图如下:
2. 域密码策略
域密码策略决定了域内的密码规则,例如密码的位数以及多久更改一次密码。
下图显示,锁定持续时间为30分钟,锁定观察窗口为30分钟,不锁定入口,密码最长使用期限42天,最短1天,最短长度为1,密码历史为24个,密码复杂度未开启,可逆加密未开启。
加固方案:
建议设置定期更改密码例如3月一次,然后密码长度大于14且满足复杂度要求。
3. Tombstone lifetime和AD backup
Tombstone lifetime这个值的默认值为180,AD可以备份自己的数据,然后在适当的时候进行恢复,这个功能需要提前添加,默认是没有的。
备份的数据有效期就是Tombstone lifetime,单位是天。例如Tombstone lifetime为180,备份的数据在180天后就无法恢复了。
下图显示我的机器的Tombstone lifetime是60,且备份时间为2020年8月21日:
加固方案:
Tombstone lifetime设置的长一点,以备不时之需。确保至少每月在AD林中的FSMO角色持有者上运行一次系统状态备份,并保持至少6个月,FSMO角色可以理解成对整个域对某些功能具有管理权限的人,这些人的所有功能结合到一起就是一个完整的域。
Active Directory的系统状态备份的有用保质期
4. 信任问题
一个AD的森林是这个AD域的安全边界,当其被配置ad森林的时候安全边界也就会改变,所以有必要了解其配置情况。
查看CSV文件发现是空文件,证明没有信任其他的ad域。
加固方案:
- 至少每年检查一次配置且确保配置是适当的,如果不是必须的话,立刻删除信任配置。
- 配置双向信任应该经过详细检查,确保确实是双向信任,且业务需要双向信任。
- 不要配置对于DMZ区的信任。
- 如果需要信任,请转换为选择性身份验证,从“允许所有人”更改为“只允许显式地跨信任连接”。选择性身份验证配置后,用户需要明确批准才能访问资源,否则他们无法查看或访问跨信任的任何内容,总体安全很多。
5. 域内重复的SPN
一般情况如果有重复的SPN,则利用kerberos认证访问此服务就会出错,但KRBTGT账号相关的spn可以是重复的
。
加固方案:除了krbtgt账号的spn外
,确保没有重复的spn,可以使用SetSPN -X -F
命令查找重复SPN。
SPN格式为serviceclass/host:port/servicename
• serviceclass可以理解为服务的名称,常见的有www, ldap, SMTP, DNS, HOST等
• host有两种形式,FQDN和NetBIOS名,例如server01.test.com和server01
• 如果服务运行在默认端口上,则端口号(port)可以省略
参考文章:
两个不同的林之间如何建立信任
6. 组策略配置文件暴露密码(GPP漏洞)
老版本的域中,域管在域控上利用组策略批量下发计划任务或者更改域内主机密码的时候,会填写一个叫做“运行身份”的字段,会在其中填入自己的用户名密码,这个密码会被保存在sysvol这个共享文件夹中,这个文件夹域内任意用户都能访问。若被黑客访问了的话,会盗取域管的账号密码,这也是所谓的GPP漏洞,下图显示当前主机可以访问到这两个组策略配置文件,可以将权限设置成普通用户无法访问最安全。
可以在powershell中执行下述命令来快速检查:
Findstr /S /I cpassword [SYSVOL_PATH]
加固方法:
0、使用高版本的域控制器,版本大与2012.
1、使用LAPS批量管理域内主机本地管理员帐户
2、域控安装补丁KB2962486
3、不在组策略中使用域控密码
4、设置共享文件夹\ SYSVOL的访问权限,使得普通用户不能访问最好。
5、使用PsPasswd批量修改域内部主机本地管理员密码
参考文章:域渗透-利用SYSVOL还原组策略中保存的密码
7. ad admins组账号检测
识别出ad admins组的账户,并显示其部分信息。
加固方法:
1.定期(每年)更改密码
2.禁用不活跃帐户
3.删除被禁用的账户
4.确保普通用户没有配置spn
5.删除无用的主机帐户
6.审查服务帐户
7.1 非保护组且属于AD admin组的账号
保护组中的账号会有更多的安全选项,所有的ad admin组账号应该被添加到protect group,下图的配置中发现保护组成员一个人都没有,是十分不安全的配置。
7.2 拥有老密码的AD admins
长时间不改密码的ad admins组的成员也是十分危险的,且旧密码通常效果不佳,更容易猜出来。密码喷洒和Kerberoasting是目前常用的针对缺乏强密码的账户的攻击方法,定期更改密码能有效对抗这种攻击,可以根据passwordlastset字段来判断密码更改情况。
如上图属于数据缺失,一般是因为过久没有更改密码。
加固方案:
1.确保特权帐户密码每年更新一次。
7.3 ad admin组成员是否设置spn
若ad admin组成员被设置了spn,那么攻击者有可能使用kerberoasting攻击
来对其密码进行离线爆破。
下图显示ad admin无账户配置spn。
加固方案:
1.确保高权限用户账户
无spn
2.定期更改服务账户密码且密码强度有保障例如大于25位,如果不是必须,请不要将服务账户加入到ad admin组。
7.4 检查默认域管账户的问题
默认域账户是域控上的administrator账户,如果有其他域管账户,则默认的域控账户应该被禁用。
加固方案:
1.确保账号密码最少一年一次
2.确保默认域管账户没有spn
7+. 特权组与默认组检测
定时检测特权用户或者换组的成员,看是否跟预期的一致。
7.1+.默认AD组:administrators
本地管理员组,对本地的电脑具有完全控制权限。
默认权限:
1.AD admin权限
2.DC admin 权限
7.2+.默认AD组:Domain Admins
默认权限:
对整个域具有完全控制权。
7.3+.默认AD组:Enterprise Admins
默认权限:
在整个域林中都有完全控制权限。此权限在单个域林中应保持为空。
7.4+.默认AD组:Server Operators
这个组实际上等同于域管理员组。
7.5+.默认AD组:Account Operators
这个组应该永远为空,这个组的用户对域中绝大多数用户拥有权限。
7.6+.特权AD组:VMWare Admins
如果域环境放在了vmware环境中,那么控制了vmware admins组成员,相当于就控制了这个域环境。
8. krbtgt账户没有定期改动
KRBTGT账户没有定期改动的话,很久之前的黄金票据可能还能够使用,这是十分不安全的,定期改动krbtgt可以在一定程度上对抗黄金票据,如下图显示,很久没改动了。
9.委派检查
不安全的委派配置可能会导致被攻击者利用。
10. 组策略相关
1.组策略拥有者权限检查
修改组策略是一个很重要的权限,几乎等于控制整个域。
加固方案:
确保将所有GPO所有者设置为域管理员或企业管理员,特别是链接到域根和域控制器OU的GPOs。
11.检查域权限
加固方案:
1.检查域根权限,特别注意以下事项:任何非默认的管理组(域管理员、域管理员、企业管理员等),具有GenericAll(完全控制)、WriteDACL(更改权限)、写属性(修改)和扩展权限。
2.确保域根所有者被配置为域管理员或企业管理员。
12.域版本检测
尽量让域控的版本大于2012,否则一些安全配置可能会不够有效。
13.AD林级别与域功能检测
所有AD林应该与DC版本匹配。
加固方案:
确保所有域控制器都已更新到windows Server 2012 R2或更新版本,并将“DFL/FFL”设置为2012 R2或更新版本。
参考文章
保护Active Directory:执行Active Directory安全检查
还没有评论,来说两句吧...