R0 CREW

Метод блокировки AV

Оригинал: kernelmode.info
Автор: 0x16/7ton
Перевод: Prosper-H

Метод блокировки AV

В этой заметке я покажу вам, как можно заблокировать работу Антивирусов. В качестве жертвы, для демонстрации работы метода, я выбрал Антивирус Касперского. Что из этого получилось – читайте ниже =)

После некоторого исследования smss.exe, я наткнулся на функцию NtCreatePagingFile.

Ее определение выглядит следующим образом:

NTSTATUS NtCreatePagingFile ( IN PUNICODE_STRING PageFileName, IN PLARGE_INTEGER InitialSize, IN PLARGE_INTEGER MaximumSize, IN ULONG Reserved );

Не секрет, что smss.exe использует эту функцию для создания swap-файла (файла подкачки), в процессе запуска операционной системы.

Session manager берет параметры для этой API-функции из следующего ключа регистра:

[B]HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PagingFiles[/B]

Где PagingFiles – это путь к файлу с минимальным и максимальным размером swap-файла.

В основном идея заключается в том, чтобы использовать создание swap-файл для наших нужд.

Эксперимент 1: Использовать функцию NtCreatePagingFile c параметром PageFileName равным пути (path) av-драйвера.

Результат: В результате этого эксперимента была успешно произведена перезапись av-драйвера, swap-файлом.

Эксперимент 2: Попытаться перезаписать swap-файлом основную DLL библиотеку Касперского.

Результат: К сожалению, функция NtCreatePagingFile вернула STATUS_SHARING_VIOLATION.

Эксперимент 3: После провала во втором эксперименте, я решил подойти к проблеме с другой стороны. Идея заключается в создании swap-файла следующего типа:

C:\%path_to_kaspersky_dir%\avp.exe.manifest

Таким образом, мы создадим поддельный файл манифеста.

Результат: После перезагрузки системы, Антивирус Касперского не сможет запустить никакой свой сервис или gui-процесс.

Замечания и ограничения:

  • NtCreatePagingFile на страте проверяет текущее значение файла подкачки (MmNumberOfPagingFiles) с значением жестко заданным в теле функции и возвращает STATUS_TOO_MANY_PAGING_FILES, если оно равно (на моей Windows XP оно равно 16).
  • Нам нужно иметь привилегию SeCreatePagefilePrivilege для использования функции NtCreatePagingFile.
  • Конечно, блокировка AV будет работать после перезагрузки.
  • NtCreatePagingFile extend pagefile maximum on current launched system,but after reboot our created file not be a paged. И тут наступает интересный момент, если мы создали файл в av-директории, то мы не сможем его удалить, после перезагрузки, потому что антивирус защищает свои файлы.

Список антивирусов, которые были протестированным с помощью этого метода:

Уязвимые (на момент написания заметки):

  • Kaspersky
  • Eset
  • Avast
  • McAfee
  • AVG
  • ZoneAlarm

Не уязвимые:

  • panda 2013
  • DrWeb

Вот ссылка на видео с работающим PoC: http://www.sendspace.com/file/oyhly7

© Translated by Prosper-H from r0 Crew