在安全攻防方面,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 启动SOCKS服务器
然后,选择用于SOCKS监听器的特定端口并点击“Launch”按钮。在本例中,该端口被设置为TCP 4444。
图2 为SOCKS指定端口
这样的话,C2服务器将会打开4444端口,并允许代理流量通过该端口,从而进入beacon所在的网络。不过,我建议大家通过iptables防火墙的相关设置,只允许通过SSH访问C2服务器(关于这个主题,这里就不展开了,感谢兴趣的读者可以自己搜索相应的设置方法)。同时,最好禁止从互联网上直接访问50050端口(Cobalt Strike Team服务器端口)或4444端口。相反,应该使用SSH,并转发这些端口。若要在C2服务器的SSH上设置转发到4444的端口,只需运行下面的SSH命令即可:
上面的命令的作用是在Windows主机上创建一个本地端口,并在4444端口上进行监听。然后,该端口上的流量将通过SSH转发到C2服务器上的4444端口。
在Windows环境中,我喜欢使用Proxifier(https://www.proxifier.com/)来处理每个应用程序的代理设置。首先,我们需要打开Proxifier中的代理服务器菜单。
图3 Proxifier服务器菜单
然后,点击“add”按钮,并配置相关的代理设置,具体如下图所示。需要注意的是,Cobalt Strike的代理是SOCKS4。
图4 SOCKS代理设置
一旦这些都处理好了,请打开Proxification Rules,确保Localhost和Default都被设置为Direct。之后,点击“add”按钮,就会添加一个新的代理规则。
图5 添加代理规则
接下来,添加要通过代理发送的应用程序的细节信息。就这里来说,就是二进制程序adexplorer.exe。
图6 配置ADExplorer的代理规则
然后,点击确定按钮就可以了。
接下来,我将启动ADExplorer.exe,但由于我使用的是机器账户的哈希值,而不是用户名和密码,所以,我需要注入哈希值。然而,如果知道用户名和密码,那么只需启动ADExplorer,并在相应的字段填写要连接的服务器IP地址、用户和密码即可。
图7 填写连接信息
由于我打算注入哈希值,所以,这里将借助于Mimikatz工具。为此,需要先启动Mimikatz(特权模式),并通过运行priorlege::debug来获取调试权限。
如果收到错误信息,请仔细检查是否以特权模式启动的cmd。
图8 启用调试权限
一旦获得了调试权限,就可以把机器账户的哈希值注入到一个新建的、经过修改的ADExplorer.exe进程中。现在,请在Mimikatz中执行下面的命令:
就这里来说,我是在一台叫做PC1的机器上执行上述命令的,并进入Oddvar.moe域,具体如下所示:
图9 注入哈希值
现在,ADExplorer应该启动了,下面我们需要将域控制器的IP地址填入“Connect to”字段。由于我已经将哈希值注入到进程中,ADExplorer将使用该进程中现有的身份验证信息,所以,我们这里就不必填写用户或密码了。
图10 指定要连接的服务器
现在,请点击“OK”按钮。如果一切顺利的话,就能够通过机器账户的哈希值,使用ADExplorer通过SOCKS来浏览活动目录了。同时,我们也可以通过查看Proxifier来检查通信是否正常。如果想使用默认的389以外的端口,则可以通过在末尾添加冒号来指定端口。如果能使用636作为端口的话,最好使用LDAPS。
图11 指定通过LDAPS连接的服务器
图12 ADExplorer已经连接到活动目录
上面介绍了ADExplorer,下面继续介绍如何在活动目录中开展侦查活动。
侦察技巧1:获取快照
通过SOCKS代理查看活动目录有时会很慢,所以,我经常采取快照的方式。实际上,这种方式就是将能从活动目录中读到的所有内容都复制到磁盘上,并通过代理存储到ADExplorer所在的本地机器上,由于要传输大量数据,所以要事先考虑带宽是否能够满足要求。为此,我们可以选中连接(本例中为192.168.86.22[DC1.oddvar.moe]),然后点击“File > Create Snapshot”即可。
图13 创建快照
图14 保存快照的路径
然后,填写保存转储数据的路径,然后按“OK”按钮即可。当然,如果活动目录数据库比较大的话,这可能需要一些时间。对于一个拥有约30,000个用户的公司来说,转储的数据通常会超过800MB。一旦转储完成,我们就可以随时通过ADExplorer以离线方式打开转储数据,而不需要通过代理连接到网络环境了。在启动ADExplorer时,只需选择“Enter the path of a previous snapshot to load”即可,而无需填写连接细节。
图15 加载快照
侦查技巧2:站点与服务
在合作的早期阶段,我们通常不知道该组织的所有子网或地理位置。不过,很多情况下会把这些信息存储到活动目录中。这样做是为了使活动目录能够建立最佳的复制拓扑结构,并将认证请求引导到与用户或计算机认证相同站点的域控制器上。为了找到这些站点,我浏览了配置分区并查看了站点容器,具体见下图:
图16 活动目录的站点和服务
如果选中一个子网,就可以通过查看siteObject属性来了解它所属地理站点的详细信息。
图17 活动目录的站点详情
就这里来说,10.100.10.0/24子网被链接到名为Norway的站点。
侦查技巧3:域设置
通过选中某个域,就能看到关于该域的有趣细节,如密码策略的状态,甚至是ms-DS-MachineAccountQuota。如果客户使用了细粒度的密码策略,那么我们就可以覆盖这种密码策略,所以,如果打算根据这个策略进行密码喷射的话,则需要事先确定这一点。
默认情况下,活动目录中的所有认证账户都可以向域中添加计算机,而属性ms-DS-MachineAccountQuota则决定了一个给定账户可以添加多少台计算机(默认为10台)。当然,这个数值也可以在其他地方进行限制,如组策略,但了解这个值是多少是非常有价值的。如果它是0,就意味着普通用户不能向域中添加计算机。
图18 域设置
侦查技巧4:信任关系
如果您想知道是否存在某些信任关系,可以通过寻找设置为trustedDomain的objectClass属性来搜索它们,具体如下所示:
图19 搜索信任关系
这时会列出找到的信任关系,如果我双击GUI下部的搜索结果,就会直接跳到ADExplorer中,这时就可以查找相关信任关系的额外细节了,如信任类型、信任方向等等。
侦查技巧5:其他有用的搜索项目
下面是我在测试环境中经常使用的一些搜索项目。
旧版本的操作系统:
图20 搜索Windows Server 2003
本地管理员密码解决方案(LAPS)的密码:
图21 搜索LAPS密码
当环境实施了LAPS后,这些密码有可能以明文形式出现,也就是说,在这个字段中看到的就是实际的密码。LAPS密码通常被存储在ms-msc-admpwd属性中。
其他可能含有密码的属性:
· userPassword
· unicodePwd
· unixUserPassword
· msSFU30Password
· os400Password
如果在这些属性中发现了密码,那么通常被存储为ASCII码的形式。为此,我们可以使用一个转换器(例如,https://onlinestringtools.com/convert-ascii-to-string)来获得明文密码——不过,在将密码放入不受信任的在线工具时要格外小心。
搜索被设为1的admincount字段:
图22 搜索admincount
如果该账户是任何受保护组的成员的(例如,重要的活动目录组),那么,该属性将被设置为1。
搜索Description字段:
图23 在Description中搜索密码
图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/如若转载,请注明原文地址