聊一聊不一样的免杀手段
2024-11-12 12:23:5 Author: www.freebuf.com(查看原文) 阅读量:10 收藏

freeBuf

主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

大家好,我是一个在IT行业十余年的小菜鸟,今天与大家讲一讲不一样的免杀。

一 常见的免杀。

shellcode混淆,汇编花指令,使用常见的xor,AES等加密,这种方式不能说一定无法免杀,但是如果使用cs,msf等特征明显的shellcode,要做到免杀应该是一件很难的事情,而下面的免杀这些方法也许会让你焕然一新。

二 进阶免杀。

1.使用自定义的加解密。

shellcode无非就是一串二进制数组,你可以把它当成int数组,进行自定义的加减乘除之后,将生成的shellcode传入并进行相对应的操作还原执行,这样并不会触发免杀的报警机制,也就是大家常说的,生成exe的熵值并不会因为自定义加解密而增加。

2.使用不同的语言进行免杀。

在做免杀的过程中,也许大家会发现,c#。c++,python等语言,在做免杀时有不同的优势。

比如针对360,赛门铁克,defender,卡巴等软件,使用python和ruby进行同样的操作时,也许并不会被杀,而用c++就会,这是因为解释器·的不同,甚至有一段时间,使用python32位解释器,国外上面常见的杀软对这些病毒程序完全无动于衷。

而在做持久化时,你会发现java,有得天独厚的优势,因为他使用自身的jvm,所以很多操作并不会被杀软拦截,当然java的缺点也明显,编译后需要配套的jdk,也就意味着通常需要60M以上的空间,文件较大。

3.反汇编更改。

当我们将程序编译好之后,以python为列,我们可以将exe反汇编,并将其中的变量进行修改,使它不符合python的语法,修改之后你会发现,在windows系统中可以正常解析运行,而本来会被查杀的程序,却并没有被拦截,这是因为杀软内部是使用的沙盒处理,会解析异常,导致无法分析,也就不会报毒。

4.白加黑。

白加黑其实是很常见的一种免杀手段,都属于我眼中的中级手段,所以放在了这里,我觉得这个应该都明白,不用我细说了。

5.加载器

加载器有分为普通加载器和高级加载器。

普通的加载器比如申请动态内存,汇编加载等。这种对免杀提供的帮助并不大。

高级加载器,比如管道连接,syscall调用等,这些仅需要简单的处理就有可能绕过杀软的检查。

6.特征免杀

有时候我们程序被查杀仅仅只是因为某个函数被针对,比如VirtualProtect等相关函数,其实已经列入了杀软的黑名单,这时候我们需要对函数进行动态加载,就可以绕过杀软的检测机制。

三 超进阶免杀。

1.windows虚拟化。

在免杀的过程中,我们发现,无论使用什么语言开发,所有操作都依赖于windows系统,有没有什么办法能完全超脱,于是虚拟化技术就此排上用场,windows虚拟化技术,简单点说,就是在windows系统中安装一个简化版的系统,是这个简化版的新系统和我们的服务端进行通讯。而所有和被控机器的通讯,就是先通过服务端,向简化版的新系统通讯(虚拟系统),再通过简化版的新系统,以内网横向的方式操作被控机器。

所有对外的操作由于是在虚拟系统中进行操作,所以并不会被监控。

但该方法由于新开发的虚拟系统bug太多,(目标锁屏,虚拟机会断网等)最后暂时搁置了。

2.驱动

驱动免杀,也是现在用的最多的方式,由于很难弄到有效的驱动签名,所以我们使用过期签名。并通过白加黑,内存加载等手段,加载我们的驱动,然后修改windows硬编码,可以做到两种。

一种是使对面的杀软免杀能力完全无效,这样所有操作都是正常行为,也就是相当于卸载杀软。

第二种是进行转发,让他们的驱动,请求我们的驱动而不是系统驱动,在我们的驱动对指定的·程序进行过滤,从而实现部分程序,或者部分目录不检测,也就是类似于白名单效果。相当于在杀软旁边装了个杀软。

四 免杀总结。

系统里面装系统,杀软旁边装杀软,逃避不是最好的解决方案,最完美的防守,其实是进攻。

已在FreeBuf发表 0 篇文章

本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022


文章来源: https://www.freebuf.com/articles/network/415050.html
如有侵权请联系:admin#unsafe.sh