绕过Cylance:第四部分 - Metasploit Meterpreter与PowerShell Empire代理
David Fletcher //
以下技术方法展示了在特定Cylance防护环境中获取C2通信的方法。测试前未检查集中式基础设施和终端代理的配置。该环境可能存在配置错误,且可能不符合Cylance基础设施部署的最佳实践。然而,根据我们的经验,配置错误并不罕见,且往往对环境的整体安全态势产生灾难性后果。这就是为什么我们在接受其声称的保护级别之前测试部署的原因。此外,这些文章说明了深度防御的必要性。在每次成功建立C2的实例中,二级或三级控制本可以(且应该)补偿初始控制的失败。分层防御是任何环境中保护的关键要素,组织必须面对信息安全没有银弹的事实。不要错过第一部分(使用VSAgent)、第二部分(关于使用DNScat2)和第三部分(David使用Netcat和Nishang)。
在使用多种协议和不同工具成功建立C2通信后,尝试了两种更传统的载荷。第一种是Metasploit的Meterpreter,第二种是PowerShell Empire代理。
在深入每个代理的细节之前,有必要在目标主机上获得PowerShell解释器访问权限。令人惊讶的是,有效的方法是重命名本机PowerShell.exe解释器。重命名可执行文件后,Cylance不再阻止在此环境中执行PowerShell。
Metasploit Meterpreter
Cylance代理在检测和清除Metasploit Meterpreter实例方面非常有效。Meterpreter载荷(32位和64位)以未编码和编码形式传递到目标主机,启用阶段编码,采用以下包格式,但从未获得结果shell。
- 分阶段Meterpreter Msfvenom载荷
- 使用备用EXE模板的分阶段Meterpreter Msfvenom载荷
- 无阶段Meterpreter Msfvenom载荷
- 使用RunDLL32.exe进行DLL注入
- 使用InstallUtil.exe进行卸载执行
- 使用“无PowerShell的PowerShell”技术进行PowerShell执行
- 修改的Unicorn PowerShell载荷**
- Import-ShellCode和Inject-ShellCode
尝试了几种PowerShell载荷。然而,许多Metasploit载荷会后续调用本机PowerShell解释器。这些载荷被解码、修改和重新编码以使用重命名的PowerShell解释器。但是,每次执行PowerShell时,后续进程都被Cylance阻止。对于传递到主机的每个Meterpreter载荷,都观察到了相同的响应。
为了节省时间,未尝试其他功能较弱的Metasploit载荷。
PowerShell Empire代理
通过重命名可执行文件获得对本机PowerShell解释器的访问后,PowerShell Empire代理C2只需最小修改即可获得。
首先,生成启动器阶段PowerShell载荷,如下所示。
然后修改解释器以匹配主机上重命名的解释器。
执行后,从目标主机观察到PowerShell Empire代理回调。
此初始代理使用PowerShell Empire提供的默认侦听器属性执行。信标行为(五秒间隔)被Cylance识别,并在大约三小时的代理通信后被阻止。
然而,代理的通信配置文件被修改为包括抖动和对非默认资源的请求,如Carrie Roberts的博客文章所述。配置代理以此方式通信后,C2通道在超过24小时内未被检测到。
准备好了解更多?
通过Antisyphon的实惠课程提升您的技能!
Pay-Forward-What-You-Can培训
提供实时/虚拟和点播形式
相关文章
绕过Cylance:第三部分 – Netcat & Nishang ICMP C2通道 | 绕过Cylance:第五部分 – 展望未来