攻击 FreeIPA 域(下):对象枚举 - 嘶吼 RoarTalk – 回归最本质的信息安全,互联网安全新媒体,4hou.com

攻击 FreeIPA 域(下):对象枚举

丝绸之路 内网渗透 2020-01-05 10:30:00
收藏

导语:在本系列的这一部分中,我们将深入到一个定制的实验室环境中,来演示 FreeIPA 中的各种对象和结构是如何工作的,以及它们是如何相互交互的。

在本系列的第一部分中,我们回顾了 FreeIPA 使用的一些背景和基础技术。我们还讨论了几种身份验证机制和凭证的形式,特别是作为攻击者我们该如何识别、解析和重用凭证。如果你还没有读过第一部分,你可以在这里找到:

· https://posts.specterops.io/attacking-freeipa-part-i-authentication-77e73d837d6a

在本系列的这一部分中,我们将深入到一个定制的实验室环境中,来演示 FreeIPA 中的各种对象和结构是如何工作的,以及它们是如何相互交互的。然后我们将学习如何枚举这些结构。

实验室环境

在我们深入讨论之前,让我们简要回顾一下实验室环境是如何创建的,以及它的总体结构。 1577107714849049.png

详细设计 FreeIPA 实验室环境的图解

上面的图表是我为这个系列文章建立的 FreeIPA 实验室环境的总体布局,已经被用于安全研究。 FreeIPA 背后的团队为 FreeIPA 服务器和跨多个流行操作系统的客户机维护了 docker 镜像。你可以在 Dockerhub 或者 Github 上找到这些 docker 镜像,链接如下:

· https://hub.docker.com/r/freeipa/freeipa-server/

· https://github.com/freeipa/freeipa-container

所有的文档和安装说明都可以在 FreeIPA 网站上找到,链接如下:

· https://www.freeipa.org/page/Docker

我们在这个练习中的出发点将放弃对托管 FreeIPA 环境中的受损 web 服务器的访问。其目的是最终获得域的管理员凭证,并从 SQL 数据库中提取出敏感数据。在我们深入研究这些目标之前,让我们先了解一下 FreeIPA 环境中的一些基本对象和枚举技术。

主机、用户和组

与 windows 活动目录 (AD) 特别相似,FreeIPA 允许管理员创建主机和用户。这些主机和用户可以分别按照称为“主机组”和“用户组”的容器进行排序。与 AD 相比,这些群组的功能非常类似于组织单位(OU)。

基于主机的访问控制规则(HBAC-Rules)、特权、角色和 sudo-Rules 可以应用于上述任何对象。如果你不熟悉HBAC-Rules、 Privileges、 Roles 或 Sudo-Rules,不必担心。稍后我们将深入探讨这些问题。

有多种方法枚举来自 IPA 服务器中关于域的信息。在这篇文章中,我将尝试介绍以下两种方法:

· 在 LDAP 服务器上使用轻型目录访问协议(LDAP) 查询

· 利用内置的 IPA 管理工具

在这样的背景下,让我们深入实验室,开始枚举 FreeIPA 中的用户、主机、用户组和主机组。

通过 LDAP 查询枚举

在 FreeIPA 中默认情况下,LDAP 服务器允许匿名绑定,并且大量数据是在未经身份验证的情况下可枚举的。但是,在未经身份验证的情况下并非所有数据都是可枚举的。 ACL 显式保护了负责映射安全授权控件的数据。下面的命令将检索所有未经身份验证的可用数据:

ldapsearch -x

在本文的其余部分,所有 ldapsearch 命令都将经过身份验证。在本系列的第一篇文章中,我们将详细介绍如何在 FreeIPA 环境中识别和使用凭证。

有了有效的凭据,我们就可以更加具体,通过为每个搜索设置目标的基本专有名称(DN)来过滤查询。下面的查询标识了实验室环境中的所有用户:

ldapsearch -Y gssapi -b "cn=users,cn=compat,dc=westeros,dc=local"

1577107733904794.png

LDAP 的响应数据详细说明了实验室环境中的用户

我们可以使用相同的查询和稍微修改的基本专有名称来检索环境中所有主机的数据:

ldapsearch -Y gssapi -b "cn=computers,cn=accounts,dc=westeros,dc=local"

 1577107766661424.png

LDAP 的响应数据中包含了在实验室环境中的主机的详细信息

同样,我们可以修改基本专有名称来检索每个主机组和用户组:

ldapsearch -Y gssapi -b "cn=hostgroups,cn=accounts,dc=westeros,dc=local"                               
--------------------------------------------------------------------
ldapsearch -Y gssapi -b "cn=groups,cn=accounts,dc=westeros,dc=local"

通过 IPA 管理工具进行枚举

默认情况下,注册到 FreeIPA 域的主机将安装 IPA 管理工具作为注册过程的一部分。这个工具对于环境的枚举和配置非常有用。正如我们在上面讨论的那样,让我们回顾一下如何使用内置的 IPA 管理工具枚举关于用户、主机、用户组和主机组的信息。

遗憾的是,如果没有有效的域凭证,则无法使用 IPA 工具。如果你发现自己处于缺乏有效域凭据的情况,那么每个主机都会部署一个针对该主机的 keytab 凭证。此 keytab 可用于为主机本身获取有效的凭证缓存(CCACHE)票据授予票据(TGT)。

有了有效的凭证和对 ipa 实用程序的访问权限,你可以使用以下命令枚举相关信息:

ipa user-find
ipa usergroup-find
ipa host-find
ipa host-group-find
-------------------
ipa user-show  --all
ipa usergroup-show  --all
ipa host-find  --all
ipa hostgroup-show  --all

