Top 10 Active Directory Attacks

简介

AD(Active Directory) 一直是各企业所使用的核心认证系统的一个主流选择。AD提供了一种方法来存储和管理用户和计算机的详细信息,并让他们对服务和企业的IT网络进行认证。

多年来,该技术已经有了很大的发展,针对AD环境的攻击也是如此。正是因为如此使它变得如此流行,甚至专业认证也将其纳入教学大纲(OSCP等),从而使认证更接近实际场景。

什么是 Active Directory?

比如你到了办公室,打开SSO企业应用系统,输入你的用户ID和密码进入SSO应用系统。这中间谁来检查这个密码是否正确呢? 这种认证检查通常是由AD执行的,AD也是世界上最常用的身份管理服务。

AD的结构像一棵树,存储着与用户和企业网络有关的信息。它所拥有的信息包括但不限于:域、计算机、用户、组、组织单位、政策、站点、服务器、IP证书。

在进行攻击前我们在要知道以下几个术语:

  • Domain Controller:域控服务器是 AD 的核心,它拥有攻击者想要的所有组织信息。这是一个处理提供认证和授权服务的服务器。通常情况下,一个环境会有一个以上的DC,它们会相互复制配置。你破坏了一个,意味着你就破坏了所有。
  • AD DS: 存在于DC中的数据存储。它包含有关于用户、计算机等所有信息的文件。它包含NTDS.dit文件,包含所有基本上需要的所有信息,包括用户密码哈希值。
  • Domain:比如 jgeek.cn 就是一个域。域将确定管理的范围。任何连接到域的用户、个人电脑、系统都将在管理该域的DC中获得其信息。
  • Trees: 用于管理域名,比如 US.jgeek.cnAsia.jgeek.cn 可以作为两个子域在 jgeek.cn 中。
  • Forests: 一个或多个域树的集合。
  • OUs: 组织单位(Organisational Units)用于保存用户、计算机、组等信息的容器。 在一个组织中,人力资源部可以是一个OU组,法律部可以是另一个OU组。
  • Objects:由AD管理的单个实体。
  • DA: 域管理员,可以访问DC并控制网络的一组凭证。

攻击域名树

在讨论攻击之前,我们需要为潜在的攻击对象假设一个案例,例如这些人可以成为潜在的攻击者。

  • 坐在office网络之外的人。
  • 坐在组织的访客区并访问office网络的人。
  • 已经是Office网络的一部分的人,也许是心怀不满的员工。

有多种方法可以通过服务器、应用程序等进入office网络内部。假设攻击者是上述的B或C。如下的攻击方案1-4不需要任何证书,而攻击方案5-10需要一套低权限的证书。在从攻击1-4中获得凭证后,攻击者也可以转到5-10中提到的攻击方案。

攻击场景1:LLMNR Poisoning

LLMNR 是指链路本地多播名称解析。当内部 DNS 无法确认时,它被用来识别主机。例如一个攻击者在网络上启动了一个监听器,并等待网络上的用户登录到这个共享驱动器或任何其他网络目标。

步骤1:在网络中启动嗅探

$ responder.py -I eth0

如果用户输入错误的地址,DNS将无法解析目标。在这种情况下,在网络上监听的攻击者会发出一个假的回复,并从网络上收集用户名和NTLMv2哈希值。

这个NTLMv2的哈希值可以使用标准工具和公开可用的词表进行暴力破解。这是一组有效的凭证,可以用来进入网络并进一步渗透。

步骤2:抓取哈希值并将其传递给hashcat进行破解

$ hashcat -m 5600 hashes.txt rockyou.txt

具体攻击实例可以参见:https://www.jgeek.cn/article/115.html#Foothold_60

攻击场景2:SMB中继攻击

SMB中继攻击反映了攻击场景1中所做的事情。攻击者不是抓取哈希值并直接破解,而是在网络上转发哈希值以访问目标设备。如果用户可以访问目标设备,攻击者转发凭证将获得该设备的shell。

获得shell后,攻击者可以拉出可以破解的SAM哈希值。而一旦被破解,攻击者就有了一套可以用来深入挖掘的凭证。这种攻击工作的要求是,网络上的SMB签名应该被禁用。SMB签名如果启用,将检查traffic的签名要求,并不允许中转的traffic被用来获得访问。

步骤1:将应答器配置更改为倾听而不响应

SMB=Off & HTTP=Off

步骤2:启动响应程序,就像攻击场景1中的步骤1

步骤3:启动SMB中继

ntlmrelayx.py -tf targets.txt -smb2support

中继并登录后,该工具将转储该机器上本地用户的SAM哈希。

攻击场景3:DNS接管

