Cobalt Strike 4.8 用户指南-第六节-Payload Artifacts和反病毒规避

Fortra 经常回答有关规避的问题。Cobalt Strike 会绕过反病毒产品吗?它绕过了哪些反病毒产品?多久检查一次?

Cobalt Strike 默认Artifact可能会被大多数端点安全解决方案拦截。尽管规避不是Cobalt Strike产品默认的目标,但Cobalt Strike确实提供了一些灵活性。

作为操作员,你可以更改 Cobalt Strike 在其工作流程中使用的可执行文件、DLLapplet和脚本模板。你还可以以多种格式导出 Cobalt Strike 的Beacon payload,可以与用于规避的第三方工具配合使用。

本章将重点介绍提供这种灵活性的 Cobalt Strike 功能。

# 6.1、Artifact 工件集

Cobalt Strike 使用 Artifact Kit 生成其可执行文件和 DLL。Artifact Kit是 Arsenal Kit 的一部分,Arsenal Kit 包含一系列工具包 ,它是一个源码框架,用于构建可规避某些防病毒产品的可执行文件和 DLL

# 6.1.1、Artifact 工件集理论

传统的反病毒产品使用签名来识别已知的恶意代码。如果我们将已知的恶意 shellcode 嵌入可执行文件,反病毒产品就会识别出 shellcode 并将可执行文件标记为恶意。

为了绕过这种检测,攻击者通常会以某种方式混淆 shellcode 并将其放入二进制文件中。这种混淆过程可以绕过使用简单字符串搜索来识别恶意代码的防病毒产品。

现在许多反病毒产品会进行更严格的检测。通过模拟虚拟沙箱运行可执行文件。在执行每个模拟步骤时,防病毒产品都会检查模拟进程空间中是否存在恶意行为。如果出现已知的不良行为,反病毒产品会将这个可执行文件或 DLL 标记为恶意文件。这项技术击败了许多试图从基于签名的防病毒产品中隐藏恶意代码的编码器和加壳器。

Cobalt Strike 的应对措施很简单。防病毒沙箱有其局限性。它不是一个完整的虚拟机。有些系统行为是防病毒沙箱无法模拟的。 Artifact Kit 是可执行文件和 DLL 模板的集合,这些可执行文件和 DLL 模板依赖于一些反病毒产品不会模拟来还原二进制中的 shellcode 的行为。

其中一项技术[参见:Artifact Kit 中的 src-common/bypass-pipe.c] 生成可执行文件和 DLL,通过命名管道为自身提供 shellcode。如果防病毒沙箱不能模拟命名管道,它将无法发现这个恶意的shellode

# 6.1.2、Artifact Kit 无效的地方

当然,反病毒产品可能击败 Artifact Kit 的特定实现。如果反病毒厂商为你使用的 Artifact Kit 技术编写了签名,那么它创建的可执行文件和 DLL 将被捕获。从Cobalt Strike 2.5 甚至更低版本就已经被反病毒软件盯上了。随着时间的推移,Cobalt Strike 中默认的绕过技术会逐渐失效。你可以使用这些 Artifact 工件集中的某项技术作为基础来构建你自己的Artifact 工件集实现。

但这远远不够。一些反病毒产品会调用反病毒厂商的服务器进行云查杀和检测,来决定该可执行文件或DLL 是否是非恶意的或者是之前从未见过的未知可执行文件或 DLL。其中一些产品会自动向厂商发送未知的可执行文件和 DLL,以供进一步分析并警告用户。有些产品会把未知的可执行文件或DLL 视为恶意的。这取决于反病毒产品及其设置。

要点:在这种情况下,再多的“混淆”也无济于事。你面临着一种不同类型的防御,需要相应地解决它。处理这些情况的方式与处理应用程序白名单的方式相同。尝试找到一个已知的好程序(例如,powershell),利用它把你的payload stager注入到内存中。

# 6.1.3、如何使用Artifact Kit

点击 Cobalt Strike 菜单Help -> Arsenal 以下载 Arsenal 套件(需要Cobalt Strike注册码)。还可以直接访问Arsenal网址:https://www.cobaltstrike.com/scripts

image-20230922103754410

Fortra 将 Arsenal Kit 作为 .tgz 文件分发。使用 tar 命令将其解压。 Arsenal Kit包括 Artifact Kit,它可以与其他套件一起构建或作为独立套件构建。有关构建套件的信息,请参阅 Arsenal Kit README.md 文件。

我们鼓励你修改 Artifact Kit 及其技术,使其满足你的需求。虽然说熟练的 C 程序员可以使用 Artifact Kit 做更多事情,但对于富有冒险精神的非程序员来说,使用 Artifact Kit 也是非常可行的。

