bypass 杀软笔记
2022-8-11 00:0:56 Author: LemonSec(查看原文) 阅读量:48 收藏

文章简介

早在几个月之前,我就已经写出来一个bypass 几乎所有杀软上线的程序,不过陆陆续续给予不同需求的人使用,就在几天前,我再度在本地测试,已经被捕获到相关的特征,由于已经有相关的特征,我这里也不会发表源码了。

文章内容

早在之前使用不一样的编码,绕过静态查杀,不过整个程序是否免杀【bypass】,与你的编码,或者说是加密方式没有任何关系,重点取决于你是如何加载整个程序的。

一般的查杀方式:

计算程序的md5,对已经存在的特征库进行比较,如果没有,那么杀软可能会上传整个程序,这里也不要去信任杀软的官方解释【我们不上传任何程序,只获取md5 hash这些说法】,对于做免杀的来说,程序上传是一大忌讳,建议测试都是断网。

卡巴斯基的相关研究

本次就是对高级版的卡巴斯基的程序进行测试,测试了各种方式,一度让我陷入了自闭,真的bypass不了了吗?

几个月之前我曾使用syscall成功绕过卡巴斯基的动态检测,也使用其他的方式同样绕过,几个月之后,发现卡巴斯基的学习能力是真的快,我不敢保证程序没有被泄露。

经过一度的研究,发现卡巴斯基主要是流量监控和系统监控两个方便特别优秀:

流量监控:

  1. 对外部ip检测【这个就很纳闷了,卡巴斯基同样对白名单进行检测,我真的郁闷,白名单还有什么用呢?】

系统监控:

    1. 对exe底层的挂钩【syscall已经成为过去时,卡巴斯基挂钩大部分的syscall函数】

    2. 内存流量特征【也就是说,我们的shellcode,自解密之后是原始shellcode驻留在内存中,卡巴斯基也可检测到解密之后的特征,几个月之前,我测试卡巴斯基也没有被检测出来,现在也被检测到了】

其实测试exe的时候,有些方法也是过了的,不过它识别相关的流量特征,也就是说如果我们有一个全新的shellcode,那么同样也能绕过卡巴斯基。这样就需要去修改C2的源码,修改为全新的特征,基于目前来说,我暂时没有这样做。

测试

之前测试了windows defender ,node32,kaspersky.某绒,某60:

不过windows defender的查杀效果还是不是那么的好,同样syscall都windows defender同样适用的,不过像node32和kaspersky就不适用了:

NTSTATUS NTAVM = NtAllocateVirtualMemory(hProc, &base_addr, 0, (PSIZE_T)&calc_len, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
RtlMoveMemory(base_addr, calc_payload, calc_len);   NTSTATUS NTPVM = NtProtectVirtualMemory(hProc, &base_addr, (PSIZE_T)&calc_len, PAGE_EXECUTE_READ, &oldprotect);
NTSTATUS ct = NtCreateThreadEx(&thandle, GENERIC_EXECUTE, NULL, hProc, base_addr, NULL, FALSE, 0, 0, 0, NULL);

这种方式同样还可以使用于windows defender。但是某绒,某60本人没有去测试。

另外,解密方式的话,很多人都需要使用异或,建议使用复杂的加密算法,如果使用异或的同样可以【还有一种方式就是shellcode自解密,当然这个有长度限制,针对于cobaltstrike这种是不适用的】:

替换字符,比如加密的时候把f替换为a,解密就替换回去

最终程序测试

卡巴斯基:

node32:

某60:

某绒:

文章总结

希望对大家有所帮助。

作者:angels,转载于:PWN安全汇

注:如有侵权请联系删除

 热文推荐  

欢迎关注LemonSec

觉得不错点个“赞”、“在看”


文章来源: http://mp.weixin.qq.com/s?__biz=MzUyMTA0MjQ4NA==&mid=2247531827&idx=3&sn=c70864a3a1aeda9ed8c815e98413b31c&chksm=f9e31268ce949b7ec4f8b429e5494cbe3277008b9472fb7d51d2e1f5a87dba1f321e65a95a99#rd
如有侵权请联系:admin#unsafe.sh