IPv4在组织中被普遍使用,而IPv6则没有被完全使用。在这次攻击中,我们将使用一个名为mitm6的工具;它是用来设置中间人攻击的。mitm6被设计为与ntlmrelayx一起使用,应该平行运行。mitm6将欺骗DNS,使受害者连接到ntlmrelayx工具,进行HTTP和SMB连接。

PS:确保运行 ntlmrelayx 时使用 -6 选项,这将使它同时监听IPv4和IPv6。如果管理员在运行时登录,它将为我们创建一个域用户以及一个还原点。

步骤1:使用mitm6工具和ntlmrelay并行启动中间人

mitm6 -d <Domain> ntlmrelayx.py -6 -t ldaps://DC_IP -wh fakewpad.<Domain> -l lootme

攻击场景4:在互联网上搜索凭据以获取进入

这是一种可以在不被察觉的情况下以被动方式完成的事情。攻击者可以在互联网上搜索可用于访问IT网络的凭据。凭证可用于访问办公室的Wi-Fi或登录应用程序。这可能看起来很扯蛋,但在github和其他具有硬编码凭据的代码共享网站上有很多代码片段。

为了寻找凭据,可以在互联网上搜索域名或公司名称。这种攻击不仅仅基于OSINT,还需要一些交互来验证帐户。为了验证帐户,可以尝试访问应用程序或使用凭据运行 enum4linux 命令,以查看凭据是否有效。攻击者还可以检查域上的其他用户是否使用了相同的密码。如果用户名是数字,请尝试轮换数字并尝试使用相同的密码登录。如果管理员向其他人提供了相同的密码,则很有可能获得进一步渗透的有效凭据集。

攻击场景5和6:传递哈希并传递密码

由于我们有一组凭据,让我们可以在网络中“传递密码”,并查看使用这些凭据可以访问的所有目标。这可以通过 crackmapexec 工具进行检查。我们也可以使用相同的工具将散列转储到服务器上,以便以后使用。

步骤1:识别可以使用这些账户访问的服务器

如果输出显示(Pwned),我们可以对该服务器进行管理访问。可以使用相同的方法从该服务器中提取哈希值。

crackmapexec smb 10.0.0.0/24 -u <user> -d <Domain> -p <Password>

步骤2:从用户有权访问的服务器获取SAM哈希

crackmapexec smb 10.0.0.0/24 -u <user> -d <Domain> -p <Password> --sam

收集到的哈希值可以用 hashcat 破解,用于进一步的渗透。如果我们只有 NTLM 的哈希值,而没有明文密码,我们也可以在网段中进行碰撞,看看是否在任何地方都能发挥作用。这被称为传递哈希值攻击,因为我们在网段中传递哈希值。

步骤1:传递哈希值以检查用户有访问权限的服务器

crackmapexec smb 10.0.0.0/24 -u <user> -d <Domain> -H <Hash>

步骤2:使用下面的命令,在我们有权限的服务器上获得交互式shell (通过上述命令确认)

psexec.py <domain>/<user>:<Password>@<Server IP>

攻击场景7:Kerberoasting

Kerberoasting 是一种攻击技术,它可以利用 AD 中的 Kerberos 协议来提取用户凭据。 Kerberos 是一种常用的认证协议,用于在计算机网络中进行身份验证。 在 AD 中, Kerberos 用于在域控制器和客户端之间进行身份验证。

在 Kerberoasting 攻击中,攻击者试图提取服务帐户的凭据,这些帐户用于在 AD 域中运行服务。 这些凭据通常被加密,但是 Kerberos 协议的一些设计缺陷允许攻击者使用特定的技术来提取加密的凭据。 一旦攻击者拥有了这些凭据,他们就可以使用它们来访问服务帐户所拥有的资源,并在域中执行操作。

为了演示,我们使用Python脚本来生成服务票证。

步骤1:使用以下命令生成Kerberos票据

GetUsersSPNs.py <Domain>/<User>:<Password> -dc-ip <Domain controller IP> -request

步骤2:使用hashcat对服务账户的密码进行破解

hashcat -m 13100 hashes.txt rockyou.txt

攻击场景8:Bloodhound

Bloodhound 是一种用于分析和可视化 AD 域拓扑结构的工具。 它通过收集AD中的信息,并使用图形化界面展示域内的权限关系,帮助安全专业人员更好地理解域内的安全架构,并发现潜在的安全风险和漏洞。

它可以使用 PowerShell 脚本来收集信息,并使用 C# 和 Neo4j 图形数据库来存储和展示数据。它可以帮助发现域内的用户和组之间的关系,以及这些用户和组所拥有的权限。还可以帮助发现有趣的权限关系,例如高级权限的用户可以访问的资源,以及拥有恶意代码执行权限的用户。Bloodhound 可以与其他安全工具,如 Mimikatz 和 SharpHound,配合使用,以帮助安全专业人员更好地利用信息并执行攻击模拟。

