Как показывает практика, любой антивирус по дизайну уязвим, и реализовать очередной метод обхода в отношении него не является большой проблемой.
Нашему исследовательскому центру было интересно проверить, как разработчики антивирусных решений следят за наличием описаний методов атак на просторах интернета. И всегда ли для атаки на антивирус необходимо обнаружить в нем 0-day уязвимость или достаточно просто найти полезную информацию на форумах?


Введение


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

Самозащита антивируса и ее обход в ряде случаев означает обход всего механизма детектирования вредоносного кода. Этот причем часто используется при реализации целенаправленных атаках или в программах с деструктивным, блокирующим данное ПО функционалом.

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

Самозащита антивируса


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

Если систематизировать внутренне устройство нескольких антивирусных продуктов, можно обобщенно описать архитектуру самозащиты. В итоге, мы получим следующие признаки, свойственные данному механизму и его реализации:

  1. Защита собственных файлов и директорий
    • Обычно реализована файловым фильтром уровня ядра.
  2. Защита собственных конфигурационных данных в реестре
    • Реализуется при помощи совокупности перехватов и/или RegistryCallback-интерфейса ядра.
  3. Защита интерфейсов антивируса
    • Контроль доступа к различным управляющим интерфейсам в ring0.
  4. Защита собственных процессов
    • Реализации варьируются, это может быть совокупность различных перехватов системных функций ядра, типов объекта, использование callback’а на создание процесса.

И, наконец, самый спорный момент в работе механизма самозащиты: процессы антивируса становятся некой супер-привилегированной сущностью, они недоступны для воздействия как атакующего, так и обычного пользователя.

Последствия внедрения вредоносного кода в антивирус:
  • Глобальное отключение/блокирование антивируса
  • Манипулирование белыми списками
  • Скрытое функционирование в супер-привилегированном процессе
  • Обход правил межсетевого экрана

Методология тестирования


Рассматриваемые антивирусные решения

Для проведения исследования мы отобрали несколько антивирусных продуктов, отвечающих следующим требованиям:
  1. ПО, использующее архитектуру самозащиты, заявляет о себе как о способном реагировать на активную, запущенную угрозу, обладает функцией проактивной защиты;
  2. Входит в список самых популярных решений, ранее трестировавшихся с применением различных методологий.

Получился такой список (На момент тестирования это были самые последние версии):
Разработчик Наименование продукта, версия
McAfee McAfee Total Security 2015 (15.4.0.470.7)
ESET ESET Smart Security (8.0.312.3)
Symantec Norton Security (22.2.0.31)
AVG AVG Internet Security 2015 (2015.0.5941)
BitDefender BitDefender Total Security 2015 (18.20.0.1429)
Trend Micro Trend Micro Antivirus+ 2015 (AMSP 3.5.1186)
Avira Avira (15.0.8.652)
Dr.Web Dr.Web 10 (10.0.1.03310)
Kaspersky Kaspersky Internet Security 15 (15.0.2.361)
Panda Panda Internet Security 2015 (15.1.0)
Avast Avast Free Antivirus (2015.10.2.2218)
Среда тестирования

Тестирование методов проходило на операционной системе Windows 7, x86_64/x86_32, которая устанавливалась на виртуальной машине VMware. Кроме того, отдельные решения были инсталлированы на физическое железо (обусловлено использованием механизмов аппаратной виртуализации VT-x/AMD-V).

Применяемые техники

Для данного исследования было применено несколько универсальных техник, каждая из которых не нацелена на конкретное решение и не использует архитектурные слабости того или иного ПО.

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

Были выбраны такие техники, как: ProxyInject, Duplicate Handle, Reparse Point, PageFile, RegSafe/RegRestore и Shim Engine. За более подробным описание техник советуем обратится к оригинальному тексту исследования “Самозащита антивирусов”.
И для тестирования была использована специальная программа, которая получает на вход в качестве параметров данные о технике и цели.



