Обход проактивной защиты 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
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама
    Комментарии 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 этой уязвимости нет

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