0x00 前言
CobaltStrike原生Artifact Kit生成的Artifact几乎已被所有主流杀软查杀,但我们可以用CobaltStrike官方Arsenal Kit免杀套件来替代原生Artifact Kit,目前还有一定免杀效果,过国内杀软问题不大。
这个免杀套件主要包含了以下几个插件,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
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
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
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}"
}
Artifact提供了5种绕过技术和3种内存分配方式,默认用的
pipe
和
HeapAlloc
,可修改
artifactkit_technique
和
artifactkit_allocator
值来指定使用哪种?
这里我们将默认的
pipe
和
HeapAlloc
改为
mailslot
和
HeapAlloc
,
template
是模板,过不了任何防病毒软件。
如果仍然无法免杀时可以尝试更改为其他选项,然后再重新编译试试。
arsenal-kit/arsenal_kit.config
artifactkit_technique="mailslot"
artifactkit_allocator="HeapAlloc"
如果想往生成的EXE文件添加版本、图标等信息可以修改src-main目录下的
resource.rc
文件,将最后一行
IDI_ICON1
注释去掉,再将
icon.ico
替换为我们的
.ico
文件即可。
arsenal-kit/kits/artifact/src-mainresource.rc
/////////////////////////////////////////////////////////////////////////////
//
// Version
//
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]
└─
┌──(root㉿kali)-[/tmp/arsenal-kit]
└─
我们只改了arsenal_kit.config的几个选项,其他插件选项在源码中都有注释,大家可以自己去看下,根据各自的需求去设置相关插件选项,具体效果如何还得去测试......。
arsenal-kit/arsenal_kit.config
rdll_size=5
artifactkit_stage_size=310272
artifactkit_include_resource="true"
artifactkit_stack_spoof="true"
artifactkit_syscalls_method