Fortra
经常回答有关规避的问题。Cobalt Strike
会绕过反病毒产品吗?它绕过了哪些反病毒产品?多久检查一次?
Cobalt Strike
默认Artifact
可能会被大多数端点安全解决方案拦截。尽管规避不是Cobalt Strike
产品默认的目标,但Cobalt Strike
确实提供了一些灵活性。
作为操作员,你可以更改 Cobalt Strike
在其工作流程中使用的可执行文件、DLL
、applet
和脚本模板。你还可以以多种格式导出 Cobalt Strike
的Beacon payload
,可以与用于规避的第三方工具配合使用。
本章将重点介绍提供这种灵活性的 Cobalt Strike
功能。
# 6.1、Artifact 工件集
Cobalt Strike
使用 Artifact Kit
生成其可执行文件和 DL
L。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
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 Strike
的payload
生成可执行文件。
安装说明:https://github.com/Veil-Framework/Veil
步骤:
1、点击Payloads -> Stager Payload Generator
2、选择监听器
3、选择输出类型为Veil
4、点击Generate
生成payload
并保存文件
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
改变其在工作流中使用的 HTA
,Powershell
,Python
,VBA
和 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)基础上编译,如需转载请注明来源。