恶意软件使用多种方法来逃避防病毒软件,一种是在复制时更改其代码。我在野外主要看到了三种类型的技术:变态恶意软件,寡态恶意软件和多态恶意软件(我可能会错过一种)。这些技术之间的主要区别是什么?它们做什么?

评论

security.stackexchange.com/questions/4619/…

您确定我们不能做得比这个简短的回答更好吗?

变形和多态之间的区别对我来说仍然不清楚...如果有人可以提供更好的定义,我可以接受。

#1 楼

按复杂度递增的顺序:低变,多变,变质。
前两个术语通常应用于解密器。我们(反病毒行业)以这种方式定义它们:齐纯-解密器具有很少的可变元素,这不会影响代码的大小或形状。这意味着变量元素通常是固定大小的指令,但也可以应用于寄存器初始化。
同形示例
std ;fake, might be replaced by cld / nop / xchg ax, cx / ...
mov cx, size
mov ax, ax ;fake, might be replaced by mov bx, bx / or cx, cx / ...
mov si, decrypt_src
cld ;fake
mov di, decrypt_dst
or ax, ax ;fake
mov bl, key
and bp, bp ;fake
decrypt:
xor [di], bl
xchg dx, ax ;fake
inc di
cld ;fake
loop decrypt

在这种情况下,可以将di寄存器与si交换, 例如。非常简单的替换。
多态
解密器带有可能高度可变的元素,这确实会影响代码的大小和/或形状。这意味着可以应用各种更改,包括子例程创建,大块垃圾指令,代码“岛”甚至算法寄存器初始化(此处为示例)。
变形
应用高度可变的元素直接到身体。在这种情况下,通常没有解密器。将相同的多态技术应用于代码本身。最著名的例子是2002年的Simile病毒(此处有详细信息)。这里有关于该主题的详细论文和实际示例)

#2 楼


多态代码(通用术语)不同(不同的加密密钥)代码但结果相同

低态代码:基于模式的多态性/>示例:

2种不同的低等代码的执行方式:

MOV ECX,FC07379C    PUSH 40
XOR ECX,FC0737DC    PUSH Tada
PUSH ECX            NOP
NOP                 PUSH Helloworld
PUSH Tada           PUSH 0
NOP                 NOP
MOV ECX,F8477840    CALL MessageBoxA
XOR ECX,F80779BC    MOV ECX,0A2EF248
PUSH ECX            XOR ECX,0A2EF248
NOP                 PUSH ECX
PUSH 0              CALL ExitProcess
CALL MessageBoxA
PUSH 0
PUSH 00400136
PUSH ExitProcess
CALL $ + 5
RETN




亚变代码:具有自动变异的多态-结果略有不同