Методология теста самозащиты антивирусов на платформе x64 (январь 2011)

В тестировании принимали участие 20 наиболее популярных антивирусных программ класса Internet Security актуальных на дату начала тестирования версий продуктов (24.11.2010) и работающих на платформе Windows 7 x64. Среди них:

  1. Avast Internet Security 5.0.477
  2. AVG Internet Security 2011 (build 1170)
  3. Avira AntiVir Premium Security Suite 10.0.0.565
  4. BitDefender Internet Security 2011 (Build: 14.0.23.312)
  5. Comodo Internet Security 5.0.32580.1142
  6. Dr.Web Security Space 6.0 (12.0.0.58851)
  7. Emsisoft Anti-Malware 5.0.0.0
  8. Eset Smart Security 4.2.67.10
  9. F-Secure Internet Security 2011 (1.30.4220.0)
  10. G DATA Internet Security 2011 (21.1.0.5)
  11. Kaspersky Internet Security 2011 (11.0.2.556)
  12. McAfee Internet Security 2011 
  13. Microsoft Security Essentials 1.0.2498.0
  14. Norton Internet Security 2011 (18.1.0.37)
  15. Outpost Security Suite Pro 2010 (7.0)(3409.520.1244.401)
  16. Panda Internet Security 2011(16.00.00)
  17. PC Tools Internet Security 2011 (8.1.0.0.50)
  18. Trend Micro Titanium Internet Security 2011 (3.0.0.1303)
  19. VBA32 Personal 3.12.14.1
  20. ZoneAlarm Security Suite 2010 (9.3.37.0)

Тест проводился на специально подготовленном стенде под управлением VMware Workstation 7.1.0 (build-261024). Для каждого антивирусного продукта клонировались "чистые" виртуальные машины под операционной системой  Windows 7 (6.1.7600 x64). Хостовой операционной системой так же являлась Windows 7 (6.1.7600 x64).

При установке антивирусов использовались рекомендуемые производителем настройки по умолчанию и производились все рекомендуемые программой действия (перезагрузка системы, обновление и т.д.). Все компоненты защиты активировались, если это не было предусмотрено после установки автоматически.

Тестирование самозащиты антивирусов проводилось по следующим параметрам:

  1. Самозащита на уровне системы: 
    1. изменение разрешений на доступ к файлам;
    2. изменение разрешений на доступ к ключам реестра.
  2. Защита собственных файлов:
    1. модификация/удаление модулей;
    2. удаление антивирусных баз;
    3. удаление после перезагрузки.
  3. Защита своих ключей реестра:
    1. модификация/удаление значимых ключей реестра (вручную):
      • ключи автозапуска;
      • ключи сервисов;
      • ключи конфигурации.
  4. Защита своих процессов:
    1. Предотвращение завершения процессов:
      • из TaskManager;
      • API с уровня пользователя:
        1. получение хендла процесса и использование ZwTerminateProcess;
        2. перечисление всех потоков процесса, получение хендла потока и использование ZwTerminateThread;
        3. получение хендла процесса и использование ZwterminateJobObject;
        4. получение хендла процесса и использование ZwDEbugActiveProcess;
        5. использование WinStationTerminateProcess.
      • посылка сообщений (SendMessage API):
        1. нахождение главных окон процесса и посылка WM_CLOSE через SendMessage, PostMessage, SendMessageCallback, SendNotifyMessage, PostThreadMessage, SendMessageTimeout;
        2. нахождение главных окон процесса и посылка WM_QUIT через SendMessage, PostMessage, SendMessageCallback, SendNotifyMessage, PostThreadMessage, SendMessageTimeout;
        3. нахождение главных окон процесса и посылка WM_SYSCOMMAND (SC_CLOSE) через SendMessage, PostMessage, SendMessageCallback, SendNotifyMessage, PostThreadMessage, SendMessageTimeout;
        4. нахождение всех окон процесса и посылка всех возможных оконных сообщений в цикле через SendMessage и PostMessage.
    2. Модификация процесса/кода:
      • инжектирование кода (CreateRemoteThread):
        1. получение хендла процесса и использование ZwCreateThread с адресом ExitProcess.
      • инжектирование кода (Set New Thread Context):
        1. перечисление всех потоков процесса, получение хендла потока и использование ZwSetContextThread с адресом ExitProcess;
        2. перечисление всех потоков процесса, получение хендла потока и использование ZwQueueApcThread/ZwQueueApcThreadEx с адресом ExitProcess.
      • инжектирование DLL;
        1. перечисление всех потоков процесса и вброс dll-ки, закрывающей его через SetWindowsHookEx;
        2. перечисление всех потоков процесса и вброс dll-ки, закрывающей его через SetWinEventHook.
      • изменение атрибутов защиты памяти (Memory Attributes Modification):
        1. получение хендла процесса и установка на всех доступных блоках памяти атрибута PAGE_NOACCESS через ZeProtectVirtualMemory;
        2. получение хендла процесса и освобождение всей доступной памяти через ZwFreeVirtualMemory;
        3. получение хендла процесса и освобождение всеx маппированных объектов через ZwUnmapViewOfSection;
        4. получение хендла процесса и забивание всей доступной памяти через ZwAllocateVirtualMemory;
        5. получение хендла процесса и забивание всей доступной памяти через ZwMapViewOfSection.
      • запись в процесса (WriteProcessMemory):
        1. Получение хендла процесса и уничтожение (перезапись нулями) содержимого доступных блоков памяти через ZwWriteVirtualMemory. 
      • модификация объектов процесса (Modification of process objects):
        1. получение хендла процесса и освобождение всех хендлов внутри процесса через ZwDuplicateObject;
        2. получение хендла процесса и полное забивание всех свободных  хендлов внутри процесса через ZwDuplicateObject.
    3. Выгрузка драйверов.

Важно! Все тестовые кейсы работают из User Mode. Проверка самозащиты от атак на уровне ядра не проверялась, так как в данном случае она теряет всякий смысл.

Проверка самозащиты производилась при помощи специально подготовленных утилит, имитирующих атаки или вручную, с правами локального администратора. После каждой атаки обязательно проводилась проверка работоспособности антивируса (его отдельных модулей, активных процессов, сервисов, драйверов, а так же проводилась проверка детектирования вредоносных программ при помощи тестового вируса EICAR).

Если в ходе тестов на завершение/модификацию процессов один из них завершался (т.е. атака на него удавалась), то все остальные процессы подвергались атаке повторно.

Шаги проведения тестирования:

  1. Установка антивирусной программы на чистую машину;
  2. Перезагрузка системы;
  3. Проверка успешной установки и работоспособности всех модулей программы;
  4. Сохранение образа виртуальной машины;
  5. Проверка самозащиты по одному из параметров;
  6. Повторная проверка работоспособности модулей программы;
  7. Откат системы к сохраненному ранее образу (пункт 4).

Для каждой антивирусной программы выделялась отдельная чистая виртуальная машина - шаг 1. После каждой проверки самозащиты антивируса по какому-либо критерию, машина откатывалась в первоначальное состояние - шаг 4.

Anti-Malware Яндекс ДзенПодписывайтесь на канал "Anti-Malware" в Telegram, чтобы первыми узнавать о новостях и наших эксклюзивных материалах по информационной безопасности.
Если вы являетесь производителем и хотели бы видеть свой продукт в списке протестированных по данной методологии или обновить его результаты, не дожидаясь нового планового теста, вы можете воспользоваться услугой индивидуального тестирования.