欢迎光临散文网 会员登陆 & 注册

网安 | 免杀原理与代码实现

2023-06-28 17:20 作者:蜗牛学苑  | 我要投稿

一、什么是免杀

1、免杀的概念

免杀技术全称为反杀毒技术(Anti Anti- Virus),简称“免杀”。

它指的是一种能使病毒木马免于被杀毒软件查杀的技术。由于免杀技术的涉猎面非常广,包含反汇编、逆向工程、系统漏洞等技术,所以难度比较高。

2、杀软的原理

病毒查杀一般可以分为三种方式:静态查杀、行为查杀和云查杀

(1)静态查杀:一般根据特征码识别,然后对文件进行特征匹配。

(2)行为查杀(动态查杀):主要是对其产生的行为进行检测。

(3)云查杀:提取出文件的特征和上传云端,云端进行检测后返回客户端,对对应病毒进行查杀。

3、杀软查杀流程

对于我们的shellcode要实现免杀,下图是基本的测试流程图

4、免杀的方法

(1)对ShellCode进行加密处理,如异或、转置、AES加密、Base64编码、多轮加密等。

(2)对加载器代码进行加密或编码处理,使其静态特征不再明显。

(3)分离免杀,将ShellCode和加载器代码放置于网络上,通过下载的方式进行加载,可进一步免除静态特征。

(4)通过进程注入或借助傀儡进程进行加载和运行。

(5)通过加壳的方式对木马进行混淆,进而绕过杀软。

通过静态特征绕过杀软检测相对比较容易,但是要绕过沙箱或动态检测,则非常难。


二、利用异或和变形加密ShellCode

1、异或加密

异或运算是最为简单的加密方式,异或运算根据二进制位进行按位运算,如果对应位相同,则为0,不同则为1。并且同时遵守以下规则:如果 a ^ b = c,则可以将 b 视为秘钥,c 视为加密字符串,则 b ^ c = a,可根据秘钥 b 和 密文 c,解密出 a 的值。

2、字符串反转

在Python中,对一个字符串进行反转,使用str[::-1]即可。

3、将字节类型转换为字符串

由于Python的ShellCode为b''的字节类型(也可以视为二进制类型),而要进行加密或反转处理,只能针对字符串进行处理,所以还需要对将字节类型数据转换为字符串。可以利用Python内置的binascii模块进行处理。

5、对异或输出结果进行变形

此类变形可以有多种方式,并不局限于上述变形,也可以任意定义,或者将其输出为Base64编码。

6、完整ShellCode的加密和变形过程

7、最终的木马生成代码:

三、 对加载器代码进行加密和编码

1、将加载器代码进行Base64编码

2、将Bae64编码进行AES加密

四、对ShellCode和加载器进行解密运行

经实验,上述木马可过火绒和360的静态和动态特征,木马可以正常上线。

在VirusTotal上的检测结果:

五、利用Python的Requests进行分离免杀

1、将加密和变形后的ShellCode通过网络下载

2、将加密和编码后的加载器代码通过网络下载

3、将下载的代码进行解密还原并运行




网安 | 免杀原理与代码实现的评论 (共 条)

分享到微博请遵守国家法律