cobalt strick 4.0 系列教程(6)Payload Artifact 和反病毒规避

0x01 哲学

Strategic Cyber 责任有限公司会定期回答有关规避的问题。Cobalt Strike 是否能够绕过 AV 产品?它能绕过哪些 AV 产品?它多久检查一次?

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

你作为操作员可以改变 Cobalt Strike 在它的工作流中使用的可执行文件、DLL、applet 和脚本模板。你也可以以多种不同的格式导出 Cobalt Strike 的 Beacon payload,这样可以与用于帮助规避的第三方工具一起工作。

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

0x02 Artifact 工件集

Cobalt Strike 使用 Artifact 工件集来生成它的可执行文件和 DLL。这个 Artifact 工件集是一个源码框架、用于建立(build)可以规避一些反病毒产品的可执行文件和 DLL。

Artifact 工件集理论

传统的反病毒产品使用签名来识别已知的恶意程序。如果我们把一些被标记的恶意 shellcode 注入一个可执行文件,那么反病毒产品会识别 shellcode 并把此可执行文件标为恶意。

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

很多反病毒产品会进行更严苛的检测。这些反病毒产品模拟一个可执行程序在一个虚拟沙盒中的执行。在执行的每个模拟步骤中,这个反病毒产品会检测在模拟的进程空间中的已知的恶意部分。如果已知的恶意部分出现,反病毒产品会把这个可执行文件或 DLL 标记为恶意的。这项技术打败了许多编码器和程序包,它们试图去从基于签名的反 AV 产品中隐藏已知的恶意部分。

Cobalt Strike 对此的应对策略是很简单的。这个反病毒沙盒有一些限制。这不是完整的虚拟机。有一些反病毒沙盒不会模拟的系统行为。这个 Artifact 工件集是一些可执行文件和 DLL 模板的合,这些可执行文件和 DLL 模板依赖于一些反病毒产品不会模拟来还原二进制中的 shellcode 的行为。

一些技术[请参阅:Artifact 工件集中的 src-common/bypass-pipe.c ]生成可执行文件和 DLL,这些可执行文件和 DLL 通过命名管道为 shellcode 服务,通过命名管道传输 shellcode。如果反病毒沙箱不模拟命名管道,就发现不了那些已知的恶意 shellcode。

Artifact 工件集失效的地方

当然,反病毒产品可能击败 Artifact 工件集中的特定的实现。如果一个反病毒的供应商为你使用的Artifact 工件集技术编写了签名,那么它创建的可执行文件和 DLL 将被捕获。杀软的追踪始于 CobaltStrike 2.5 甚至更低的版本。随着时间的推移,Cobalt Strike 中默认的绕过技术会逐渐失效。如果你想最大化利用 Artifact 工件集,你可以使用这些 Artifact 工件集中的某项技术作为基础来构建你自己的Artifact 工件集实现。

但是哪怕是这样也还远远不够。一些反病毒产品会回连厂商的服务器。这些厂商来决定该可执行文件或DLL 是否是非恶意的或者是之前从未见过的未知可执行文件或 DLL。一些这些产品会自动的把未知的可执行文件或 DLL 发送到厂商用于进一步的研究和提醒用户。其他的一些产品会把未知的可执行文件或DLL 视为恶意的。这取决于反病毒产品及其设置。

关键是,在这种情况下,再怎么样“混淆”也帮不了你。你要面对的是不同的防御方式,需要针对性的解决方案。你应该像处理应用白名单一样处理这些情况。尝试找到一个已知的好的程序(比如powershell),利用它来把你的 payload stager 注入进内存中。

如何使用 Artifact 工件集

通过 Help → Arsenal (武器库),填入 Cobalt Strike 的注册码来下载 Artifact 工件集。你也可以通过这个地址来直接访问武器库网页:https://www.cobaltstrike.com/scripts
在这里插入图片描述
Strategic Cyber 有限责任公司将 Artifact 工件集以 .tgz 的格式分发。使用 tar 命令对其进行解压。此 Artifact 工件集包含一个 build.sh 脚本。在 Kali Linux 系统上运行此脚本,无需任何参数,使用最小化 GNU 来为 Windows 交叉编译器构建默认的 Artifact 工件集。
在这里插入图片描述
Artifact 工件集构建脚本会为每一项 Artifact 工件集中的技术创建一个包含模板 Artifact 的文件夹。要通过 Cobalt Strike 来使用某项技术,通过 Cobalt Strike → Script Manager (脚本管理器),并从该技术的文件夹加载 artifact.cna 脚本。

