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

StackOverflow https://stackoverflow.com/questions/653396

  •  19-08-2019
  •  | 
  •  

Вопрос

Тестовый вирус 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*

который был тщательно обработан (в соответствии с Статья в Википедии) обладать парой интересных свойств.

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

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

При запуске он выдает в качестве выходных данных строку "EICAR-STANDARD-ANTIVIRUS-TEST-FILE!", а затем завершает работу.

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

В вики-статье есть ссылка на поэтапное объяснение о том, как на самом деле работает программа, что также является интересным чтением.Сложность усугубляется тем фактом, что единственный способ либо выполнить печать на консоли, либо выйти из программы в реальном режиме DOS - это выдать команду программного прерывания, код операции которой (0xCD) не является 7-битным символом ASCII для печати.Кроме того, для каждого из двух прерываний требуется однобайтовый параметр immediate, один из которых должен быть символом пробела.Поскольку самоналоженное правило состояло в том, чтобы не допускать пробелов, все четыре последних байта программы ("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, который является функцией print string, которая печатает строку, начинающуюся со смещения 0x011C, заканчивающуюся знаком доллара.(В чистом DOS вам пришлось напечатать знак доллара с помощью другого трюка.) INT 20 вызов завершает процесс до того, как могут быть выполнены какие-либо дополнительные байты после этой точки.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top