6.4 域安全
6.4.1 域安全风险
1.黄金票据
黄金票据漏洞是在kerberos网络认证协议中导致的,攻击者会在客户端发送票据给服务器去认证步骤中进行攻击。黄金票据攻击利用的前提是得到了域内 krbtgt 用户的 NTLM 哈希或AES-256的值。
黄金票据漏洞会造成一个普通用户获取域管理员的权限,当然是在提前拥有普通域用户权限和 krbtgt账户的hash情况下。Kerberos(kerberos是一种计算机网络授权协议,用来在非安全网络中,对个人通信以安全的手段进行身份认证)网络认证协议请求的步骤简化示例,如图6-21所示。
第一步:Client 向 KDC(准确地说是 Authentication Service,简称 AS)发起请求需要一个TGT,TGT是与Server无关的,即用一个TGT可以申请多个Server的Ticket。发送的请求中包含用Client的Master Key加密的一些信息(包括ClientName、Timestamp,TGS ServerName)。
第二步:AS收到Client发来的请求后,从数据库中拿到Client的Master Key进行解密,验证 ClientName 和 Timestamp,验证通过后给 Client 发送一个 Response,该Response中包括两部分:用Client Master Key加密的LogonKey及用KDC Master Key加密的 TGT。该 TGT 里也包含 LogonKey(用于后面解密 TGT,因为 KDC 不保留任何SessionKey),及ClientName和过期时间。
图6-21 kerberos网络认证协议请求
第三步:Client收到AS发回的Response后,用自己的Master Key解密得到LogonKey,此外,还保有一个加密的TGT。
1)制作黄金票据需要的条件
(1)krbtgt 账户的 NT-Hash:该散列值仅位于域控服务器的活动目录中,所以攻击者必须攻陷域控服务器并提权至管理员权限。
(2)域账户:名称通常是域管理员“domain admin”。
(3)域名:可以是任意伪造的用户名。
(4)域SID:可以从域用户的SID或通过sysinternal中的psGetsid.exe获得。
2)利用过程
通常在真实的域渗透中利用黄金票据攻击时,先要获取 krbtgt 用户的 hash(ntml 和sid)。在获取时通常用到的工具是 mimikatz(mimikatz 的功能有提升进程权限、注入进程、读取进程内存等)。下面用 mimikatz 工具进行使用演示。在 mimikatz 内对 really.com域控进行获取krbtgt账户的ntlm和sid命令:
lsadump::dcsync/domain:really.com/user:krbtgt.
mimikatz 内 lsadump::dcsync 的意思:向 DC 发起同步一个对象(获取账户的密码数据)的质询。
如图6-22所示,获取到krbtgt账号的ntlm和sid:
Ntlm:21f6dd7ea9117a34f91b2ce4bc 8a539d
Sid:S-1-5-21-3961751263-4251079211-1860326009-502.
创建域管理员的黄金票据如图6-23 所示。首先在mimikatz 内清空自己的缓存证书,然后在mimikatz工具内执行创建really.com域伪造administrator用户票据并生成一个命名为reallys的kiribi格式文件的命令:
通过mimikatz生成的reallys.kiribi伪造票据就在mimikatz工具的文件夹内。
图6-22 mimikatz内对really.com域控进行获取krbtgt账号
图6-23 创建域管理员的黄金票据
3)使用票据,进行伪造
在 mimikatz 内使用票据即可成功,下方为在 mimikatz 工具内执行导入票据的命令:kerberos::ptt reallys.kiribi。
执行后显示如图6-24所示,其内容证明成功获取域控制器权限,如图6-25所示为使用dir命令列出ac的C盘。
图6-24 导入数据
图6-25 使用dir命令列出ac的C盘
2.MS14-068
攻击者可能使用 MS14-068 漏洞,将未经授权的域用户提升为域管理员账户。主要危害配置为 Kerberos 密钥分发中心(KDC)的域控制器。利用漏洞通过身份验证的域用户可以向Kerberos KDC发出伪造的Kerberos票证,声称该用户就是域管理员。攻击者可以仿冒域中的任何用户,包括域管理员,并加入任何组。通过冒充域管理员,攻击者可以安装程序,查看、更改或删除数据,或者在任何加入域的系统上创建新账户。Kerberos KDC 在处理来自攻击者的请求时,会不恰当地验证伪造的票证签名,从而让攻击者能利用域管理员的身份来访问网络上的任何资源。
1)漏洞利用需要的条件
(1)域控没有安装 MS14-068 的补丁。MS14-068 对应的补丁为 KB3011780,可在域控上通过systeminfo查看是否已经安装此补丁。
(2)获得域控内普通的计算机权限(已经在域控内的机器)。
2)利用过程
获取 SID 是为了生成一个 Kerberos 票证。使用命令 whoami/user 查看本机用户的SID,如图6-26所示。
图6-26 查看本机用户SID
使用Ms14-068漏洞工具进行攻击,利用ms14-068.exe提取工具生成伪造的Kerberos票证,如图6-27所示。利用的工具命令:
漏洞利用工具执行成功会在当前目录(MS14-068工具目录)下生成一个ccache格式文件(伪造的票据)。获得域控内普通的计算机权限(已经在域控内的机器)。
图6-27 生成伪造的Kerberos票证
使用票据:使用 mimikatz 工具导入第二步用 MS14-068 工具生成的 ccache 文件,注意,导入之前先在 mimikatz 内执行 mimikatz:klist purge 命令删除当前缓存的 kerberos 票据。缓存删除之后,再进行票据的导入,导入票据的命令:
执行后显示如图6-28所示。
图6-28 获取域控制权限
获取域控制器权限,如图6-29所示为配合PsExec工具执行cmd命令。
图6-29 配合PsExec工具执行cmd命令
3.GPP与SYSVOL
大家都知道在域内修改机器的账户、密码比较烦琐,所以很多人都在用微软的 Group Policy Preferences(GPP)。GPP的功能之一是可以批量修改账号,但是域管在配置完GPP后会在 SYSVOL 文件夹内保存配置的 XML 文件。SYSVOL 文件夹是一个存储着域公共文件服务器副本的共享文件夹,域内机器都可以访问。SYSVOL 共享文件夹内存储着登录或注销脚本、组策略配置文件等。当然域管配置 GPP 后存在的 XML 文件也在里面,XML文件内存在着域管配置GPP时输入的密码,不过这些字段都被AES 256加密了,虽然被加密,但是微软官方已经公开了AES 256加密的私钥。
安装 GPP 凭证补丁:KB2962486。这个补丁禁止在组策略配置中填入密码。补丁查询命令为systeminfo,如图6-30所示。
图6-30 安装GPP凭证补丁
利用过程如下:
如图 6-31 所示,SYSVOL 文件的位置:\\<DOMAIN>\SYSVOL\<DOMAIN>\Policies\。黑客可以访问 SYSVOL 共享文件夹找带有密码的 XML 配置文件,然后可通过破解脚本进行解密得到密码。当然也可以写一个小脚本对 SYSVOL 文件夹内的所有 XML 文件进行检测.
图6-31 SYSVOL文件位置
如图6-32所示,打开group.xml文件,可以看到账号administrator和cpassword字段后面被AES加密的密码,获得AES密文之后就可以用破解脚本进行解密了。可以根据微软官方的密钥自己写脚本解密,或在网上找此解密脚本。GPP 组策略选项:映射驱动(Drives.xml)、数据源(DataSources.xml)、打印机配置(Printers.xml)、创建/更新服务(Services.xml)、计划任务(ScheduledTasks.xml)。
图6-32 查看文件
6.4.2 域安全防护
1.重要事件ID(见表6-1)
表6-1 重要事件ID
2.域控防御
(1)严格控制域控制器组策略的设置:由于域控制器共享域的同一个账户数据库,因此必须在所有域控制器上统一设置某些安全设置。
(2)在域 DC.服务器和办公终端安装安全检测软件:定期查杀病毒能够有效防御系统的安全。
(3)域内安装防病毒软件、WAF 等:避免黑客进入域内进行攻击,出现攻击情况能够及时发现预警等。
(4)重装DC预防域控已经被控等问题:出现安全提问时可以重装DC。
(5)配置 SMB 签名:使用已启用远程直接内存访问(RDMA)的网络适配器。启用服务器消息块(SMB)签名或SMB加密后,SMB Direct与网络适配器的网络性能会显著降低,但可抵御SMB-Relay攻击。
(6)关闭域内WPAD服务:对抗LLMNR/NBT Poisoning攻击。
(7)对域控进行流量梳理和网络访问控制:可以缩小攻击面。
(8)对域账号进行权限梳理,加固高权限账号:检测高权限账号可以用 bloodhound黑客工具,也可以通过System Internal Tools的ADExplorer来进行。
(9)域内禁止无限制委派:对抗权限提升,凭证提取。
(10)Windows和Exchange补丁:防止MS14-068、ExchangeSSRF等公开漏洞攻击。
(11)根据情况禁用powershell:攻击者通常喜欢powershell。
3.域控应急
1)系统账号
● 查看服务器弱口令情况。
● 重置krbtgt、dsrm和其他重要服务的账号、密码。
● 检查账号 SIDHistory 属性、组策略配置及 SYSVOL 文件夹的访问权限、AdminSDHoldre相关安全账号。
● 查看是否存在可疑账号或新增的账号。
● 查看是否存在隐藏账号或克隆账号。
2)日志排查
● 应用程序日志。
● 安全日志。
● 系统日志等。
3)自动化查杀
安全软件杀毒等。
4)系统检查
● 是否有异常的启动项。
● 计划任务。
● 服务自启动。
● 查找可疑目录及文件。
● 端口、进程。