建议你定制化修改 Artifact 工件集及其技术,使其满足你的需求。尽管熟练的 C 程序员可以使用Artifact 工件集做更多事情,那些不是程序员但是乐于探索的人也可以使用 Artifact 工件集。比如,每当新版本发布时,主流的反病毒产品喜欢为 Cobalt Strike 的试用版中的可执行文件编写签名。直到Cobalt Strike 2.5版本,Cobalt Strike 的试用版和授权版都在其可执行文件和 DLL 中使用了命名管道技术。反病毒厂商就需要为可执行文件使用的命名管道字符串编写签名。击败它们的签名,一次又一次的发布,就像在管道技术的源代码中更改管道名称一样简单。

0x03 Veil 规避框架

Veil 是一个流行的框架,用于生成可以通过某些防病毒产品的可执行文件。你可以使用 Veil 来为Cobalt Strike 的 payload 生成可执行文件。通过 Attacks → Packages → Payload Generator 。选择你想要为其生成可执行文件的监听器。选择 Veil 作为输出类型,按 Generate 按钮来保存输出文件。

启动 Veil 规避框架并选择你想要使用的技术。Veil 最终会询问关于 shellcode 的生成选项。选择 Veil的“使用自定义 shellcode”的选项,把 shellcode 粘贴在 Cobalt Strike 的 payload 生成器使用的文件内容中。按 Enter 键然后你就会获得一个新鲜出炉的 Veil 制作的可执行文件。

在这里插入图片描述

0x04 Java 小程序攻击

Strategic Cyber 有限责任公司以小程序集的形式为 Cobalt Strike 的小程序攻击发布源码。这部分也可以在 Cobalt Strike 的武器库中。通过 Help → Arsenal (武器库)并下载小程序集。

使用包含的 build.sh 脚本来在 Kali Linux 上构建小程序集。很多 Cobalt Strike 的客户使用这种灵活性来使用一个他们购买的代码签名的证书为 Cobalt Strike 的 Java 小程序攻击签名。我们也强烈推荐这种做法。

要使 Cobalt Strike 使用你的小程序集而不是内置的那个,加载包含在小程序集里面的 applet.cna 脚本。

在 Cobalt Strike 武器库页面上你会注意到 Power Applet (Powershell 小程序)。这是 Cobalt Strike的 Java 小程序攻击使用 PowerShell 的替代实现,用于将 payload 注入内存。Power Applet 展示了你有使用完全不同的方法重建 Cobalt Strike 的标准攻击并把它门用于 Cobalt Strike 的工作流中的灵活性。

通过加载小程序集中包含的 applet.cna 脚本,可以使 Cobalt Strike 使用你的小程序集而不是内置的那个。

0x05 资源集

资源集是 Cobalt Strike 改变其在工作流中使用的 HTA,Powershell,Python,VBA 和 VBA 脚本模板的方法。同样,资源集在 Cobalt Strike 的武器库中,可以被有注册码的用户获取。通过 Help →Arsenal 来下载资源集。

资源集的 README.txt 文档记录了包含的脚本和哪些功能使用它们。要规避一个产品,考虑这些脚本中的改变字符串或行为。

要使 Cobalt Strike 使用你的脚本模板而不是内置的脚本模板,加载资源集中的 resources.cna 脚本。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/380067.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】企业开发的困境与变局

原文:企业开发的困境与变局 文 / 刘江 算起来,《程序员》已经有几年时间没有大篇幅讨论企业软件开发这个话题了。这其实挺奇怪的。要知道,按类别来分,国内从事企业软件开发的技术人员是最多的,从CSDN和《程序员》联合举…

AES算法

算法简介 AES本质是一种对称分组密码体制,采用代替/置换网络。每轮由三层组成:线性混合层确保多轮之上的高度扩散,非线性层由16个S盒并置起到混淆的作用,秘钥加密层将子秘钥异或到中间状态。 AES加密数据块和秘钥长度可以是128比…

IDA使用方法-----1

0x01 启动IDA new:反汇编一个新文件go:运行,直接进入IDAPrevious:载入一个我们以前编译过的程序 如果不想每次都看到这个对话框,可以取消该对话框底部的Display at startup(启动时显示)&#x…

objdump命令详解

objdump命令是用查看目标文件或者可执行的目标文件的构成的gcc工具。 选项 --archive-headers -a 显示档案库的成员信息,类似ls -l将lib*.a的信息列出。 -b bfdname --targetbfdname 指定目标码格式。这不是必须的,objdump能自动识别许多格式,比如…

《Pro ASP.NET MVC 3 Framework》学习笔记之四【领域模型介绍】

主题:应用领域驱动开发(Applying Domain-Driven Development) Domain Model是MVC程序的"心脏",其他的一切,包括Controllers和Views仅仅是用来跟Domain Model交互的一种方式,ASP.NET MVC并没有限制使用在Domain Model上面…

