如何利用ADExplorer开展侦查工作

2021-05-04 11:25:22 Author: www.4hou.com
觉得文章还不错?,点我收藏



在安全攻防方面,ADExplorer是一款非常有用的工具,同时,它也是我的必备工具之一。但在这篇文章中,我们将更多地关注它的进攻性用途。这款工具的下载地址为https://docs.microsoft.com/en-us/sysinternals/downloads/adexplorer。

在工作过程中,经常遇到的一个典型情况是:已经拿下了一台服务器或工作站,并且不仅能够读取本地的NTLM哈希值,同时,还能读取用于对活动目录域进行验证的计算机账户NTLM哈希值。在这种情况下,我通常的做法是通过proxychain连接用户工作站上的beacon,然后使用已知的exploit来获得管理权限。

那么,我们如何通过SOCKS使用活动目录计算机账户来查看活动目录呢?实际上,能够完成这个任务的工具有很多,如Impacket或LDAPPER,但今天我们要介绍的是ADExplorer。

下面,我们将为读者介绍如何通过Cobalt Strike的C2服务器上的SOCKS代理,在本地Windows机器上运行ADExplorer。

首先,我们需要让Cobalt Strike在beacon上建立一个SOCKS代理。为此,只需要通过单击右键,然后选择“PIVOTING > SOCKS Server”即可。

1.png

图1  启动SOCKS服务器

然后,选择用于SOCKS监听器的特定端口并点击“Launch”按钮。在本例中,该端口被设置为TCP 4444。

 1.png

图2  为SOCKS指定端口

这样的话,C2服务器将会打开4444端口,并允许代理流量通过该端口,从而进入beacon所在的网络。不过,我建议大家通过iptables防火墙的相关设置,只允许通过SSH访问C2服务器(关于这个主题,这里就不展开了,感谢兴趣的读者可以自己搜索相应的设置方法)。同时,最好禁止从互联网上直接访问50050端口(Cobalt Strike Team服务器端口)或4444端口。相反,应该使用SSH,并转发这些端口。若要在C2服务器的SSH上设置转发到4444的端口,只需运行下面的SSH命令即可:

image.png

上面的命令的作用是在Windows主机上创建一个本地端口,并在4444端口上进行监听。然后,该端口上的流量将通过SSH转发到C2服务器上的4444端口。

