0,0
рейтинг
5 декабря 2012 в 00:36

Разработка → Обход проактивной защиты Agnitum Outpost Security Suite в 2 строчки

Ранее я уже заявлял об этом и даже делился видео-демонстрацией, но не раскрывая подробности. К сожалению, Разработчик забил болт так и не отреагировал на моё письмо о проблеме (моё обращение было зарегистрировано 2.10.2012 под номером sb-ru-02-121000048-t). Поэтому я решил показать все технические подробности. Приводимая далее видео демонстрация была впервые показана на ZeroNights 2012 в рамках zeroday show.

Предыстория


Подобные уязвимости часто находятся случайным образом. Мой случай — не исключение. Как-то раз в 12 часов ночи, в полнолуние поставил себе Outpost Security Suite и настроил проактивку на максимальный режим. При этом режиме даже вставленная новая флешка в систему не примонтируется, пока не разрешить несколько действий во всплывающих окнах антивируса. Однажды при вставке новой флешки как обычно появилось всплывающее окно от антивируса, но я не давал согласия на установку. А привычным образом заблокировал компьютер (клавиш Win+L), покинув его на несколько минут. Каково же было моё удивление, когда вернувшись я выяснил, что флешка-таки примонтировалась в систему! Вот тут и началось самое интересное...

Суть проблемы



В режиме обучения проактивная защита Outpost при обнаружении подозрительной активности программы запрашивает действия у пользователя. Но если после вывода такого диалогового сообщения совершается Lock (то, что происходит при нажатии клавиш Win+L) — для антивируса это эквивалентно разрешению.

Автоматизация этого процесса может быть представлена таким вот bat-файлом, состоящим из 2-х строчек:

start 1.exe
ping 127.0.0.1 -n 10 -w 10000 > NULL & rundll32.exe user32.dll,LockWorkStation

Пинг здесь нужен для задержки (хотя есть более изящное решение), после которой выполнится команда Lock (rundll32.exe user32.dll,LockWorkStation).
Т.е запускаем файл 1.exe, ждём несколько секунд (чтоб антивирус вывел окно) и выполняем Lock.
Более того, при Lock можно увидеть, как значок антивируса меняется с синего на зелёный. Это означает, что он переходит из режима обучения в режим разрешения (всё что не запрещено — разрешено). Что ослабляет систему защиты. Например, программы, которым явно не запрещено выходить в интернет, будут теперь выходить. После входа в систему значок снова меняется на синий. (UPD: Это было в старых версиях (6.0) В последних версиях переходит в режим блокировки, что совершенно не ослабляет защиту. Спасибо Andersen за его замечание на сей счёт)

Демонстрация



Суть демонстрации:
  1. Проверяем, что в системе нет службы «test test test service» (пытаемся её остановить, на что система отвечает, что такой службы нет)
  2. Запускаем bat-файл (который запустит установщик службы)
  3. Через DebugViewer видим, что драйвер запустился именно ПОСЛЕ лока системы, а не до
  4. Снова пытаемся остановить службу «test test test service». На сей раз успешно.




Проверены на уязвимость следующие версии Agnitum Outpost Security Suite:
  1. 7.5.3 (3942.608.1810)
  2. 7.6 (3984.693.1842)