一步一步学pwntools(适合新手)

序 pwntools是一个二进制利用框架。官方文档提供了详细的api规范。然而目前并没有一个很好的新手教程。因此我用了我过去的几篇writeup。由于本文只是用来介绍pwntools使用方法,我不会过于详细的讲解各种二进制漏洞攻击技术。 Pwntools的“Hello World” 栈溢出无…

标志寄存器:CF、PF、AF、ZF、SF、TF、DF、OF

注:下面说到的标志寄存器都是缩写,C就是CF,其他也一样 标志寄存器:C、P、A、Z、S、T、D、O的内容只会是0或1,0表示假,1表示真 O:溢出标志 一个寄存器如果存放的值超过所能表示的范围&#xf…

Firefox2狂占CPU解决办法

https://images.cnblogs.com/cnblogs_com/Tisty/138006/o_firefox3.jpg 看了一下,不知道 "jpeg_free_large" 是干啥的,遂用 "Firefox jpeg_free_large" Google 一下,出来的一堆东西里有帖子说可能和 Apple 的 QuickTime …

PUSHAD和POPAD,以及PUSHA和POPA

PUSHAD PUSHAD也叫保护现场,就是把我们的寄存器压入栈中 pushad是把eax,ecx,edx,ebx,esp、ebp,esi,edi依次压入栈中,ESP会减少32,相当于: push eax push ec…

MOVSX和MOVZX

MOVSX 先符号扩展,再传送 格式: MOVSX 操作数A ,操作数B //操作数B的空间小于A比如说我们使用命令: movsx eax,bxbx是16位,eax是32位,传值过程: 先用bx的符号位把eax高16填满,b…

LEA与XCHG

LEA 格式: LEA 通用寄存器 内存地址功能:取地址命令 将内存地址赋值给寄存器 lea eax,dword ptr ds:[ecx0x16]dword 双字 就是四个字节ptr pointer缩写 即指针ds 数据段版寄存器[]里的数据是一个地址值,这个地址指向一个双字型数据 将dwo…

ADC和SBB命令

ADC 带进位加法指令 用法: adc 操作数1,操作数2相当于: 操作数1操作数2进位标志CF->操作数1现在的eax是0,C1,用adc指令直接会是0x6 SBB 带进位减法指令 用法: sbb 操作数1,操作数2相当…

mul和div指令(8位,16位,32位)

MUL 无符号乘法指令,默认操作数与eax相乘(这里只说32位,其他与下面的div类似) 格式: mul 操作数 //操作数只有一个操作数与eax相乘,结果共有16位(这里的16位是16进制数)&#xff…

imul和idiv指令

imul 有符号乘法指令,分单操作数,双操作数和但操作数 单操作数:此形式与mul指令使用完全相同,操作数乘以al、ax、或eax寄存器中的值,乘积分别存储到ax、dx:ax或edx:eax中 执行指令&#xff1a…

Ajax的注册应用

最近发现Ajax在用户注册表单和用户登录表单方面应用,最能体现Ajax的交互特点,因此又是写了一个习作! 演示效果 新开窗口地址: http://www.klstudio.com/demo/ajax/reg.htm 下载地址:http://www.klstudio.com/demo/ajax/reg.rar &…

XADD和NEG命令

XADD 交换相加指令,先交换然后相加 比如说: xadd eax,ecx /* 相当于:先执行:xchg eax,ecx然后执行:add eax,ecx */此时eax2,ecx3,执行完:eax5,ecx2 neg …

Java——File类

一,File类的概述和构造方法 A:file类的概述 file类可以理解成一个路径 文件夹或者是文件夹路径 路径分为绝对路径和相对路径 绝对路径是一个固定的路径,从盘符开始 这里的G:\TIM 就是一个绝对路径,是一个固定的路…

vue3 配置 @符号

config,ts 配置 有 爆红 安装 npm install 一下 然后 配置 路径提示功能 tsconfig.json 配置 路径提示功能 一共这两个路径配置

mts模式_MTS的完整形式是什么?

mts模式MTS:Microsoft Transaction Server /移动电话服务/多通道电视声音 (MTS: Microsoft Transaction Server/ Mobile Telephone Service/ Multichannel Television Sound) 1)MTS:Microsoft Transaction Server (1) MTS: Microsoft Transaction Server…

Java——IO流

一,IO流常识 Ⅰ,IO流的概述 1,IO流用来处理设备之间的数据传输 2,Java对数据的操作都是通过流的方式 3,Java用于操作流的类都在IO包中 4,流 按流向分为: ①输入流 ②输出流 5&#xff0…