它是一种强大的安全工具,可以帮助发现域内的潜在安全风险,并采取相应的措施来保护网络。例如:

  • 哪个用户在哪里登录?
  • 哪个用户有管理权限?

Shortest path to reach the Domain Controller (到达域控制器的最短途径)

步骤1:使用sharphound.ps1收集数据

PS>PowerShell -ep bypass PS>. .\SharpHound.ps1 PS>Invoke-BloodHound -CollectionMethod -All -Domain <Domain name> -ZipFileName file.zip

步骤2:上传至 bloodhound 进行分析

我们需要将域管理员登录的框作为目标,然后尝试访问并提取哈希值。

攻击场景9:MS14-025攻击

MS14-025也被称为 GPP 攻击,这是一种较早的存储密码的方式。GPP(Group Policy Preferences)是微软的一项功能,可以帮助管理员在域环境中管理用户和计算机的设置。 GPP 允许管理员在域内部分或全部计算机上配置操作系统、应用程序、网络和安全设置。

GPP 配置文件中的敏感信息,如用户名和密码,可能会被加密。 加密方式通常为 AES(Advanced Encryption Standard)加密,并使用 RSA(Rivest-Shamir-Adleman)公钥密码系统(PKCS)加密。要解密 GPP 配置文件中的加密信息,需要拥有解密所需的密钥。 在域内,这些密钥通常由域控制器维护。 如果是域管理员,则可以使用Group Policy Management Console(GPMC)工具或 Windows PowerShell 脚本访问这些密钥。

配置文件通常保存在域控制器上的 SYSVOL 文件夹内。 在 Windows 服务器操作系统中,SYSVOL 文件夹通常位于 C:\Windows\SYSVOL 路径下。 在域内的计算机上,GPP 配置文件可以通过使用 Group Policy Management Console(GPMC)工具查看和管理。

实例复现参见:https://www.jgeek.cn/article/81.html#22ADGPP_97

攻击场景10:Golden Ticket攻击

在这种攻击中,攻击者可以利用 Kerberos 功能生成票证,从而允许攻击者访问所有网络资源。这种攻击与 Mimikatz (一种用于从计算机内存中提取凭据的工具)密切相关。

假设正在使用 Mimikatz 生成一张金票,然后通过此票访问网络上的任何资源。

步骤1:打开Mimikatz,运行以下命令,提取 "SID "和 "NTLM "哈希值

lsadump::lsa /inject /name:krbtgt

步骤2:生成Golden Ticket

kerberos::golden /User:Administrator /domain:<Domain> /<sid> /krbtgt:<NTLM> /id:500 /ptt

步骤3:获得访问权限

misc::cmd

缓解措施

  • 保持系统和域控制器的补丁。
  • 建立强大的密码策略(复杂性、历史、过期),即使是服务账户和访客账户。
  • 确保不向任何用户提供默认密码,默认密码也应该由管理员在提供账户时改变。管理员在提供账户时也应更改默认密码。
  • 所有用户和管理员都遵守密码安全政策。
  • 不要使用管理账户进行非特权活动。
  • 不要使用域管理员账户登录不受信任的系统。
  • 禁用 LLMNR 和 NBT-NS 以及 GPP 的使用。
  • 尽可能地启用SMB签名。

总结

AD pentesting是渗透测试人员的金矿,因为这是大多数组织中的关键IT系统。

任何凭证泄露都有助于攻击者访问组织的域,如果执行了这些攻击操作而我们不缓解此类漏洞,会出现什么问题?AD漏洞可使攻击者造成如下的后果:

  • 完全控制IT基础架构,关闭计算机、服务器和应用程序。
  • 错误配置AD,因此导致正常用户无法登录。
  • 根据需要创建具有权限的帐户,并横向移动到网络中,而不会通过从一个帐户跳到另一个帐户而被检测到。
  • 将勒索软件安装到网络中。

简而言之,攻击者会对IT网络造成破坏,从而使网络陷入瘫痪。从技术、商业、财务和法律的角度来看,这些风险造成的影响都是合理且存在的。如果公司的服务器被用于对另一个目标发起攻击,或者将该组织的网络添加到僵尸网络的一部分,又该怎么办?

对于渗透测试人员和红队来说,AD在功能和集成方面非常复杂。在测试过程中,很容易被迷惑,被调侃。试着把每一步都记下来,并退一步来确定下一步可能采取的路径。如果其中一条不成功,就尝试另一种选择,另一种工具。


版权声明

除非另有说明,本网站上的内容均根据 Creative Commons Attribution-ShareAlike License 4.0 International (CC BY-SA 4.0) 获得许可。