简介
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.cn 和 Asia.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 5600 hashes.txt rockyou.txt0
攻击场景 8:Bloodhound
Bloodhound 是一种用于分析和可视化 AD 域拓扑结构的工具。它通过收集 AD 中的信息,并使用图形化界面展示域内的权限关系,帮助安全专业人员更好地理解域内的安全架构,并发现潜在的安全风险和漏洞。
它可以使用 PowerShell 脚本来收集信息,并使用 C# 和 Neo4j 图形数据库来存储和展示数据。它可以帮助发现域内的用户和组之间的关系,以及这些用户和组所拥有的权限。还可以帮助发现有趣的权限关系,例如高级权限的用户可以访问的资源,以及拥有恶意代码执行权限的用户。Bloodhound 可以与其他安全工具,如 Mimikatz 和 SharpHound,配合使用,以帮助安全专业人员更好地利用信息并执行攻击模拟。
它是一种强大的安全工具,可以帮助发现域内的潜在安全风险,并采取相应的措施来保护网络。例如:
• 哪个用户在哪里登录?
• 哪个用户有管理权限?
Shortest path to reach the Domain Controller (到达域控制器的最短途径)
步骤 1:使用 sharphound.ps1 收集数据
$ hashcat -m 5600 hashes.txt rockyou.txt1
步骤 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 "哈希值
$ hashcat -m 5600 hashes.txt rockyou.txt2
步骤 2:生成 Golden Ticket
$ hashcat -m 5600 hashes.txt rockyou.txt3
步骤 3:获得访问权限
$ hashcat -m 5600 hashes.txt rockyou.txt4
缓解措施
• 保持系统和域控制器的补丁。
• 建立强大的密码策略(复杂性、历史、过期),即使是服务账户和访客账户。
• 确保不向任何用户提供默认密码,默认密码也应该由管理员在提供账户时改变。管理员在提供账户时也应更改默认密码。
• 所有用户和管理员都遵守密码安全政策。
• 不要使用管理账户进行非特权活动。
• 不要使用域管理员账户登录不受信任的系统。
• 禁用 LLMNR 和 NBT-NS 以及 GPP 的使用。
• 尽可能地启用 SMB 签名。
总结
AD pentesting 是渗透测试人员的金矿,因为这是大多数组织中的关键 IT 系统。
任何凭证泄露都有助于攻击者访问组织的域,如果执行了这些攻击操作而我们不缓解此类漏洞,会出现什么问题?AD 漏洞可使攻击者造成如下的后果:
• 完全控制 IT 基础架构,关闭计算机、服务器和应用程序。
• 错误配置 AD,因此导致正常用户无法登录。
• 根据需要创建具有权限的帐户,并横向移动到网络中,而不会通过从一个帐户跳到另一个帐户而被检测到。
• 将勒索软件安装到网络中。
简而言之,攻击者会对 IT 网络造成破坏,从而使网络陷入瘫痪。从技术、商业、财务和法律的角度来看,这些风险造成的影响都是合理且存在的。如果公司的服务器被用于对另一个目标发起攻击,或者将该组织的网络添加到僵尸网络的一部分,又该怎么办?
对于渗透测试人员和红队来说,AD 在功能和集成方面非常复杂。在测试过程中,很容易被迷惑,被调侃。试着把每一步都记下来,并退一步来确定下一步可能采取的路径。如果其中一条不成功,就尝试另一种选择,另一种工具。
还没有评论,来说两句吧...