最近,我对一个 FreeIPA 环境进行测试。因此我想花些时间分享一些关于 FreeIPA 的一些测试心得:它的工作原理及攻击手法。
首先,什么是 FreeIPA?我为什么对它感兴趣?
老实说,直到我在野外遇到 FreeIPA环境之后,我才知道它。经过一番调研后,才知道它是 Microsoft Windows Active Directory 的开源替代品,主要用作 Unix 环境的集成管理解决方案。与Active Directory类似,FreeIPA 实现了一个完整的 LDAP 目录基础架构,由 MIT 的 Kerberos 密钥分发中心支持。它使用 Dogtag 证书系统进行 CA 和 RA 证书管理,使其能够处理包括智能卡在内的多因素身份验证。SSSD 用于将 FreeIPA 集成到标准 Unix 身份验证过程中。
由于文章内容过多,为了使其有更好的可读性,将其分成一个系列。这篇文章主要涵盖以下内容:
加入到 FreeIPA 域中的 Linux 主机都有一些指纹标志,操作者可以通过这些指纹来获取有关主机和域的信息。让我们简单回顾一下能够证明当前主机已加入 FreeIPA 域的标志文件、环境变量和二进制文件。
以下文件应该在每个加入 FreeIPA 域的主机上都存在:
此外,还有几个环境变量,如果设置好了,可能表明当前主机已加入了 Kerberos 域:
还有一些二进制文件可将主机标识为已加入 FreeIPA 域:
了解用于身份验证和授权的基础知识和流程对于攻击者来说至关重要。在不了解每种身份验证机制的情况下,攻击者可能会错过可能已启用横向移动或整个环境中另一条有效的攻击路径。让我们简单回顾一下在 FreeIPA 环境中,身份验证过程是如何工作的。
由于 FreeIPA 使用 Kerberos 进行身份验证,所以这个过程与 Active Directory 中的身份验证非常相似。为了访问域中的资源,用户必须有一个有效的 Kerberos 票据才能访问该资源。根据 FreeIPA 域的配置,这些票据可以存储在许多不同的位置。简要回顾一下每个验证机制,包括如何从攻击者的角度分析和重用这些东西。
当票据被设置为磁盘上的文件时,标准格式和类型是 CCACHE
文件。这是一种简单的二进制文件格式,用于存储 Kerberos 凭证。这些文件通常存储在 /tmp
中,并带有 600 权限。从攻击者的角度来看,这很重要,原因如下。
解析 CCACHE 票据有很多不同的方法可以轻松完成。最简单的方法是用 klist 命令解析它。
对于攻击者来说,重新使用 CCACHE 票据非常容易。要重新使用有效的CCACHE 票据,请将 KRB5CCNAME 导出到有效票据文件的路径。系统应该会识别环境变量,并在与域交互时尝试使用该凭证。
FreeIPA 管理员的另一个选择是将 CCACHE 票据存储在 Linux 的 Keyring 中。keyring 位于内核内部,使管理员可以更好地控制已存储票据的检索和使用。票据可以通过以下几种不同方式进行范围划分:
KEYRING:name:票据的作用域仅限于一个名为 Keyring 的特定名称。
KEYRING:process:name:票据的范围仅限于特定的进程 ID。
KEYRING:thread:name:票据的作用域为特定线程。
KEYRING:session:name:票据的范围仅限于特定的用户会话。
KEYRING:persistent:uidnumber:票据的范围仅限域特定用户(无论会话如何)
根据管理员对存储在 Unix Keyring 中的票据进行范围划分,解析出来可能会有困难。不过,Unix keyring 中的 CCACHE 票据的默认范围是 KEYRING:persistent:uidnumber
。幸运的是,如果你是在用户的上下文中,klist 可以为我们解析出这些信息。
作为攻击者,根据票据的范围,重新使用存储在Unix keyring 中的 CCACHE 票据是相当困难的。幸运的是,@Tarlogic 的 @Zer1t0 已经构建出了可以从 Unix keyring 提出 Kerberos 票据的工具。该工具称为 Tickey,可以在此处找到。
Keytabs 是 FreeIPA 和 Kerberos 中使用的另一种形式的凭证材料。它由一对 Kerberos 委托人和加密密钥组成,这些密钥来自于与委托人相关的 Kerberos 密码。由于这些密钥来自于委托人的密码,因此,如果密码发生变化,keytab 将失效。
Keytab 文件可以用来获得它所覆盖的委托人的有效的授权票(TGT)。这个认证过程不需要密码,因为它包含从密码中派生的密钥。
解析 Keytab 文件非常简单,可以通过以下几种方法来完成。最简单的方法是用 klist 解析 keytab 文件。第二种方法是利用 Cody Thomas 创建的一个伟大的 Python 工具。他的 KeytabParser 项目将解析主体及其相关的加密密钥。
攻击者可以通过 kinit 命令生成 CCACHE 票据,从而重复使用存储在 keytab 文件中的凭证。
对于攻击者来说,了解操作环境、包括各种正在使用的技术以及如何应用这些技术是最基本的。我希望这个系列文章能够给大家作为一个参考。
这是在一系列文章中的第一篇文章,记录了我在对 FreeIPA 环境进行测试的一些经验。在接下来的帖子中,我将会以以下内容为目标。
原文:https://posts.specterops.io/attacking-freeipa-part-i-authentication-77e73d837d6a