安全路透社
当前位置:安全路透社 > 安全客 > 正文

【技术分享】在域中获取域管理员权限的多种方法及一些缓解措施

http://p3.qhimg.com/t0149b6e89afcd53b67.jpg

翻译:hac425

前言


现在攻击者有很多方法可以用来获取域管理员权限.这篇文章的目的是介绍一些当前较受欢迎的方式。这里所介绍的技术的基本点是攻击者已经拿到了一台域中的服务器,并已获得域用户凭据。

对大多数企业来说有一个不幸的现实:对于一个攻击者来说,从域用户权限提升到域管理员权限往往不需要太长的时间。为什么会这样呢?本文会介绍其中使用的一些技巧.

现在针对一个企业,组织的攻击越来越频繁通过一些钓鱼手法来开始.比如通过发送大量的钓鱼邮件给目标的成员来在目标网络的机器上执行代码.一旦攻击者能够在企业内部网络中执行代码,攻击者要做的第一件事情就是尽可能的搜集有用的信息,比如网络拓扑,一些配置文件,账号密码等等,然后使用这些信息来提升权限,维持访问,最后当然是最重要的一步,获取目标的核心数据.虽然具体到每次的攻击可能其攻击的具体细节不同,但是他们一般都会有以下的几个大步骤:

恶意代码执行(通过钓鱼, web方面的攻击等等)

内网信息探测

窃取内网用户的凭据

利用各种信息,exploit等进行提权

拿到数据并外传

持久化(植入后门)

本文所介绍的各种域渗透的技巧都是基于攻击者已经拿到了一台域内服务器的权限,这是因为在现代的网络环境下这一般都不是太困难.

在域中获取域管理员权限的多种方法


1.在SYSVOL和组策略首选项中保存的密码

该方法是最简单的,因为不需要特别的“黑客”的工具。所有攻击者所要做的就是打开Windows资源管理器 然后 搜索域SYSVOL DFS共享的XML文件。大多数时候,下面的XML文件将包含凭据:groups.xmlscheduledtasks.xml,与services.xml

SYSVOL是域中针对所有已被认证过具有读取权限的用户的共享SYSVOL包含登录脚本组策略的数据,以及其他需要被域控制器访问的数据。所有域组策略都存储在这里: \\<DOMAIN>\SYSVOL\<DOMAIN>\Policies\

当创建一个新的GPP时,有在SYSVOL中会创建一个相关联的XML文件 ,其内容为相关配置数据并且如果为GPP提供了密码,密码会被AES-256 加密.但是微软在MSDN上发布的AES加密密钥可用于解密它。又由于在受信任域中的任何域用户或用户都对SYSVOL具有读取访问权限,所以任何域中的用户都可以在SYSVOL共享搜索包含“cpassword”的XML文件.一个示例文件如下:

http://p4.qhimg.com/t011dc05de153dede30.png

攻击者在访问该XML文件后,可以使用AES私钥来解密文件中加密的GPP密码。除此之外,我们可以使用PowerSploit其中的一个功能 Get-GPPPassword来解密那个被加密的秘钥。下面是一个使用示例

http://p5.qhimg.com/t01079de8ea34bf88a3.png

当然其他文件类型也可能会包含一些密码(通常是明文),如VBS和bat文件中,这就需要我们做好信息搜集了.

http://p9.qhimg.com/t0130a227bf0eac2794.png

你可能会认为只要打上一个防止管理员在Group Policy Preferences中放置凭证的补丁就能够解决这个问题,但我在对客户进行安全评估的时候依旧会在SYSVOL中搜索凭据。

解决方案:

在每台计算机上安装KB2962486补丁来管理管理GPO以防止在Group Policy Preferences中放置新的凭据

删除现有的包含SYSVOL密码的GPP XML文件。

不要将密码保存在所有经过验证的用户都可以访问的文件中。

关于这种攻击的的更多信息可以在这篇文章中找到:  Finding Passwords in SYSVOL & Exploiting Group Policy Preferences.

2.在没打补丁的域控制器上利用MS14-068漏洞

虽然这个漏洞已经过了很久了,但是这并不意味着所有的域控制器都已经打上了补丁。大多数组织在该漏洞爆出来后都为域控制器打上了补丁但这并不意味着之后的每一台新的的域控制器也都被打上了补丁. 感谢Gavin Millard(@gmillard在Twitter上),我们有一个比较好的图来诠释这个漏洞

                                                    

http://p4.qhimg.com/t0148d2aafe2f37d746.png

简单地说,利用MS14-068漏洞,只需不到5分钟就能使攻击者重新写一个有效的Kerberos TGT身份验证票据,使他们可以直接获取域管理员权限。如上图所示,只要在一张普通的机票上写上“飞行员”,然后在登机,你就可以享受飞行员的待遇了……

