由于这是我第一次测试 EDR,因此我想要一个开源的 EDR 解决方案,因此选择了 Elastic。
本文的前言是避免 EDR 检测并执行对另一台计算机的横向移动。
实验室设置来自 Zeropointsecurity 的 CRTO II 课程。因此,在我们深入研究之前,Cobalt Strike 可塑性配置文件有一些设置,大多数用于逃避 Cobalt Strike 相关 EDR 检测的配置都是使用下一篇文章 https://www.cobaltstrike.com/blog/cobalt-strike-and-yara-can-i-have-your-signature 中提到的技术完成的。除此之外,还有一些其他配置,但是,为了文章的标题,我将避免详细介绍。
在解释规避技术之前,我将解释一下这种情况。所以,我们有 2 台机器,WKSTN-1 和 WKSTN-2。两台计算机都部署了 EDR 代理,并且 WKSTN-2 启用了 ASR。用户有权访问 WKSTN-1,并且是 WKSTN-2 的本地管理员。我需要进行横向移动。
因此,首先,我必须通过 SMB 传输我的 P2P 信标,这将生成以下警报:Potential Lateral Tool Transfer via SMB Share(通过 SMB 共享进行潜在横向工具传输) https://www.elastic.co/guide/en/security/current/potential-lateral-tool-transfer-via-smb-share.html。
如果我们查看 rule 查询,我们会看到我们可以通过更改 loader 的 magic bytes 及其扩展来规避此规则。
(file.Ext.header_bytes :"4d5a*"or file.extension : ("exe","scr","pif","com","dll"))]by process.entity_id
我们可以从可延展的 C2 配置文件中修改 PE 在内存中的加载方式。
其次,我们将 loader 的扩展名更改为 .png。这样我们就可以避免此警报并将我们的加载程序从 WKSTN-1 转移到 WKSTN-2。
传输文件后,如果我们要将文件的扩展名从 .png 更改为 .exe,将生成一个警报:通过文件共享远程执行
如果我们查看此警报的查询,我们将命中以下规则集
process.pid ==4and (file.extension :"exe"or file.Ext.header_bytes :"4d5a*")]by host.id, file.path
为了逃避此警报,我们可以做的是将扩展名从 .png 更改为 .scr。“.scr”本质上是 Microsoft 用于屏幕保护程序的可执行文件。
更改扩展后,我们可以使用 SharpWMI 在计算机上远程执行 WMI 命令并尝试执行此有效负载,但是,会生成另一个警报:WMI 传入横向移动。
在研究了规避技术之后,我找到了另一种无需使用 WMI 即可执行远程命令的方法。我不会详细介绍这种方法,但你可以在这里阅读它。我在 Cobalt Strike 中加载了 scshell BOF 并执行了远程命令,但是,生成了另一个新警报:System Shells via Services。
scshell 10.10.120.102 XblAuthManager"C:windowssystem32cmd.exe /c C:windowsCLSMBL.scr"
阅读此警报,很明显,检测到该警报是因为 cmd.exe 进程正在以 SYSTEM 用户身份远程执行。
process.name : ("cmd.exe","powershell.exe","pwsh.exe","powershell_ise.exe")
这个警报很容易规避,直接执行有效载荷就足够了。
scshell 10.10.120.102 XblAuthManager"C:windowsCLSMBL.scr"
然而,并非一切都很顺利,还生成了另一个警报:通过 Windows 服务执行可疑。
在查看此警报的规则集后,我注意到了以下排除项:
我将加载程序存储位置的文件路径更改为 C:ProgramDataMicrosoftSearch,从那里执行加载程序并获得一个信标。:D
漏洞利用链
-
验证对 WKSTN-2 的访问
2. 将 .png 文件上传到 excluded 目录
3. Cobalt Strike 使用“fork and run”来执行命令,Elastic 会检测到这些命令,因此为了避免我使用不变的非托管运行空间 PowerShell 将扩展名更改为 .scr。由于这将加载 “System.Management.Automation.dll”,因此我们需要使用已知加载此 DLL 的进程,这就是我在示例中选择 msiexec.exe 的原因。
4. 使用 scshell 执行远程文件
5. 连接到 Beacon
结论
我们能够规避 EDR 警报并执行从 WKSTN-1 到 WKSTN-2 的横向移动。
引用
-
https://www.cobaltstrike.com/blog/cobalt-strike-and-yara-can-i-have-your-signature -
https://securityintelligence.com/x-force/defining-cobalt-strike-reflective-loader/ -
https://www.elastic.co/guide/en/security/current/potential-lateral-tool-transfer-via-smb-share.html -
https://www.elastic.co/guide/en/security/current/remote-execution-via-file-shares.html -
https://www.elastic.co/guide/en/security/current/wmi-incoming-lateral-movement.html -
https://www.elastic.co/guide/en/security/current/system-shells-via-services.html -
https://github.com/elastic/protections-artifacts/blob/main/behavior/rules/privilege_escalation_suspicious_execution_via_windows_services.toml -
https://github.com/Mr-Un1k0d3r/SCShell -
https://www.elastic.co/guide/en/security/current/suspicious-powershell-engine-imageload.html
原文始发于微信公众号(安全狗的自我修养):绕过 EDR 执行横向移动
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论