# 6.2、Veil 规避框架

Veil 是一个流行的框架,用于生成可以绕过某些防病毒产品的可执行文件。可以使用 Veil 为Cobalt Strikepayload生成可执行文件。

安装说明:https://github.com/Veil-Framework/Veil

步骤:

1、点击Payloads -> Stager Payload Generator

2、选择监听器

3、选择输出类型为Veil

4、点击Generate生成payload并保存文件

image-20230922105030971

5、启动 Veil Evasion Framework 并选择你要使用的技术。

6、Vei 会询问关于 shellcode 的生成选项,选择Custom(自定义)

7、粘贴 Cobalt Strike 刚生成的payload的文件内容。

8、按 Enter 键,你将获得一个新的 Veil 制作的可执行文件

$ ./Veil.py
Veil>: use Evasion //使用Evasion
Veil/Evasion>: use python/shellcode_inject/flat.py //设置payload技术
.....

[python/shellcode_inject/flat>>]: generate //开始生成

 [?] Generate or supply custom shellcode?
                                                                                                                                        
     1 - Ordnance (default)
     2 - MSFVenom
     3 - Custom shellcode string
     4 - File with shellcode (\x41\x42..)
     5 - Binary file with shellcode

 [>] Please enter the number of your choice: 3 //选择自定义
 [>] Please enter custom shellcode (one line, no quotes, \x00.. format): //在此处粘贴payload txt内容
 [>] Please enter the base name for output files (default is payload): //按回车
 
 [?] How would you like to create your payload executable?

     1 - PyInstaller (default)
     2 - Py2Exe

 [>] Please enter the number of your choice: 1 //选择创建payload执行程序的方法
 
==============================================================================
      [Web]: https://www.veil-framework.com/ | [Twitter]: @VeilFramework
===============================================================================

 [*] Language: python
 [*] Payload Module: python/shellcode_inject/flat
 [*] Executable written to: /var/lib/veil/output/compiled/payload.exe
 [*] Source code written to: /var/lib/veil/output/source/payload.py
# 6.3、Java Applet攻击

Fortra 将源代码作为 Applet Kit 分发给 Cobalt Strike 的 Applet Attacks。 Cobalt Strike 武器库中也提供了此功能。通过Help -> Arsenal下载 Applet 工具包。

使用附带的 build.sh 脚本在 Kali Linux 上构建Applet工具包。许多 Cobalt Strike 客户利用这种灵活性,使用他们购买的代码签名证书来签署Cobalt Strike的 Java Applet 攻击。强烈推荐这种做法。

要使 Cobalt Strike 使用你的 Applet 工具包而不是内置工具包,请加载 Applet 工具包中包含的 applet.cna 脚本。

在 Cobalt Strike Arsenal页面上你会注意到Power Applet(Powershell 小程序)。这是 Cobalt Strike的 Java Applet攻击使用 PowerShell 的替代实现,用于将 payload 注入内存。Power Applet展示了你有使用完全不同的方法重建 Cobalt Strike 的标准攻击并把它门用于 Cobalt Strike 的工作流中的灵活性。通过加载小程序集中包含的 applet.cna 脚本,可以使 Cobalt Strike 使用你的小程序集而不是内置的工具包。

# 6.4、Resource Kit资源集

资源集是 Cobalt Strike 改变其在工作流中使用的 HTAPowershellPythonVBA 和 VBA 脚本模板的方法。Resource Kit是 Cobalt Strike arsenal的一部分,通过Help -> Arsenal下载。

资源集的 README.md 记录了所包含的脚本以及使用它们的功能。要规避反病毒产品,请考虑更改这些脚本中的字符串或行为。

要使 Cobalt Strike 使用你的脚本模板而不是内置脚本模板,请加载 dist/arsenal_kit.cna 或dist/resource/resources.cna脚本。有关更多信息,请参阅 Arsenal Kit README.md 文件。

# 6.5、Sleep Mask套件(睡眠掩码套件)

Sleep Mask Kit 是睡眠掩码函数的源代码,执行该函数来在Beacon进入休眠之前,它会对自身和相关内存(例如堆内存)进行掩码操作。用于规避针对.text/.data节的检测,通过Help -> Arsenal下载。其中包括sleep mask套件。

有关sleep mask套件的更多信息,请参阅 arsenal-kit/README.md 和 arsenal-kit/kits/sleepmask/README.md 文件。

# 说明

本文由笔者在Cobalt Strike官方用户指南原文(https://hstechdocs.helpsystems.com/manuals/cobaltstrike/current/userguide/content/topics/welcome_main.htm)基础上编译,如需转载请注明来源。

  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值