首次公布的针对MS14-068漏洞的exploit 在漏洞补丁被发布的第二个星期被发布.该exploit由Sylvain Monné (@BiDOrD) 编写,exploit的名字为PyKEK。PyKEK是一个可以运行在任何支持python并且能与域控制器交互的机器上的python脚本.脚本执行完毕后会生成一个ccache文件。然后使用Mimikatz把刚才PyKEK生成的ccache文件注入TGT到内存中,攻击者就可以拿到一个可以被当做域管理员的票据了!使用这张票据,攻击者就可以访问域控制器上的admin$ 共享了.下面是整个利用过程.

http://p6.qhimg.com/t01396220c0255e773e.png

缓解:

打上补丁.

利用MS14-068漏洞的过程:

1.以标准用户申请一个没有PAC的Kerberos TGT身份验证票证,域控制器会返回一个无PAC的TGT.

2.不使用key生成一个伪造的PAC,所以产生的PAC会使用当前域用户的密码数据来进行MD5而不是HMAC_MD5“签名”。

3.发送 PAC-less TGT和伪造的PAC给域控制器,作为TGS服务票据请求的数据的一部分。

4.之后域控制器会被这个迷惑,它会丢弃由用户发送的PAC-less TGT,并且创建一个新的TGT然后在它自己的授权数据中插入伪造的PAC ,接着发送该TGT给用户。

5.这个拥有伪造PAC的TGT使用户对于一个有漏洞的DC而言成为了一个域管理员。

Benjamin Delpy(Mimikatz的作者)写了一个MS14-068漏洞利用工具他的名称为Kekeo。这个工具的效果比pykek要好.下面是一个示范>

http://p2.qhimg.com/t01c915a98777dd5384.png

缓解措施:

1.运行DCPromo进程前检测是否安装了KB3011780补丁.使用powershell快速检测:get-hotfix 3011780

2.此外,实施自动化的过程,确保强制安装严重漏洞的补丁

3.离线破解 Kerberos TGS Service Ticket( Kerberoast)

Kerberoast可以作为一种从Active Directory中以一个普通用户权限提取服务帐户凭据的有效的方法,而且不需要发送任何数据包到目标系统。因为人们往往会使用弱口令,因而这种攻击是有效的。

Note:   使用这种方式,不需要提升权限,也不会向目标发送流量.

http://p6.qhimg.com/t014bf822af680b9f44.png

针对这种攻击的详细情况:https://files.sans.org/summit/hackfest2014/PDFs/Kicking%20the%20Guard%20Dog%20of%20Hades%20-%20Attacking%20Microsoft%20Kerberos%20%20-%20Tim%20Medin%281%29.pdf

工具:https://github.com/nidem/kerberoast

缓解措施:

1.域管理员的账号不能以任何形式在普通主机上登录.

2.所以机器的本地管理员账号密码要复杂,随机.

访问域数据库文件(NTDS.DIT)

域数据库文件(NTDS.DIT)包含了域中所有对象的信息,其中我们最为关注的是其中还包含了所有用户的账号和密码的hash值.NTDS.DIT文件只有能登录到域控制器上的用户才有可能访问得到.显然保护该文件非常重要.

下面是一些不需要域管理员权限来获取NTDS.DIT文件的方法.

找NTDS.DIT文件备份位置

在成员服务器上找NTDS.DIT文件

拿到了虚拟机宿主机的权限,把虚拟机中的域控制器中的 NTDS.DIT拷贝出来

域中有很多的组,其中能登录到域控制器的组有

Enterprise Admins (member of the domain Administrators group in every domain in the forest)

Domain Admins (member of the domain Administrators group)

Administrators

Backup Operators

Account Operators

Print Operators

这意味着如果我们能拿到一个位于这些组中的用户的账号密码我们就可以登录到域控制器了.

缓解措施:

限制能登录到域控制器的用户和组

限制拥有完全域权限的用户

保护NTDS.DIT文件.


当我们有了域管理员权限之后……


当我们拿到域管理员权限后,要做的最重要的事就是 dump所有域用户的凭证.

使用mimikatz dump所有域凭据

mimikatz可以在域控制器上dump所有域凭据

http://p4.qhimg.com/t01d1e5e22a0d79909e.png

Dump LSASS memory with Mimikatz (拿到域管理员凭据)

mimikatz可以被用来dump LSASS然后从LSASS.dmp 文件中导出所有已经登录了的账号密码.在域控制器中这通常会得到域管理员的凭据.

http://p2.qhimg.com/t013c4b86bbe1f0c15c.png

使用ntdsutil拿到NTDS.dit文件

http://p7.qhimg.com/t014d7f4343501e385f.png

从NTDS.dit文件中dump用户凭据

一旦攻击者从注册表中拿到了 system hive(reg save hklm\system c:\system.hive)和NTDS.dit文件,就意味着他拿到了域中的所有凭据.

http://p2.qhimg.com/t01d395a3601727cbca.png


原文链接:https://adsecurity.org/?p=2362

未经允许不得转载:安全路透社 » 【技术分享】在域中获取域管理员权限的多种方法及一些缓解措施

赞 (0)
分享到:更多 ()

评论 0

评论前必须登录!

登陆 注册