Результаты


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



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

Выводы


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

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

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

Комментарии (22)


  1. AmdY
    15.06.2015 14:42
    +17

    Шёл 2015 год, давно уже вышла windows 8, вот-вот появится windows 10, более 6 лет как майкрософт предоставляет в поставке с виндой свой бесплатный антивирус. А в обзоре windows 7 и отсутствие Microsoft Security Essentials.
    Понимаю, что Касперский занёс вам денег, но вы думайте на каком ресурсе лапшу вешать.


    1. PavelPV
      15.06.2015 14:45

      Это не совсем лапша. Результаты интересные.


    1. d1g1
      15.06.2015 15:00
      +1

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


      1. AmdY
        15.06.2015 15:07
        +3

        О, боже. У вас похоже даже заготовка ответа на критику есть. Хотя речь о совсем другом. Я не высказывал сомнений в результатах, а лишь указал на неактуальность софта и списка антивирусов, не хвалю тот же MSE. Но нельзя делать вид, что его нет ru.wikipedia.org/wiki/Microsoft_Security_Essentials#.D0.A0.D1.8B.D0.BD.D0.BE.D1.87.D0.BD.D0.B0.D1.8F_.D0.B4.D0.BE.D0.BB.D1.8F


        1. d1g1
          15.06.2015 15:10

          MSE не позиционирует себя как антивирус с механизмом самозащиты в отличие от тех, что представлены в исследовании, поэтому его и нет в данном исследовании.


          1. ertaquo
            15.06.2015 17:12
            +1

            Возможно, этого нет в рекламе, но представитель Microsoft еще 5 лет назад утверждал, что самозащита в нем есть.


            1. d1g1
              15.06.2015 17:33
              +2

              Вот вся суть подхода MSE к данному вопросу:

              For an application to be able to turn off the service, the application needs to be running elevated (as Admin). Once a process is running with such high security privileges, turning off the service is merely one of the myriad of things it can do.


              У сторонних антивирусных решений с механизмом самозащиты ситуация иная — прав Admin не достаточно.


      1. mickvav
        15.06.2015 15:11
        -1

        Ждём повторного отчёта по результатам их работы над ошибками. Но «безгрешность» Касперского заставляет задуматься — может, из списка доступных техник вы оставили только выгодные? Хотя не возьмусь всерьёз спорить, ибо не профессионал в вопросе.


        1. d1g1
          15.06.2015 15:16

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


    1. Python0x0
      15.06.2015 19:23
      +6

      Выбор ОС это статистика, да и используя версии выше, разницы в результатах мы не получим, к чему претензии тогда?
      stat
      Тестировать MSE с таким подходом как в исследовании будет абсолютно не уместно и не оправдано, так как в моем понимании MSE использует адекватное допущение — если malformed код запущен и обладает привилегиями, его уже ничто не остановит.
      В противовес, типичный антивирусный вендор считает, что сможет построить псевдо-защиту от привилегированных атакующих, получая в итоге багованную by дизайн архитектуру с иллюзией защиты.

      Понимаю, что Касперский занёс вам денег, но вы думайте на каком ресурсе лапшу вешать.
      Эти ребята из касперов лучше следили за паблик концептами и вот результат, да и кстати правда, где мои деньги?


    1. navion
      15.06.2015 23:53

      Касперский действительно самый навороченный, но и глючит он чудовищно. У них первый совет при траблшутинге — отключить самозащиту.


  1. d_olex
    15.06.2015 17:18
    +5

    А софт который реализовывал атаку на мезанизмы самозащиты антивирусного ПО запускался под админской учеткой? Если да — то это тестирование ни о чем.


    1. d1g1
      15.06.2015 17:28

      Некоторые подходы требуют (4 техники), некоторые нет (2 техники).
      Смысл заключается в том, что даже атакующему с админскими правами придется обходить механизм самозащиты антивируса.


      1. d_olex
        15.06.2015 17:38
        +5

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


        1. Python0x0
          15.06.2015 17:57
          +6

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


    1. d_olex
      15.06.2015 17:30
      +4

      Собственно, если атакующий имеет привилегии пользователя входящего в группу Administators и integrity level от medium и выше — то в таком случае здесь даже тестировать нечегего: в подобных исходных условиях тест сольют абсолютно все без исключения антивирусные продукты т.к. подобные условия допускают применение ряда атак которые нельзя предотвратить бай дизайн с учетом текущей модели угроз на которую антивирусные продукты обычно ориентируются.


      1. d1g1
        15.06.2015 17:43

        Да, но речь идет о том что уже давным давно в открытом доступе.
        И еще раз из исследования:

        «Развивается, пожалуй, самый спорный механизм ПО такого класса – механизм самозащиты.»


  1. teecat
    16.06.2015 11:49

    Нужное тестирование, особенно в свете того, что аналогичные тесты на Антималваре не проводились очень давно. Но вот текст статьи вызывает вопросы.

    > Как показывает практика, любой антивирус по дизайну уязвим, и реализовать очередной метод обхода в отношении него не является большой проблемой.
    В свете статьи данное утверждение выглядит, как утверждение, что антивирусы, как защита бесполезны, но есть иное решение.

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

    > Самозащита антивируса и ее обход в ряде случаев означает обход всего механизма детектирования вредоносного кода. Этот причем часто используется при реализации целенаправленных атаках или в программах с деструктивным, блокирующим данное ПО функционалом.
    — самозащита, это пассивный метод защиты, защищающий антивирус от несанкционированного воздействия. Снесение антивируса в результате снесения самозащиты — по сравнению с обходом примерно тоже самое, что снесение стены дома в сравнении с использованием отмычки. Есть куда более простые методы.
    — хотелось бы примеров, подтверждающих, что обход самозащиты часто используется для обхода защиты в целом. Ни разу не видел подобной статистики (хотя естественно обходы самозащиты есть). В день добавляется несколько сотен записей в антивирусную базу, но патчи на самозащиту выходят считанные разы в месяц, а то и реже

    > После внедрения вредоносного кода внутрь процесса антивируса он способен долго и незаметно существовать в системе пользователя, что, несомненно, является следствием главного логического изъяна архитектуры самозащиты, равно как и методики использования доверенных списков процессов.
    — Внедрение в процесс проживет до ближайшей перезагрузки, а то и до ближайшего обновления — когда все процессы будут проверяться на руткиты
    — опять же обвинение архитектуры самозащиты без ее анализа и предложений по улучшению. Может быть ее вообще убрать? Где граница между уязвимостью в системе и архитектурой?

    > растут требования к разработке антивирусных решений, которые позиционируются для защиты постфактум.
    Действительно. Антивирус ловит ранее пропущенное вместе с приходом обновлений. Но он ловит и не менее половины в момент проникновения. Более того, в большинстве случаев антивирус — единственная мера защиты на компьютере. Позиционировать его как защиту постфактум… Да еще при наличии всяких поведенческих анализаторов…

    > Развивается, пожалуй, самый спорный механизм ПО такого класса – механизм самозащиты.
    В чем его спорность? БОльшая, чем у иных компонент?

    >И, наконец, самый спорный момент в работе механизма самозащиты: процессы антивируса становятся некой супер-привилегированной сущностью, они недоступны для воздействия как атакующего, так и обычного пользователя.
    И как иначе? Нужно, чтобы антивирус можно было снести походя первым неизвестным вирусом?

    >Последствия внедрения вредоносного кода в антивирус:
    Глобальное отключение/блокирование антивируса
    Манипулирование белыми списками
    Скрытое функционирование в супер-привилегированном процессе
    Обход правил межсетевого экрана

    Хотелось бы примеров реальных вирусов по каждому пункту.

    > Для данного исследования было применено несколько универсальных техник, каждая из которых не нацелена на конкретное решение и не использует архитектурные слабости того или иного ПО.
    Пожалуй не менее интересно было бы посмотреть, насколько производители антивирусов реагируют на атаки, спроектированные конкретно под их решения. Скажем решения Лаборатории Касперского занимают бОльшую часть рынка России. И естественно их атакуют в первую очередь, не обращая внимания на куда менее распространенные системы. Но это уже к слову

    > За более подробным описание техник советуем обратится к оригинальному тексту исследования “Самозащита антивирусов”.
    Выше было написано, что техники не демонстрируются во избежание. И действительно — в отчете их нет

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

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

    И на всякий случай — претензий по поводу самого теста нет. Хотя было бы интересно выслушать мнения по поводу списка атак


    1. Python0x0
      16.06.2015 13:33
      +1

      В свете статьи данное утверждение выглядит, как утверждение, что антивирусы, как защита бесполезны, но есть иное решение.
      Да коммерческие антивирусы бесполезны, другое решение не использовать их.
      Насколько я понимаю, все же тестирований, а не аналитических работ, разбирающих достоинства и недостатки систем самозащиты. Ну и хотелось бы несколько примеров подобных аналитических работ для оценки подхода и методики в целом
      Согласен речь шла о тестировании, последнее что помню были как раз тесты на антималваре, но как по мне они достаточно уродливы ввиду отсутствия каких либо оригинальных методов атак.
      самозащита, это пассивный метод защиты, защищающий антивирус от несанкционированного воздействия. Снесение антивируса в результате снесения самозащиты — по сравнению с обходом примерно тоже самое, что снесение стены дома в сравнении с использованием отмычки. Есть куда более простые методы.
      Самозащита это проактивный метод защиты. Никто антивирус отрубать или сносить не будет, это самое глупое решение из всех возможных.
      Имелся ввиду такой тезис: обойдя самозащиту мы можем обойти и все остальное, например добавить директорию в exclude конфигурацию антивирусного движка и т.д.
      Внедрение в процесс проживет до ближайшей перезагрузки, а то и до ближайшего обновления — когда все процессы будут проверяться на руткиты
      Внедрение в доверенный процесс это победа по умолчанию (с текущей топовой архитектурой антивирусов) и закрепление на системе здесь абсолютно не причем.
      опять же обвинение архитектуры самозащиты без ее анализа и предложений по улучшению. Может быть ее вообще убрать? Где граница между уязвимостью в системе и архитектурой?
      Именно, самозащита это лишняя сущность и лучшее решение по ее улучшению — ликвидация из конечного продукта.
      Действительно. Антивирус ловит ранее пропущенное вместе с приходом обновлений. Но он ловит и не менее половины в момент проникновения. Более того, в большинстве случаев антивирус — единственная мера защиты на компьютере. Позиционировать его как защиту постфактум… Да еще при наличии всяких поведенческих анализаторов…
      Согласен, мысль не правильно выражена.
      В чем его спорность? БОльшая, чем у иных компонент?
      Спорность в том, что его всегда можно будет обойти при определенных привилегиях. Спорность в том что его присутствие расширяет attack surface, плодит кучу багов.
      И как иначе? Нужно, чтобы антивирус можно было снести походя первым неизвестным вирусом?
      Примером лучшего решения здесь является MSE, имхо.
      Глобальное отключение/блокирование антивируса
      Манипулирование белыми списками
      Скрытое функционирование в супер-привилегированном процессе
      Обход правил межсетевого экрана

      Хотелось бы примеров реальных вирусов по каждому пункту.
      Нет, примеров malware я приводить не буду, но скажу, что все это используется в моей работе ( в частности при пентесте).
      Выше было написано, что техники не демонстрируются во избежание. И действительно — в отчете их нет
      Упс, специально не приводим сорцов, но они гуглятся.
      Как связаны архитектура и уважение производителей к своим клиентам?
      Ну знаете, бизнес и ничего лишнего. Багованный конечный продукт и иллюзия защиты, решайте сами как тут это связано.
      Просьба подтвердить утверждение, что производители нормальных антивирусов не совершенствуют самозащиту самостоятельно
      Хоть и голословно написано но на практике так это и выглядит. Часты случаи когда антивирусные вендоры знают о уязвимости и не исправляют ее долгое время, но без зазрения совести продают продукт с багами.


      1. teecat
        16.06.2015 13:52
        +1

        Да коммерческие антивирусы бесполезны, другое решение не использовать их.

        Без проблем. Я не фанат. И знаю недостатки антивируса. Но предложите лучше при условии, что:
        — уязвимости есть везде
        — в любой момент времени есть пока еще неизвестные системе защиты вредоносные программы.

        На данный момент я вижу голые эмоции без какого-либо анализа архитектуры. Уязвимости не гарантированно показывают именно на некачественность архитектуры.

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

        После чего любая МарьВанна, не говоря уже о вирусе будет сносить корпоративную защиту. Да.

        В общем интересный посыл — если в где-то есть уязвимость, это багованая архитектура и от такого продукта нужно отказаться. Интересно, хоть один продукт такой тест переживет?

        Примером лучшего решения здесь является MSE, имхо.

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


      1. priv8v
        22.06.2015 15:31

        Никто антивирус отрубать или сносить не будет, это самое глупое решение из всех возможных.

        Наличие в вашем билдере/конфигураторе виря галочки «прибивать антивирусы: х, у, z» дает возможность поднять цену на детище на порядок, даже если все остальные функции тривиальны и имеются в любом галимом паблике.

        Имелся ввиду такой тезис: обойдя самозащиту мы можем обойти и все остальное, например добавить директорию в exclude конфигурацию антивирусного движка и т.д.

        Возможно, что подобные концепты есть и где-то даже применялись, но мне таких образцов в руки не попадало — вынос антивируса обычно осуществлялся ради самого выноса, а как максимум — чтоб не мешал работать (но для этого обычно блокируется возможность обновления разными способами).


  1. Python0x0
    16.06.2015 14:21

    Без проблем. Я не фанат. И знаю недостатки антивируса. Но предложите лучше при условии, что:
    — уязвимости есть везде
    — в любой момент времени есть пока еще неизвестные системе защиты вредоносные программы.
    Если честно обсуждать как защищаться это не мое, я в защиту не верю, но все же приведу стандартные шаги отсеивающие банальные угрозы:
    • обновляйте ОС
    • используйте не админскую учетку
    • используйте политики безопасности
    • обновляйте браузер
    • поставьте в довесок MSE
    • можете поставить EMET

    Более менее адекватная защита для обычного пользователя Windows хоста без переплаты.
    После чего любая МарьВанна, не говоря уже о вирусе будет сносить корпоративную защиту. Да.
    Безопасность это как и атака процесс.Никогда не будет так, что вы поставите продукт и обеспечите себе гарантированную защищенность.Опять же взглянув на шажки выше можно прийти к выводу, что текущих средств в системе хватает для отсеивания большинства угроз.
    В общем интересный посыл — если в где-то есть уязвимость, это багованая архитектура и от такого продукта нужно отказаться. Интересно, хоть один продукт такой тест переживет?
    Смысл в том что это не какой либо продукт, а продукт созданный для «защиты», продающий нам избавление от всех проблем, и если такой продукт сам дыряв как решето, то действительно почему бы не отказаться?
    Проваливающий все тесты лечения активного заражения. И единственный из мне известных антивирусов получивший в свое время отрицательные баллы по результатам тестов.
    По-крайней мере он не сеет иллюзорность защиты от 0day атак, опять же бесплатен и реализовывается не сторонним для ОС вендором.