MalSCCM是由.net开发的SCCM利用工具,可以帮助攻击者在拥有SCCM服务器的管理权限后,滥用本地或远程的SCCM服务器,并且将恶意应用程序部署到他们管理的主机上。
可以通过查看进程以及服务的方式来确定SCCM相关服务器。如果发现目标机器,则进一步查看是否存在CcmExec.exe程序和ConfigMgr任务序列代理服务。如果存在,则目标机器为SCCM的客户端机器,目标环境存在SCCM管理站点,如图2-67及图2-68所示。
图2-67 查询机器上是否存在CcmExec进程
图2-68 查询机器上是否存在ConfigMgr任务序列代理服务
而分发点等信息会相应保存在注册表中。使用如下命令即可了解SCCM部署的站点代码(SCCM用于区分主要站点)以及机器的分发点,结果如图2-69所示。
此时如果想判断分发点是否是主站点,则可以通过MalSCCM以分发点服务器管理员的身份执行如下命令进行枚举。MalSCCM通过WMI连接并尝试枚举本地数据库。如果返回组信息,那么分发点也是主要站点,结果如图2-70所示。
图2-69 利用locate模块查询站点信息
图2-70 通过inspect模块列举组信息
一旦找到主站点,就可以使用MalSCCM中的检查命令,通过SCCM所使用的各种WMI类收集有关SCCM部署的信息。我们可以通过如下格式的命令对单个信息进行枚举。可枚举信息如表2-5所示。
表2-5 MalSCCM子命令列表
例如:可以通过MalSCCM收集所有信息,命令如下,结果如图2-71所示。
图2-71 利用inspect模块的all命令来枚举所有信息
利用MalSCCM,可通过恶意SCCM应用程序进行横向移动。由于SCCM使用“组”而不是单个机器进行部署,因此针对单个机器进行渗透的最佳方法是创建一个新的SCCM组。先将该组与现有的SCCM组融合在一起,然后将目标机器添加到该组中。这样就可以仅将恶意应用程序应用于目标机器,方便在攻击后进行清理。
具体的攻击流程如下。
①攻击主站点。
②枚举主站点信息,以了解要针对哪些机器进行攻击。
③创建一个与当前组融合的新组。
④将目标机器添加到新组中。
⑤创建恶意应用程序。
⑥将恶意应用程序部署到包含目标的组中。
⑦强制目标组与SCCM签入。
⑧横向移动后,清理部署和应用程序。
⑨删除目标组。
(1)枚举计算机
可以通过如下命令枚举SCCM计算机,结果如图2-72所示。
图2-72 利用inspect模块的computers命令枚举计算机信息
(2)枚举组
可以通过如下命令枚举SCCM的所有组,结果如图2-73所示。
(3)创建组
可以通过如下命令创建一个组,以用来后续推送恶意程序,结果如图2-74所示。
图2-73 利用inspect模块的groups命令枚举组信息
图2-74 利用create模块创建恶意组
(4)查询恶意组是否创建成功
可以通过枚举组信息来验证目标机器是否添加成功,结果如图2-75所示。
图2-75 通过枚举组信息查询恶意组是否创建成功
(5)将目标机器添加到恶意组
可以通过如下命令将枚举获得的计算机添加到新建的恶意组中,结果如图2-76所示。
图2-76 将计算机添加到恶意组中
(6)部署恶意程序
安装SCCM时,在分发点上会暴露一个名为“SCCMContentLib$”的共享。该共享对所有用户都是可读的,因此我们可以将恶意程序放置在这里,并且通过UNC连接方式进行指定。这里以计算器程序作为恶意程序,结果如图2-77所示。
图2-77 创建恶意程序
(7)检查应用程序是否存在
可以通过MalSCCM检测创建的恶意程序是否存在,结果如图2-78所示。
图2-78 利用inspect模块的applications命令枚举应用程序
对于通过MalSCCM部署的应用程序,无法直接通过软件库控制台查看,如图2-79所示。
(8)为目标组进行部署
接下来即可为我们创建的恶意组以及指定的目标计算机进行应用程序部署,结果如图2-80所示。
图2-79 在软件库控制台无法直接查看应用程序
图2-80 利用deploy模块进行部署
(9)查看部署情况
可以通过MalSCCM来确保应用程序部署成功,结果如图2-81所示。
图2-81 利用inspect模块的deployments命令枚举部署信息
上述应用程序的部署信息是可以通过控制台查看到的,如图2-82所示。
图2-82 通过控制台查看应用程序的部署信息
(10)强制组检查更新
可以通过MalSCCM强制组检查更新,从而触发恶意程序运行,结果如图2-83及图2-84所示。
(11)清理痕迹
可以通过MalSCCM进行痕迹清理,通过如下命令即可查找应用程序及其部署信息并将其删除,结果如图2-85所示。
图2-83 利用checkin模块强制客户端更新
图2-84 目标机器成功执行恶意程序
图2-85 利用cleanup模块进行痕迹清除
再通过如下命令将添加的恶意组移除,结果如图2-86所示。