大规模本地管理员密码重用测试:渗透测试中的权限提升技巧

本文详细介绍了在Windows环境中发现大规模本地管理员密码重用漏洞的实战技术,通过修改密码喷洒命令实现对多台机器的本地管理员权限测试,并利用内置工具快速识别可横向移动的系统。

大规模本地管理员测试

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 设计