HBAC-Rule

Fedora 的 FreeIPA 文档将 HBAC-Rule 定义为:

访问控制,在一个高层次上,定义谁可以访问什么。谁可以是用户或主机(源主机) ,什么可以是主机(目标主机)、服务或服务组,或三者的组合。

HBAC-Rule 应该用于委托对特定资源的访问。如果配置正确,这种访问控制可以非常有效地减少横向移动。作为一个攻击者,我们可以使用 HBAC-Rule 来识别哪些帐户被委托访问环境中的特定资源。

让我们回顾一下如何列举这些策略。

通过 LDAP 查询进行枚举

下面的命令可以用来检索实验室环境中的所有 HBAC-Rule:

ldapsearch -Y gssapi -b "cn=hbac,dc=westeros,dc=local"

 1577107805848656.png

LDAP 的响应数据详细描述了实验室环境中的 HBAC-Rule

通过 IPA 管理工具进行枚举

下面的命令可用于检索实验室环境中的所有 HBAC-Rule。

ipa hbacrule-find
-----------------
ipa hbacrule-show  --all

Sudo-Rules

Fedora 的 FreeIPA 文档将 Sudo-Rules 定义为:

Sudo 规则在某种意义上类似于访问控制规则: 它们定义被授予访问权限的用户、规则范围内的命令,然后是规则应用的目标主机。在 FreeIPA 中,可以在规则中配置其他信息,比如 sudoers 选项和 run-as 设置,但是基本元素总是定义谁、什么(服务)和哪里(主机)

FreeIPA 提供了通过 sudo-rules 从一个集中的源管理 sudo 权限的能力。这些规则集可用于限制或委托在域中注册的主机上作为 sudo 执行命令的能力。作为一个攻击者,我们可以枚举哪些主机和用户也应用了这些规则集,以及哪些命令是允许通过规则集的。

通过 LDAP 查询进行枚举

下面的命令可以用来检索实验室环境中的所有 sudo-rules:

ldapsearch -Y gssapi -b "cn=sudorules,cn=sudo,dc=westeros,dc=local"

 1577107833210710.png

LDAP 的响应数据详细描述了实验室环境中的 sudo-rule

通过IPA管理工具进行枚举

下面的命令可以用来检索实验室环境中的所有 sudo-rules。

ipa sudorule-find
-----------------
ipa sudorule-show  --all

基于角色的访问控制

Fedora 的 FreeIPA 文档将以角色为基础的访问控制定义为:

基于以角色为基础的访问控制(RBAC)是一种组织访问 FreeIPA 管理的数据的分层方式。在组织中执行相同任务的不同用户通常组合成一个组,并且该组成为 FreeIPA 角色的成员。此角色为成员组和用户提供执行分配任务所需的权限。

在 FreeIPA 中的角色由几个不同的元素组成。每个角色都包含一组特权,而这些相应的特权包含一组权限。角色可以应用于用户、用户组、主机、主机组和服务。为了说明这个概念,我们来讨论一下 FreeIPA 中默认的“用户管理员”角色。

 1577107885333168.png

枚举 FreeIPA 中用户管理员角色的权限

如上图所示,“用户管理员”角色包含以下特权:

· 用户管理员

· 组管理员

· 阶段用户管理员

我们可以进一步深入研究并枚举授予每个特权的权限。

1577107914238162.png

枚举给定特权的权限

正如我们可以看到的,“用户管理员”角色在环境中包含相当多的权限。理解角色、特权和权限的一般概念和结构对于识别整个环境中的攻击路径至关重要。

通过 LDAP 查询进行枚举

下面的命令可以用来检索实验室环境中的所有角色:

ldapsearch -Y gssapi -b "cn=roles,cn=accounts,dc=westeros,dc=local"

1577107949794512.png

LDAP 的响应数据详细说明了“用户管理员”角色的属性

通过 IPA 管理工具进行枚举

下面的命令可以用来检索实验室环境中的所有角色、特权和权限。

ipa role-find
ipa role-show  --all
ipa privilege-find 
ipa privilege-show  --all
ipa permission-find
ipa permission-show  --all

总结

希望到目前为止,我们对 FreeIPA 环境中的各种不同类型的对象有了稍微更好的理解,并对它们的意义有了更深的了解。作为攻击者,不仅要能够枚举,而且要能够理解这些对象的重要性,这一点至关重要。

在本系列的下列文章中,我将着眼于讨论以下内容:

· 利用本文中介绍的枚举技术来发现实验室环境中的攻击路径

· 最后,概述了 FreeIPA 环境中攻击者可能滥用的一些错误配置和独特场景

参考资料

· 定义基于主机的访问控制规则,Fedora,https://docs.fedoraproject.org/en-US/Fedora/15/html/FreeIPA_Guide/hbac-rules.html

· Fedora, 定义 Sudo-Rules,Fedora,https://docs.fedoraproject.org/en-US/Fedora/18/html/FreeIPA_Guide/defining-sudorules.html

· Docker, FreeIPA,,https://www.freeipa.org/page/Docker

· FreeIPA 容器,Github,https://github.com/freeipa/freeipa-container

· FreeIPA 服务器,DockerHub,https://hub.docker.com/r/freeipa/freeipa-server/

· MIT Kerberos 文档,https://web.mit.edu/kerberos/krb5-latest/doc/

· Kerberos凭证窃取(GNU/Linux)、Ronan Loftus和Arne Zismerhttps://www.delaat.net/rp/2016-2017/p97/report.pdf

本文翻译自:https://posts.specterops.io/attacking-freeipa-part-ii-enumeration-ad27224371e1如若转载,请注明原文地址:
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论