在Windows环境中,我喜欢使用Proxifier(https://www.proxifier.com/)来处理每个应用程序的代理设置。首先,我们需要打开Proxifier中的代理服务器菜单。

 1.png

图3  Proxifier服务器菜单

然后,点击“add”按钮,并配置相关的代理设置,具体如下图所示。需要注意的是,Cobalt Strike的代理是SOCKS4。

1.png 

图4  SOCKS代理设置

一旦这些都处理好了,请打开Proxification Rules,确保Localhost和Default都被设置为Direct。之后,点击“add”按钮,就会添加一个新的代理规则。

 1.png

图5  添加代理规则

接下来,添加要通过代理发送的应用程序的细节信息。就这里来说,就是二进制程序adexplorer.exe。

 1.png

图6  配置ADExplorer的代理规则

然后,点击确定按钮就可以了。

接下来,我将启动ADExplorer.exe,但由于我使用的是机器账户的哈希值,而不是用户名和密码,所以,我需要注入哈希值。然而,如果知道用户名和密码,那么只需启动ADExplorer,并在相应的字段填写要连接的服务器IP地址、用户和密码即可。

1.png 

图7  填写连接信息

由于我打算注入哈希值,所以,这里将借助于Mimikatz工具。为此,需要先启动Mimikatz(特权模式),并通过运行priorlege::debug来获取调试权限。

如果收到错误信息,请仔细检查是否以特权模式启动的cmd。

 1.png

图8  启用调试权限

一旦获得了调试权限,就可以把机器账户的哈希值注入到一个新建的、经过修改的ADExplorer.exe进程中。现在,请在Mimikatz中执行下面的命令:

 image.png

就这里来说,我是在一台叫做PC1的机器上执行上述命令的,并进入Oddvar.moe域,具体如下所示:

 1.png

图9  注入哈希值

现在,ADExplorer应该启动了,下面我们需要将域控制器的IP地址填入“Connect to”字段。由于我已经将哈希值注入到进程中,ADExplorer将使用该进程中现有的身份验证信息,所以,我们这里就不必填写用户或密码了。

 1.png

图10  指定要连接的服务器

现在,请点击“OK”按钮。如果一切顺利的话,就能够通过机器账户的哈希值,使用ADExplorer通过SOCKS来浏览活动目录了。同时,我们也可以通过查看Proxifier来检查通信是否正常。如果想使用默认的389以外的端口,则可以通过在末尾添加冒号来指定端口。如果能使用636作为端口的话,最好使用LDAPS。

 1.png

图11  指定通过LDAPS连接的服务器

1.png 

图12  ADExplorer已经连接到活动目录

上面介绍了ADExplorer,下面继续介绍如何在活动目录中开展侦查活动。

侦察技巧1:获取快照

通过SOCKS代理查看活动目录有时会很慢,所以,我经常采取快照的方式。实际上,这种方式就是将能从活动目录中读到的所有内容都复制到磁盘上,并通过代理存储到ADExplorer所在的本地机器上,由于要传输大量数据,所以要事先考虑带宽是否能够满足要求。为此,我们可以选中连接(本例中为192.168.86.22[DC1.oddvar.moe]),然后点击“File > Create Snapshot”即可。

 1.png

图13  创建快照

 1.png

图14  保存快照的路径

然后,填写保存转储数据的路径,然后按“OK”按钮即可。当然,如果活动目录数据库比较大的话,这可能需要一些时间。对于一个拥有约30,000个用户的公司来说,转储的数据通常会超过800MB。一旦转储完成,我们就可以随时通过ADExplorer以离线方式打开转储数据,而不需要通过代理连接到网络环境了。在启动ADExplorer时,只需选择“Enter the path of a previous snapshot to load”即可,而无需填写连接细节。

 1.png

图15  加载快照

侦查技巧2:站点与服务

在合作的早期阶段,我们通常不知道该组织的所有子网或地理位置。不过,很多情况下会把这些信息存储到活动目录中。这样做是为了使活动目录能够建立最佳的复制拓扑结构,并将认证请求引导到与用户或计算机认证相同站点的域控制器上。为了找到这些站点,我浏览了配置分区并查看了站点容器,具体见下图:

 1.png

图16  活动目录的站点和服务

如果选中一个子网,就可以通过查看siteObject属性来了解它所属地理站点的详细信息。

 1.png

图17  活动目录的站点详情

就这里来说,10.100.10.0/24子网被链接到名为Norway的站点。

侦查技巧3:域设置

通过选中某个域,就能看到关于该域的有趣细节,如密码策略的状态,甚至是ms-DS-MachineAccountQuota。如果客户使用了细粒度的密码策略,那么我们就可以覆盖这种密码策略,所以,如果打算根据这个策略进行密码喷射的话,则需要事先确定这一点。

默认情况下,活动目录中的所有认证账户都可以向域中添加计算机,而属性ms-DS-MachineAccountQuota则决定了一个给定账户可以添加多少台计算机(默认为10台)。当然,这个数值也可以在其他地方进行限制,如组策略,但了解这个值是多少是非常有价值的。如果它是0,就意味着普通用户不能向域中添加计算机。

 1.png

图18  域设置

侦查技巧4:信任关系

如果您想知道是否存在某些信任关系,可以通过寻找设置为trustedDomain的objectClass属性来搜索它们,具体如下所示:

 1.png

图19  搜索信任关系

这时会列出找到的信任关系,如果我双击GUI下部的搜索结果,就会直接跳到ADExplorer中,这时就可以查找相关信任关系的额外细节了,如信任类型、信任方向等等。

侦查技巧5:其他有用的搜索项目

下面是我在测试环境中经常使用的一些搜索项目。

旧版本的操作系统:

 1.png

图20  搜索Windows Server 2003

本地管理员密码解决方案(LAPS)的密码:

 1.png

图21  搜索LAPS密码

当环境实施了LAPS后,这些密码有可能以明文形式出现,也就是说,在这个字段中看到的就是实际的密码。LAPS密码通常被存储在ms-msc-admpwd属性中。

其他可能含有密码的属性:

· userPassword

· unicodePwd

· unixUserPassword

· msSFU30Password

· os400Password

如果在这些属性中发现了密码,那么通常被存储为ASCII码的形式。为此,我们可以使用一个转换器(例如,https://onlinestringtools.com/convert-ascii-to-string)来获得明文密码——不过,在将密码放入不受信任的在线工具时要格外小心。

搜索被设为1的admincount字段:

 1.png

图22  搜索admincount

如果该账户是任何受保护组的成员的(例如,重要的活动目录组),那么,该属性将被设置为1。

搜索Description字段:

 1.png

图23  在Description中搜索密码

 1.png

图24  在Description中搜索pwd

有时候,我会直接搜索“description not empty”,然后手动检查搜索结果。在使用“包含”搜索时,有时会使用脱机ADExplorer快照遇到一个错误,该错误会使ADExplorer崩溃,但在联机使用ADExplorer时则不会遇到这种情况,所以问题不是太大。

在这篇文章之前,许多安全人员就已经对ADExplorer进行了许多介绍。Black Hills的Sally Vandeven就写过一篇很好的文章,向我们展示了如何使用ADExplorer编辑对象,以及其他一些东西,详情请见:https://www.blackhillsinfosec.com/domain-goodness-learned-love-ad-explorer/。

另一篇很棒的文章的地址为https://github.com/stufus/ADEGrab,它是由MWR Infosecurity的Stuart Morgan撰写的。如果你想从ADExplorer中抓取搜索结果,这篇文章是非常有用的,因为没有原生的方法可以做到这一点。

本文到此就结束了,我希望ADExplorer能够在您的工作中祝您一臂之力。当然,还有许多其他的工具能够以更自动化的方式来完成工作,但我有时更喜欢使用GUI来查看事物的结构,甚至回发现我通常会忽略的东西。我希望将来能够将ADExplorer的结果导出到BloodHound的数据中,这将是非常了不起的!或者,能够将ADExplorer的结果编辑到BloodHound中,甚至能随心所欲地编辑离线快照。

祝阅读愉快,并祝工作顺利!

本文翻译自:https://www.trustedsec.com/blog/adexplorer-on-engagements/如若转载,请注明原文地址



觉得文章还不错?,点我收藏



如果文章侵犯到您的版权,请联系我:buaq.net[#]pm.me