gpt4 book ai didi

antivirus - 防病毒程序如何检测 EICAR 测试病毒?

转载 作者:行者123 更新时间:2023-12-04 01:25:35 24 4
gpt4 key购买 nike

EICAR 测试病毒用于测试防病毒程序的功能。为了将其检测为病毒,

防病毒程序是否应具有测试病毒的病毒定义

或者

启发式将其检测为可疑模式并将其检测为病毒。

(我见过一个 AV 程序在下载时删除文件,但没有将病毒识别为 EICAR 测试病毒。就像一个可疑对象--> 即如果它有定义,它应该识别病毒名称,详细信息等不是'是吗?)

最佳答案

恕我直言,测试病毒的目的是拥有一些已知无害且被接受为病毒的东西,以便最终用户可以验证 AV 软件是否已打开,并可以看到病毒识别的效果。想想 AV 软件的消防演习。

我想大多数人都有一个签名,并直接识别它。

如果实际 EICAR 测试的位模式碰巧包含闻起来像可疑事件的操作码的位模式,我不会感到惊讶,但我不知道是否是这种情况。如果是,那么它可能是对简单启发式病毒识别器的有效测试。但是,由于 EICAR 测试已经存在很长时间了,我也可以想象,任何缓存它的启发式方法都不足以捕捉到现在的任何东西。

我不希望承认 EICAR 能证明任何比“安装了 AV 并扫描预期扫描的内容”更有力的声明,如果开发一个 AV 系统,我不会试图对此做出任何更有力的声明。

更新:

实际的 EICAR 测试病毒是以下字符串:

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

这是精心制作的(根据 Wikipedia article )具有几个有趣的属性。

首先,它仅由可打印的 ASCII 字符组成。它通常会在末尾包含空格和/或换行符,但这对其识别或功能没有影响。

这就引出了第二个属性:它实际上是一个 8086 CPU 的可执行程序。它可以(例如通过记事本)保存在扩展名为 .COM 的文件中,并且可以在 MSDOS、MSDOS 的大多数克隆甚至 Windows 命令提示符的 MSDOS 兼容模式中运行(包括在 Vista、但不是在任何 64 位 Windows 上,因为他们决定不再优先考虑与 16 位实模式的兼容性。)

运行时,它会产生字符串“EICAR-STANDARD-ANTIVIRUS-TEST-FILE!”作为输出。然后退出。

他们为什么要这样做?显然,研究人员想要一个众所周知可以安全运行的程序,部分原因是可以对实时扫描仪进行测试,而无需捕获真正的病毒和真正感染的风险。他们还希望通过传统和非常规方式轻松分发。由于事实证明存在 x86 实模式指令集的一个有用子集,其中每个字节都满足它也是可打印 ASCII 字符的限制,因此他们实现了两个目标。

维基文章有一个指向 blow-by-blow explanation 的链接。程序的实际工作原理,这也是一个有趣的阅读。更复杂的是,在 DOS 实模式下打印到控制台或退出程序的唯一方法是发出软件中断指令,其操作码 (0xCD) 不是可打印的 7 位 ASCII 字符。此外,这两个中断都需要一个一字节的立即参数,其中之一需要是空格字符。由于自我强加的规则是不允许空格,因此在指令指针到达那里以执行它们之前,程序的所有最后四个字节(字符串中的“H+H*”)都被就地修改。

在我的 XP 机器上的命令提示符下使用 DEBUG 命令拆卸和转储 EICAR.COM,我看到:

0C32:0100 58 流行轴
0C32:0101 354F21 XOR AX,214F
0C32:0104 50 推斧
0C32:0105 254041 和 AX,4140
0C32:0108 50 推斧
0C32:0109 5B POP BX
0C32:010A 345C XOR AL,5C
0C32:010C 50 推斧
0C32:010D 5A POP DX
0C32:010E 58 流行斧
0C32:010F 353428 XOR AX,2834
0C32:0112 50 推斧
0C32:0113 5E POP SI
0C32:0114 2937 SUB [BX],SI
0C32:0116 43 INC BX
0C32:0117 43 INC BX
0C32:0118 2937 SUB [BX],SI
0C32:011A 7D24 JGE 0140

0C32:0110 45 49 43 41 EICA
0C32:0120 52 2D 53 54 41 4E 44 41-52 44 2D 41 4E 54 49 56 R-STANDARD-ANTIV
0C32:0130 49 52 55 53 2D 54 45 53-54 2D 46 49 4C 45 21 24 IRUS-TEST-FILE!$

0C32:0140 48 DEC AX
0C32:0141 2B482A SUB CX,[BX+SI+2A]

执行指令后直到JGE 0140 ,最后两条指令修改为:

0C32:0140 CD21 INT 21
0C32:0142 CD20 INT 20

大多数 DOS 系统调用是通过 INT 21 调度的与 AH 的值或 AX register 指定要执行的函数。在这种情况下,AH是 0x09,它是打印字符串函数,它打印从偏移量 0x011C 开始的字符串,以美元符号结尾。 (您必须在纯 DOS 中使用不同的技巧打印美元符号。) INT 20 call 在执行该点之后的任何额外字节之前终止进程。

自修改代码是早期的病毒伎俩,但在这里它用于保留对可以在字符串中使用的字节值的限制。在现代系统中,如果在运行 COM 文件的 MSDOS 兼容模式下强制执行,数据执行保护功能可能会捕获修改。

关于antivirus - 防病毒程序如何检测 EICAR 测试病毒?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/653396/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com