广泛本地管理员密码重用测试:利用内置工具快速发现网络漏洞

本文详细介绍了在Windows环境中发现广泛本地管理员密码重用漏洞的技术方法,包括密码喷洒攻击原理、net view命令获取系统列表,以及修改后的net use命令批量测试管理员权限,最终实现在200多台机器上获取域管理员权限的过程。

广泛本地管理员测试

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