SharpSCCM是由.net开发的利用SCCM进行横向移动和凭据收集的后利用工具。
图2-86 利用delete模块移除恶意组
SharpSCCM使用格式为“SharpSCCM.exe [command] [options]”,可以通过“-?”“-h”“--help”获取详细的帮助信息,命令及结果如图2-87所示。
图2-87 查看SharpSCCM帮助信息
其中常用的SharpSCCM子命令的具体用途如表2-6所示。
表2-6 SharpSCCM子命令及含义
可以使用该函数对混淆的字符串进行解密,结果如图2-88所示。
图2-88 利用deob函数进行解密
利用exec函数执行命令,结果如图2-89所示。
通过get模块,可以获取管理员、应用、部署等多个信息,其常用子命令及含义如表2-7所示。
(1)admins
通过该命令,可以通过WMI从SMS提供程序获取有关SCCM管理员和安全角色的信息,结果如图2-90所示。
图2-89 利用exec函数执行命令
表2-7 get模块的子命令及含义
(续)
图2-90 通过get模块的admins命令获取管理员相关信息
(2)applications
利用该命令,可以通过WMI从SMS提供程序获取有关应用程序的信息,结果如图2-91所示。
(3)site-info
通过该命令,可以获取站点信息,更快地定位目标服务器的位置,结果如图2-92所示。
图2-91 通过get模块的applications命令查看应用信息
图2-92 通过get模块的site-info命令获取站点信息
(4)naa或secrets
通过该命令,可以使用本地计算机的自签名短信证书从当前管理点来请求包含加密secrets的策略,结果如图2-93所示。
(5)users
通过该命令,可以枚举目标的用户信息,结果如图2-94所示。
图2-93 通过get模块的secrets命令获取secrets相关策略
图2-94 通过get模块的users命令获取用户信息
通过该模块,可以调用SMS进行调用查询或者身份强制认证。其子命令及含义如表2-8所示。
表2-8 invoke模块相关子命令及含义
(1)admin-service
通过该命令我们可以通过AdminService对客户端集合或单个客户端调用任意CMPivot查询。例如,想要从资源ID为16777220的设备获取本地管理员组的成员,结果如图2-95所示。
图2-95 通过invoke模块的admin-service命令调用CMPivot查询
还可以添加更加详细的筛选条件,比如,从指定设备获取过去8h的登录事件,并用JSON格式显示输出,结果如图2-96所示。
图2-96 从指定设备获取过去8h的登录事件
(2)client-push
通过如下命令,可以使管理站点启用客户端推送安装功能,强制管理站点服务器使用每个配置的账户及其域机器账户通过NTLM对任意目标进行身份验证。结果如图2-97所示。
此时在“资产和符合性”菜单的“设备”处可以看到新建了机器192.168.122.129,如图2-98所示。
之后就可以在我们监听的机器上获取认证内容,如图2-99所示。
图2-97 通过invoke模块的client-push命令启用客户端推送安装并触发NTLM强制认证
图2-98 在“资产和符合性”菜单的“设备”处看到新建机器
图2-99 监听机器接收NTLM请求
(3)query<query>
通过该命令,可以在SMS或其他服务器上执行给定的WQL查询。例如,想要查询“SELECT*FROM SMS_Admin”,结果如图2-100所示。
(4)update
通过该命令,可以强制客户端检查更新并执行任何可用的新应用程序。例如,强制所有CollectionID为SMS00001的集合的成员使用检索机器策略并执行任何可用的新应用程序,结果如图2-101所示。
通过该模块,可以与本地工作站/服务器进行交互,其常用子命令及含义如表2-9所示。
如果想收集本地主机当前的管理点和站点代码,则可执行如下命令,执行结果如图2-102所示。其中管理站点为“SCCM.contoso.local”,站点代码为“666”。
图2-100 利用invoke模块的query<query>命令进行WQL查询
图2-101 利用invoke模块的update命令强制客户端进行更新检查
表2-9 local模块子命令及含义
图2-102 通过local模块查询站点信息
通过该模块,可以通过WMI联系SMS来创建新对象,其子命令及含义如表2-10所示。
表2-10 new模块相关子命令及含义
(1)application
例如,创建一个名为“app01”的用于启动calc.exe的隐藏应用程序,结果如图2-103所示。
图2-103 通过new模块的application命令创建应用程序
(2)collection
接下来创建一个名为“devicecollection”的新设备集合,结果如图2-104所示。
图2-104 通过new模块的collection命令创建设备集合
(3)collection-member
例如,想要把设备SQL2019添加到devicecollection集合中,结果如图2-105所示。
图2-105 通过new模块的collection-member命令添加设备到指定集合中
(4)deployment
如果想要把app01应用程序部署到devicecollection集合中,则可以执行如下命令,结果如图2-106所示。
图2-106 通过new模块的deployment命令将应用程序部署到集合中
(5)device
若想要利用已知的机器账户凭据,创建名为“NEWDEVICE”的新设备记录和相应的可重用自签名证书,支持对secrets策略进行检索,结果如图2-107所示。
图2-107 通过new模块的device命令创建自签名证书
此时,我们就能在“设备”处看到所添加的设备,如图2-108所示。
利用该模块,可以通过WMI联系SMS以删除相应对象,其子命令及含义如表2-11所示。
表2-11 remove模块相关子命令及含义
(续)
图2-108 在“资产和符合性”菜单的“设备”处查看添加设备
如果想删除app01,则可执行“SharpSCCM.exe remove application app01”命令,执行结果如图2-109所示。
图2-109 通过remove模块移除应用