14.1.3 恶意代码生存技术

2025-09-01 14:11:14 更新


生存技术

说明

1

反跟踪技术

恶意代码以此提高自身伪装能力和防破译能力,使检测与清除难度增加

反动态跟踪技术

①禁止跟踪中断。针对调试分析工具运行系统的单步中断与断点中断服务程序,恶意代码通过修改中断服务程序的入口地址来实现其反跟踪目的。如1575病毒

②检测跟踪法。根据检测跟踪调试时和正常执行时的运行环境、中断入口和时间不同,采取相应措施实现其反跟踪目的。如操作系统API尝试打开调试器驱动句柄,检测代码是否运行

③其他反跟踪技术。如指令流队列法和逆指令流法等

反静态分析技术

①对程序代码分块加密执行。为避免反汇编静态分析,将分块程序代码以密文形式装入内存,由解密程序在执行时译码,立即清除执行完毕后代码,力求分析者在任何时候都无法从内存中获得执行代码完整形式。

②伪指令法。将“废指令”插入指令流中,让静态反汇编得不到全部正常指令,进而不能进行有效静态分析。如Win32平台病毒Apparition。伪指令技术广泛应用于宏病毒与脚本恶意代码中

2

加密技术

加密技术配合反跟踪技术,让分析者不能正常调试和阅读恶意代码,无法获得其工作原理和抽取特征串

加密手段(按加密内容):信息加密、数据加密和程序代码加密

大部分恶意代码对程序本身加密,少数恶意代码对被感染文件加密

例如Cascade是第一例采用加密技术的DOS环境恶意代码

Mad和Zombie是Cascade的延伸,以及“中国炸弹”和“幽灵病毒”

3

模糊变换技术

每感染一个客体对象时,都会利用模糊变换技术使潜入宿主程序代码不尽相同。恶意代码具有多个不同样本,几乎不存在稳定代码,只采用基于特征的检测工具一般无法有效识别。

①指令替换技术。模糊变换引擎(Mutation Engine)对恶意代码的二进制代码进行反汇编,解码并计算指令长度,再对其同义变换。如Regswap

②指令压缩技术。经恶意代码反汇编后的全部指令由模糊变换器检测,对可压缩指令同义压缩。压缩技术要想使病毒体代码长度发生改变,必须对病毒体内的跳转指令重定位。

③指令扩展技术。是对汇编指令进行同义扩展,所有经过压缩技术变换的指令都能使用扩展技术进行逆变换。扩展技术远比压缩技术可变换空间大,指令甚至能够进行几十或上百种的扩展变换。扩展技术也需要对恶意代码长度进行改变,进行跳转指令的重定位。

④伪指令技术。将无效指令插入恶意代码程序体,例如空指令。

⑤重编译技术。源码要在自带编译器或者操作系统提供编译器的基础上进行重新编译,不仅实现了变形目的,而且为跨平台恶意代码的出现提供条件。如宏病毒和脚本恶意代码。Tequtla是第一例在全球范围传播和破坏的变形病毒

4

自动生产技术

普通病毒能够利用“多态性发生器”编译成具有多态性的病毒。多态变换引擎能够让程序代码本身产生改变,但却可以保持原有功能。如保加利亚的Dark Avenger

5

变形技术

是变换恶意代码特征码的技术。恶意代码功能相同而特征码不同。

①重汇编技术。变形引擎对病毒体二进制代码进行反汇编,解码每一条指令,并对指令进行同义变换。如Regswap采用简单的寄存器互换变形

②压缩技术。变形器检测病毒体反汇编后全部指令,对可压缩的一段指令进行同义压缩

③膨胀技术。压缩技术的逆变换就是对汇编指令同义膨胀

④伪指令技术。对病毒体插入废指令,例如空指令、跳转到下一指令和压弹栈等

⑤重编译技术。病毒体携带病毒体源码,需要自带编译器或者利用操作系统提供的编译器进行重新编译,为跨平台恶意代码出现打下了基础

6

三线程技术

为了防止恶意代码被外部操作停止运行

工作原理:1个恶意代码进程同时开启3个线程(主线程:负责远程控制;监视线程:检测运行;守护线程:注入正常进程负责重启),确保恶意代码可以持续运行。

如“中国黑客”

7

进程注入技术

为了实现隐藏和启动目的,把自身嵌入与系统自启服务有关进程中。

如WinEggDropShell注入windows服务

8

通信隐藏技术

①端口定制技术:旧木马预定监听端口,新木马定制端口功能。

优点:定制端口可避过缺省端口检测

②端口复用技术:利用系统网络端口(如25和139等)传送数据。具有较强欺骗性,可欺骗防火墙等安全设备,避过IDS和安全扫描系统等安全工具。木马Executor用80端口传递控制信息和数据;Blade Runner、Doly Trojan、Fore、FTP Trojan、Larva、ebEx、WinCrash等木马复用21端口:Shtrilitz Stealth,Teminator、WinPC、WinSpy等木马复用25端口

③通信加密技术:将通信内容加密发送。使通信内容隐藏,弊端是通信状态无法隐藏

④隐蔽通道技术:能有效隐藏通信内容和通信状态。后门:B02K、Code Red II、Nimida和Covert TCP等。编写者需耗费大量时间找寻隐蔽通道

9

内核级隐藏技术

①LKM隐藏:LKM是可加载内核模块,用来扩展Linux内核功能。能在不重新编译内核情况下动态加载到内存中。LKM Rootkit通过系统接口加载到内核空间,将恶意程序转化成内核某部分,再通过hook系统调用方式实现隐藏功能

②内存映射隐藏:指由一个文件到一块内存的映射。内存映射可将硬盘上的内容映射至内存中,用户可以通过内存指令读写文件。使用内存映射避免了多次调用I/O操作的行为,减少了不必要资源浪费