Upd (18.12.2012) производителем исправлена уязвимость в версии 8.0 (4164.652.1856) от 17 декабря 2012
Агиевич Игорь aka shanker @shanker
карма
8,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

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

  • +29
    Только маленькое уточнение: у вас делается не logout, а lock. Это, все-таки, большая разница. При локе юзер остается залогиненым и все его процессы продолжают работать.
    • +2
      Спасибо, поправил. Ночное написательство статей всё же, порой, приводит к неточностям
  • +3
    Да уж. Уже поддерживают Windows 8, а на письма о багах не отвечают )
  • +8
    Вау, оказывается есть команда timeout! А я как дурак всегда пингом пользовался.
    • +1
      Только с какой версии винды она появилась то?
      • 0
        в winХР нет, в win7 есть
  • –10
    Кто-нибудь что-нибудь хорошее про Online Solutions Security Suite, как ближайшую альтернативу, скажет?
    • +5
      Что ж там хорошего… В теме про руки может не стоит обсуждать ноги?
  • 0
    Проверил по тем же пунктам Outpost Firewall версию 6.5 и по-моему в ней не работает способ с локом? По крайней мере ничего не вышло у зашифрованного молебоксом файла, который пытался прописать себя в реестр в Software\Microsoft\Windows\CurrentVersion\Run
    • 0
      Я проверил Outpost Firewall версию 6.5 — у меня вообще не получилось залочить систему когда всплыло сообщение о загрузке драйвера (ни Win+L ни команда из батника не помогли). Жаль, что в новых версиях они это переделали…

      При Ваших тестах Outpost находился в режиме обучения (синий значок в системном трее)?
      • 0
        во всех режимах пробовал в 6.5 и везде не срабатывает
        • 0
          хм… выложу, наверное, свои тулзы для тестов, что видно на видео. попробуете с ними
  • +2
    Более того, при логауте можно увидеть, как значок антивируса меняется с синего на зелёный. Это означает, что он переходит из режима обучения в режим разрешения (всё что не запрещено — разрешено)

    Режим разрешения — «оранжевый»
    «зелёный» — режим блокировки
    • 0
      А Вы правы! Уж не знаю где меня так сглючило, что я пришёл к таким выводам… Может, в старых версиях видел? Посмотрю их. Поправлю статейку. Похоже, пора завязывать с ночным написательством статей. Уже вторая оплошность
    • 0
      Поначачал старых версий
      Выяснил. Описываемая мной проблема (смена значка с синего на оранжевый и переход в режим разрешения) была аж в версии 6.0 от 2008 года. Где-то у меня в памяти это сохранилось. В новых версиях такой проблемы нет.
      • 0
        Не понятно — так есть баг в новых версиях или нет? Получается, даже при защищенном режиме служба добавляется?
        • 0
          всё просто: тот баг, что в видео — присутствует в последних версиях. А баг с переходом в режим разрешения при залоченной системе — он в очень старых версиях был. Эти 2 бага никак не связаны.

          В настоящий момент статья поправлена, актуальна и не содержит противоречивых или ложных сведений
  • +4
    Интересно будет узнать, отреагируют ли разработчики после публикации.
  • 0
    Раз пошла такая пляска, а не посоветуете ли какой-нибудь хороший виндовый фаерволл? Удобный как Outost ранних версий, и гибкий и безопасный как ipfw или iptables =)
    • +2
      comodo
    • 0
      Ну вот я для себя лучше Outpost до сих пор ничего не видел. И продолжаю его юзать периодически. Жаль, что под линуксом его нет — с некоторых пор это теперь моя основная система. Винду пользую исключительно на виртуалках
      • +1
        И что Вы им хотите на линуксе делать?
        • 0
          То же самое что и в винде: иметь удобную GUI, которая показывает какие приложения сейчас с сетью работают, по каким протоколам и с какими интернет-адресами соединены. Показывать статистику переданного\принятого трафика для каждого приложения. И сколько времени эти сетевые сессии длятся. Настраивать правила для лезущих в сеть приложений (по каким адресам и протоколам можно передавать данные). иметь режим обучения, когда файервол будет спрашивать разрешать ли активность приложению и предлагать создать для него правило.

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

          Ну, и самое главное: Outpost имеет всё же очень неплохую проактивку! Пресекает многие попытки внедрения в память доверенного приложения. В линуксе я не знаю таких аналогов. тем более всё в одном флаконе
          • 0
            Linux way больше напоминает следующее:

            — файрвол, без привязки к приложениям (iptables, настраивается один раз и забывается)
            — вещи типа selinux и apparmor, чтобы более менее контроллировать куда приложения лазеет в локальной файловой системе, это более менее похоже на кучу сложный правил для каждого приложения, как у outpust.
            — визуальный мониторинг трафика — это отдельно, есть утилиты, их много разных (непомню опять же с привязкой к приложению или нет)

            Вообще зачем контроллировать куда приложение лезет в сеть? Чтобы не утащило ваши данные? Тогда лучше уж контроллировать приложение чтобы оно не читало ваши данные (selinux, apparmor, пользователи linux)

            «Пресекает многие попытки внедрения в память доверенного приложения» — это тоже не linux way. Лучше не давать потенциально зловредному коду такие права чтобы он мог куда-то там внедрится.

            По поводу привязки фаервола к приложению — в linux пользователь это в широком смысле и есть запущенная программа, т.к. программа под пользователем. можно запускать программы под разными пользователями,
            тогда будет больше возможностей контроля.

            Ещё в linux порт <= 1024 может слушать только root. остальные порты лучше закрыть в фаерволе. под рутом запускать только то чему доверяете.
            Исходящие соединения не визу смысла ограничивать (разве что port 25)

            Вообще был у меня outpost и windows, счас linux, На винде функциональность аутпоста была нужна (хотя его качество меня самого не радовало). На линукс это всё не нужно. Здесь нет такого что постоянно приходится
            запускать программы и половина из них неизвестно откуда и может оказаться вирусом.
            • 0
              Как вы узнаете, можно ли доверять приложению, пока оно не начнет открывать соединения по сети или не начнет куда-нибудь внедряться? Outpost так сказать ловит приложение «на гарячем», тогда как в Linux все обязательно нужно знать заранее, а остальное — запретить.
              • 0
                Не надо никому доверять, тактика «ловить на горячем» всё равно проигрышная, приложение всё равно может обмануть фаервол.

                Лучше ограничить доступ к файлам и ловить «на горячем» когда оно полезет туда куда не нужно.

                Или вы хотите дать приложению, которому не доверяете, доступ к очень важным файлам, а потом «поймать» его на сетевом соединении не на тот адрес? Это утопия.

  • +1
    В общем потестил сейчас. У меня фаервол аутпост 7.1, Windows 7.
    Проактивка настроена так, что запуск новых и измененных файлов перехватывается и появляется запрос на запуск.

    Запустил новую программу, аутпост спросил запускать ее или нет. Я нажал Win+L и программа действительно запустилась.

    Потом создал программу 1.exe и BAT файл для его запуска, как написано выше. Запустил BAT… Но тут появилось окошко аутпоста с запросом, запустить командный файл или нет?
    Т.е. при такой настройке аутпоста не получится запустить командный файл, который бы использовал эту дыру.

    Хотя может какой-нибудь vbs следует попробовать, может прокатит.
  • 0
    Спасибо за репорт )
    Да, мы знаем про эту проблему… Она будет исправлены в ближайшем релизе — Outpost 8, который выйдет уже буквально через неделю.
    • 0
      И правда. В вышедшем вчера Outpost 8 этой уязвимости нет

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