大规模本地管理员密码重用测试技术解析

本文详细介绍了在Windows环境中检测大规模本地管理员密码重用漏洞的技术方法,包括密码喷洒攻击的改造利用、net view命令收集系统列表,以及通过修改的批处理命令批量测试管理员权限的有效性。

大规模本地管理员测试

Brian Fehrman //

根据我们的经验,许多Windows环境中多台机器的本地管理员密码是相同的。我们称之为大规模本地管理员密码重用。这种配置对攻击者极为有利。一旦攻击者获得一台计算机的本地管理员密码,通常可以轻松地横向移动到环境中的其他计算机,并开始获取其他用户凭据以及系统上潜在的敏感信息。在某些情况下,仅需要管理员哈希即可使用该账户进行横向移动。

在执行横向渗透测试时,我们通常从一个非特权用户开始,并尝试将权限提升至域管理员。在最近的一次测试中,许多常规的提权技术都没有奏效。Beau Bullock (@dafthack) 加入协助我(他经常这样做),我们共同思考解决方案。

我已经尝试过的一种提权方法是密码喷洒。对于不了解的人来说,这种方法的理念是针对大量用户尝试几个常见密码。与暴力登录尝试相比,这种技术的优势在于不太可能锁定账户,并且很可能至少找到一个有效密码。

在这次测试中,网络规模较小,只找到了一组有效的凭据。该用户在任何地方都没有特殊权限,但他们能够访问一个内部SharePoint类型的服务器,而我们的用户无法访问。

我们浏览了SharePoint服务器,并找到了一份详细说明如何设置新用户机器的文档。在这份文档中,说明了每台新工作站的本地管理员密码应该是什么。它没有提到更改密码。重新阅读这一点,并花点时间消化。正如您可以想象的,我们非常兴奋!

几乎立即,我们在我们的机器上尝试了这个密码。然而,遗憾的是,它没有生效。但它肯定在某个地方有效……我们需要一种方法来检查。Metasploit包含允许您执行此操作的模块。这些模块需要首先在内部计算机上建立会话。我们可以建立会话,但我们想要一种更简单的方法。回想起密码喷洒攻击,我们突然想到;该命令可以稍作修改,以测试大规模本地管理员密码的使用。

以下是一个典型的密码喷洒命令:

1
2
3
@FOR /F %p in (pass.txt) DO @FOR /F %n in (users.txt) 
DO @net use \\LOGONSERVER\IPC$ /user:domain\%n %p 1>NUL 2>&1 && 
@echo [*] %n:%p && @net use /delete \\LOGONSERVER\IPC$ > NUL

实际上,它从pass.txt文件中取出一个密码,并将其与user.txt文件中的每个用户配对。然后,它通过以该用户身份发出net use命令,尝试针对域的LOGONSERVER对每个用户:密码组合进行身份验证。

我们如何修改它以测试大规模本地管理员密码?很简单。首先,我们需要获取环境中的系统列表。可以使用以下命令完成此任务:

1
net view /domain > systems.txt

接下来,我们需要稍微修改我们的循环。对于此检查,我们假设我们有一组有效的凭据。我们需要遍历系统而不是用户和密码。我们将密码喷洒命令修改如下:

1
2
3
@FOR /F %s in (systems.txt) DO @net use \\%s\C$ /.\Administrator 
AdminPass 1>NUL 2>&1 && @echo %s>>admin_access.txt && @net use 
/delete \\%s\C$ > NUL

该命令的概念与之前相同,但尝试访问每台机器上的C$共享,而不是域登录服务器上的IPC$共享。此命令成功的地方,我们就知道管理员凭据是有效的。账户有效的系统列表输出到名为admin_access.txt的文件中。然后,您可以使用多种方法之一开始从每台机器上获取凭据。在我们的案例中,这显示我们找到的凭据对网络上近200台机器有效,我们很快就能提升到域管理员权限。

总之,大规模本地管理员账户仍然是许多网络中的常见问题。一旦您拥有有效的凭据,就有现有方法可以测试这一点。在这里,我们描述了一种使用Windows命令 shell中的内置工具轻松完成此操作的方法。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计