serviceFu 在最近的安全审计活动中,我们的团队设计了一个新的安全工具,并希望与整个社区分享。 在安全审计开始之前,我们首先必须尝试获取客户网络系统的初始访问权限。这个特定的客户投入了大量的人力和物力资源来提高企业网络系统的安全性。客户域名系统中的大多数客户都需要智能卡身份验证,并且凭据缓存被禁用(Mimikatz的sekurlsa: logonPasswords无效),并且还设置了基于主机的日志记录系统(Powershell,Sysmon,HIPS)。 经过仔细分析,我们专注于一个更“有价值”的服务器。此服务器“很有价值”,因为具有高级权限的网络管理员需要使用此服务器来执行管理员任务。我们在此服务器上成功找到了0天漏洞,并通过手动编码设计了漏洞利用代码,最终成功获得了SYSTEM权限。
使用SYSTEM权限,我们可以伪装成经常登录目标系统的用户,例如注入用户进程或直接窃取用户令牌。虽然这种技术可以有效地实现权限和水平渗透,但它要求我们找到一个活动会话来实现身份伪装。因此,此过程可能要求我们等待用户登录才能实现加注,在取消帐户后,我们无法使用自己的帐户。因此,此技术只能用于查找使用帐户凭据登录的用户的信息,但不能用于智能卡身份验证。 幸运的是,客户的Active Directory使用多个高级服务帐户进行安装和配置,并涉及域中的多个服务器。这些域服务帐户使用帐户凭据来实现登录身份验证。 Windows将为注册表HKLM: \ Security \ Policy \ Secrets中的每个服务的域服务帐户服务帐户存储加密凭据。在lsadump:秘密模块(Mimikatz)的帮助下,我们可以直接解密这些凭证。 接下来,我们的主要问题是如何找出在目标域服务帐户下运行的服务组件:我们是为每个系统手动运行mimikatz,还是在收集系统信息和注册表项内容后执行脱机。分析?虽然这不是技术难点,但我们很懒,我们不能手动完成。下面的屏幕截图显示了mimikatz导出的每个服务帐户的凭据信息:
假设我们的工具在以管理员权限帐户登录的目标主机上运行,我们将能够使用Win32 API远程查询目标主机上运行的服务。我们可以通过解析服务启动名来确定当前运行的环境是否是系统级帐户。如果确定了操作环境,我们可以使用远程注册表API来存储系统信息和注册表信息。接下来,在获取相关的注册表项后,我们可以使用mimikatz来解析和解密它,并获取服务帐户凭据。应该注意的是,我们使用C ++开发此工具的原因是它可以作为模块轻松集成到本机C2框架中。
但是,我们必须承认此工具仅适用于此特定情况,在其他特殊情况下,该工具可能无法完成您请求的任务。但是,帮助您远程扫描整个目标域中域服务凭据的纯文本信息非常有用。如果您对此项目感兴趣,请随时在我们的GitHub上留言或提交代码。 工具地址 serviceFu:[GitHub Portal] *参考源:securivera,FB编辑Alpha_h4ck编译,从FreeBuf转移