绕过Cylance:第三部分 - Netcat与Nishang ICMP C2通道
David Fletcher //
以下技术方法用于说明在特定受Cylance保护环境中获取C2通信的途径。测试前未检查集中式基础设施和终端代理的配置。该环境可能存在配置错误,且未必符合Cylance基础设施部署的最佳实践。但根据我们的经验,配置错误并不罕见,且往往对环境的整体安全态势造成灾难性后果。这就是我们在接受其声称的保护级别之前先测试部署的原因。此外,这些文章也说明了深度防御的必要性。在每次成功建立C2的实例中,二级或三级控制本可以(且应该)补偿初始控制的失效。分层防御是任何环境保护的关键要素,组织必须面对信息安全没有银弹的事实。参见第一部分(使用SVAgent绕过)此处和第二部分(使用DNSCat2绕过)此处。
Netcat
第三种未被Cylance检测到的C2方法是原始netcat。本例中,监听器是一个原始netcat shell反向输出。netcat可执行文件被下载到目标主机并执行,如下所示。
在C2服务器上,netcat被配置为监听该端口以接收入站通信。当终端主机连接后,返回了一个Windows shell。
聪明的攻击者可能会上传Netcat的Nmap端口版本(名为Ncat),它支持TLS加密。这将使C2通道更难以检测。
与之前的C2通道不同,原始netcat C2不符合特定协议。除了先前建议的下载过滤和应用程序白名单之外,此通信可以通过协议检查来阻止。如果边界防火墙支持检查协议符合性的应用级代理,此流量将被丢弃。
Nishang ICMP C2通道
最后一种未被Cylance检测到的非传统C2方法是使用ICMP载荷进行通信。本例中,使用了Nishang框架中的PowerShell脚本Invoke-PowerShellIcmp.ps1
。
调查Cylance的部署配置发现,它被配置为阻止通过原生PowerShell.exe解释器执行任何内容。
然而,该主机上可用的PowerShell ISE。因此,脚本可以加载到ISE中,并通过点击播放按钮或使用熟悉的import-module语法来暴露其功能。本例中使用了播放按钮。
PowerShell脚本加载后,按如下方式调用。
等待的C2服务器捕获了客户端的回调,授予了对目标计算机的shell访问权限。
这种情况下,组织可以对ICMP整体做出决策。如果用户不需要ping互联网上的主机,组织可以简单丢弃所有来自内部主机的出站ICMP消息。
虽然PowerShell ISE对此脚本工作良好,但应注意避免任何包含对原生PowerShell解释器嵌入式调用的脚本。此外,如果引用了原生解释器,多线程脚本可能会表现出相同问题。
以下PowerShell脚本在通过PowerShell ISE启动时被发现有效。
- DomainPasswordSpray.ps1
- Invoke-Kerberoast.ps1
- Invoke-PowerShellICMP.ps1
- PowerView.ps1
- PowerUp.ps1
CylancePROTECT脚本控制模块仅阻止对原生解释器的调用。
应以与PowerShell.exe相同的方式限制对cmd.exe和PowerShell_ise.exe的访问。这两种工具都为攻击者在环境中横向移动提供了巨大能力。
准备了解更多?
通过Antisyphon的实惠课程提升您的技能!
支持随付随训的培训
提供实时/虚拟和点播形式
绕过Cylance:第二部分 – 使用DNSCat2 | 绕过Cylance:第四部分 – Metasploit Meterpreter与PowerShell Empire Agent
[返回顶部]