混淆技术(Obfuscation techniques)

混淆技术被病毒制作者大量使用于躲避防病毒扫描程序的检测。
混淆对抗技术 只能对恶意软件的代码句法与签名进行混淆却无法掩盖恶意软件的行为。
所以基于动态的检测几乎都能针对混淆技术。
现有的恶意软件种类有:加密(encrypted),寡态(oligomorphic),多态(ploymorphic),变形(metamorphic)。

多态与变形恶意软件中常用的混淆技术。

  1. 死码插入(Dead-Code Insertion)
    程序无效指令改变其外观,但保证其行为。例如:通过插入无效指令nop可以轻松地对原始代码进行模糊处理。但是 基于签名的防病毒扫描程序可以通过在分析之前删除无效的指令来破坏此次技术,为了加大检测的难度,提出了一些代码序列。

  2. 注册重新分配(Register Reassignment)
    寄存器重新分配是另外一种简单的技术,可以将寄存器代代切换,同时保持程序代码及其行为相同,通过改变寄存器来改变原始代码。(前图为原始图,后图是修改寄存器后图像)

混淆技术(Obfuscation techniques)_第1张图片
混淆技术(Obfuscation techniques)_第2张图片

  1. 子程序重新排序(Subroutine Reordering)
    子程序重新排序通过以随机方式改变子程序的顺序来模糊原始的代码,这种技术可以生成n!种不同的变种
  2. 指令代替(Instruction Substitution)
    指令代替通过使用其他等效的指令进行替换来改变原始代码
  3. 代码转置(Code Transposition)
    代码转置重新排序原始代码的指令序列而不会对其行为产生任何的影响。具体有两种方法可以实现这种技术。
    1.基于无条件分支的代码转置(based on Unconditional Branches)
    随机重新混合指令,然后通过插入无条件分支或转跳来恢复原始的执行顺序,这种方式很容易恢复,通过删除无条件分支或转跳很容易恢复原始程序。
    2.基于独立指令的代码转置(based on Independent Instructions)
    通过选择和重新排序彼此之间没有影响的独立指令来创建新的原始程序,由于找到独立指令是一个复杂的问题这种方式难以实现,但会大大增加检测的成本
  4. 代码集成(Code Integration)
    恶意软件将自身编制到其目标程序的代码中,首先将其目标程序反编译为可管理对象,在它们之间进行无缝的添加,并将集成代码重新组合成新一代。作为最复杂的混淆技术之一,代码集成使检测与恢复变的非常困难
    7.加密代码
    8.变量重命名

References:malware obfuscation techniques,A Brief Survey

你可能感兴趣的:(理论及专业名词解释)