Как антивирусные программы обнаруживают тестовый вирус EICAR?

Тестовый вирус EICAR используется для проверки работоспособности антивирусных программ. Чтобы обнаружить это как вирус,

Если в антивирусной программе есть определение вируса для тестового вируса

OR

Эвристика обнаруживает это как подозрительный образец и обнаруживает как вирус.

(Я видел случай, когда программа AV удаляет файл во время загрузки, но не идентифицирует вирус как тестовый вирус EICAR. Так же, как подозрительный объект -> т.е. если он имеет определение, он должен идентифицировать имя вируса, детали и т. Д. Isn ' разве это?)


person Chathuranga Chandrasekara    schedule 17.03.2009    source источник
comment
Как это хоть немного связано с программированием?   -  person user73993    schedule 17.03.2009


Ответы (1)


ИМХО, цель тестового вируса состоит в том, чтобы иметь что-то, что известно как безвредное и принимаемое как вирус, чтобы конечные пользователи могли проверить, что антивирусное программное обеспечение включено, и увидеть эффект идентификации вируса. Подумайте о пожарной тренировке для программного обеспечения AV.

Я полагаю, что у большинства есть подпись под этим, и они прямо признают это как таковое.

Я не удивлюсь, если битовая комбинация фактического теста EICAR будет включать битовую комбинацию, которая пахнет кодами операций для подозрительной активности, но я не знаю, так ли это. Если это так, то это может быть действительный тест простого эвристического распознавателя вирусов. Однако, поскольку тест EICAR существует уже давно, я также могу представить, что любая эвристика, которая кэширует его, недостаточно хороша, чтобы поймать что-либо в дикой природе.

Я бы не ожидал, что признание EICAR является доказательством более сильного утверждения, чем «AV установлен и сканирует то, что ожидалось сканировать», и, если бы я разрабатывала AV-систему, я бы не стал делать более сильных утверждений по этому поводу.

Обновление:

Фактический тестовый вирус EICAR представляет собой следующую строку:

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

который был тщательно обработан (согласно статье в Википедии), чтобы иметь несколько интересных свойств.

Во-первых, он состоит только из печатаемых символов ASCII. Он часто будет включать в себя пробелы и / или новую строку в конце, но это не влияет на его распознавание или на его функцию.

Отсюда возникает второе свойство: на самом деле это исполняемая программа для процессора 8086. Его можно сохранить (например, с помощью Блокнота) в файле с расширением .COM, и его можно запустить в MSDOS, большинстве клонов MSDOS и даже в режиме совместимости с MSDOS командной строки Windows (в том числе в Vista, но не в любой 64-битной Windows, поскольку они решили, что совместимость с 16-битным реальным режимом больше не является приоритетом.)

При запуске он выдает на выходе строку «EICAR-STANDARD-ANTIVIRUS-TEST-FILE!» а затем уходит.

Почему они пошли на это? Очевидно, исследователям нужна была программа, которая была известна как безопасная для запуска, отчасти для того, чтобы можно было тестировать живые сканеры без необходимости захвата реального вируса и риска реальной инфекции. Они также хотели, чтобы его можно было легко распространять как обычными, так и нетрадиционными способами. Поскольку оказывается, что существует полезное подмножество набора инструкций реального режима x86, где каждый байт соответствует ограничению, что он также является печатаемым символом ASCII, они достигли обеих целей.

В статье вики есть ссылка на подробное объяснение того, как программа действительно работает, что тоже интересно читать. Сложность усложняется тем фактом, что единственный способ либо напечатать на консоль, либо выйти из программы в реальном режиме DOS - это выпустить инструкцию программного прерывания, код операции которой (0xCD) не является печатаемым 7-битным символом ASCII. Кроме того, каждое из двух прерываний требует непосредственного однобайтового параметра, один из которых должен быть пробелом. Поскольку добровольное правило не допускало пробелов, все четыре последних байта программы («H + H *» в строке) модифицируются на месте до того, как указатель инструкции попадет туда для их выполнения.

Дизассемблировав и скопировав EICAR.COM с помощью команды DEBUG в командной строке на моем компьютере с XP, я вижу:

0C32:0100 58            POP     AX
0C32:0101 354F21        XOR     AX,214F
0C32:0104 50            PUSH    AX
0C32:0105 254041        AND     AX,4140
0C32:0108 50            PUSH    AX
0C32:0109 5B            POP     BX
0C32:010A 345C          XOR     AL,5C
0C32:010C 50            PUSH    AX
0C32:010D 5A            POP     DX
0C32:010E 58            POP     AX
0C32:010F 353428        XOR     AX,2834
0C32:0112 50            PUSH    AX
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, определяющего функцию, которую нужно выполнить. В этом случае AH - это 0x09, это функция печати строки, которая печатает строку, начиная со смещения 0x011C, заканчивая знаком доллара. (Вы должны были напечатать знак доллара с помощью другого трюка в чистой DOS.) Вызов INT 20 завершает процесс до того, как могут быть выполнены какие-либо дополнительные байты после этой точки.

Самомодифицирующийся код был ранней уловкой вирусов, но здесь он используется для сохранения ограничений на байтовые значения, которые могут использоваться в строке. В современной системе возможно, что функция защиты выполнения данных перехватит модификацию, если это принудительно применяется в режиме совместимости с MSDOS, в котором запущен COM-файл.

person RBerteig    schedule 17.03.2009