工具概述
SharpHose是一款基于C#开发的密码喷射工具,它是一款快速、安全且稳定的Cobalt Strike执行组件,并且可用性高。该工具提供了一种灵活的方式来帮助研究人员通过“加入域”或“不加入域”的场景来与活动目录进行交互。
除此之外,该工具还能够针对特定的域和域控制器进行渗透测试。SharpHose主要针对的是域密码策略,其中不仅包括引入细粒度的密码策略以避免帐户被锁定的情况,而且还能够为应用策略的用户和组枚举细粒度密码策略。如果策略也应用于组,则会捕获组用户。然后,所有启用的域用户都会根据其密码策略(按优先级顺序)进行分类,并标记为安全或不安全。此时,SharpHose还可以根据广大研究人员提供的可选排除列表来筛选其余用户。
除了密码喷射之外,红队研究人员还可以利用SharpHose直接查看目标域的所有密码策略、受该策略影响的所有用户,以及查看所有已启用的域用户。工具的输出结果可以直接发送至控制台或用户提供的输出数据存储目录下。
密码喷射
SharpHose内置了密码喷射的各种方法,当前该工具仅支持针对LDAP协议的密码喷射方式,并且所有方法均可根据广大研究人员的需要来定制扩展。
LDAP
活动目录密码喷射使用了LDAP协议,其特性如下:
异步密码喷射速度更快;
支持“加入域”或“不加入域”的场景下实现密码喷射;
紧密继承了域密码策略和细粒度密码策略;
防止智能锁定,出于安全因素考虑,锁定阈值设定为了n-1;
可选择喷射到特定域和域控制器;
可查看所有受密码策略影响的用户;
工具下载
广大研究人员可以使用下列命令将该项目源码克隆至本地:
代码语言:javascript复制git clone https://github.com/ustayready/SharpHose.git
工具编译条件
代码语言:javascript复制-SharpHose源码使用了Visual Studio 2019社区版构建;
-.NET Framework 4.5;
工具使用-Cobalt Strike用户
确保在使用SharpHose之前,添加了—auto参数来避免SharpHose中的一些额外交互提醒。除此之外,我们还需要在本地准备好运行参数,以便在运行之前阅读执行描述。如果在执行之前没有传入任何参数的话,SharpHose将抛出一个“缺少参数”的异常提醒,而且Cobalt Strike也不会返回任何输出。比如说当你看到“[-] Invoke_3 on EntryPoint failed”提醒时,就是遇到了这种情况,不过这个问题我们会在后续版本中修复。
密码喷射-w/o交互(已加入域):
代码语言:javascript复制SharpHose.exe --action SPRAY_USERS --spraypassword Spring2020! --output c:temp --auto
密码喷射-w/ 传入排除列表(已加入域):
代码语言:javascript复制SharpHose.exe --action SPRAY_USERS --spraypassword Spring2020! --output c:temp --exclude c:tempexclusion_list.txt
密码喷射(未加入域):
代码语言:javascript复制SharpHose.exe --action SPRAY_USERS --spraypassword Spring2020! --domain lab.local --username demo --password DemoThePlanet --output c:temp
显示密码策略(已加入域):
代码语言:javascript复制SharpHose.exe --action GET_POLICIES --output c:temp
显示策略用户(已加入域):
代码语言:javascript复制
代码语言:javascript复制SharpHose.exe --action GET_POLICY_USERS --policy lab --output c:temp
代码语言:javascript复制显示所有用户(已加入域):
代码语言:javascript复制SharpHose.exe --action GET_ENABLED_USERS --output c:temp
使用Cobalt Strike进行密码喷射(已加入域):
代码语言:javascript复制
代码语言:javascript复制execute-assembly /path/to/SharpHose.exe --action SPRAY_USERS --spraypassword Spring2020! --output c:temp --auto