ночь живых мертвецов —активная защита против малвари

крис касперски, ака мыщъх, ака nezumi, no email

броня крепка и кони наши быстры! антивирусы в смысле. да где же мы быстрых антивирусов видели?! они же тормозят как… ну прямо как танки! и ни хвоста не ловят! а малварь идет косяками и если ее не прищемить, она сожрет все данные и даже ни разу не подавится. персональные брандмауэры отдыхают, тихо куря в сторонке. до сих пор _реально_ действующие защитные комплексы были доступны лишь крупным провайдерам, теперь же они приходят в массы!

введение

Люди верят в антивирусы, и, хотя антивирусы им не очень-то помогают, они уже давно стали непременным атрибутом безопасности. Даже со старыми базами месячной давности. Антивирусная индустрия, изначально ориентированная на отлов вирусов, разрабатывающихся месяцами и внедряющих свою, возможно измененную копию, в исполняемые файлы, распространяемые через дискеты, BBS или первобытные компьютерные сети типа FIDO, оказалась тупиковой ветвью эволюции, паразитирующей на вирусах и обреченной на вымирание, агонию которой мы уже наблюдаем.

IDS, IPS, AMP, Snort и товарищи

Вирусы изменились! Точнее исчезли, уступив место компьютерным червям, появляющихся чуть ли не каждый день, написанных на С/DELPHI/Visual Basic’е, ни в какие файлы не внедряющиеся и зачастую обитающих исключительно в оперативной памяти. Руткиты и почтовые троянские кони — это для детишек. Нормальная мальварь похожа на крылатую ракету. Быструю, стремительную, накрывающую цель точечным ударом и самоуничтожающуюся в случае неудачной атаки. Действительно, какой смысл торчать на машине, если пароли вместе с электронными деньгами уже ушли в неизвестном направлении и червь может смело делать себе харакири, благо пока все дыры не заткнуты, он, в случае необходимости, будет приходить вновь и вновь.

Антивирусные компании испытывают серьезные проблемы с поиском образцов свежей малвари, покупая ее за нехилые деньги у того же VirusTotal’а или Norman’а (ой, что я такое говорю?! это же секретная информация!). Наглядный тому пример — Rustock.C. Когда одни антивирусные компании (имеющие связь с миром андеграудна) уже выпустили лекарство, другие (такой связи, очевидно, не имеющие) — лихорадочно пытались заполучить хотя бы один рабочий образец. А смысл? По данным компаний, владеющих распределенными сенсорными сетями, эпидемия рустока завершилась еще _до_ выпуска лекарства в свет (по другим данным — спустя несколько дней после его выхода). Русток сделал свое дело, подняв бот-нет, прокачавший через себя нехилый объем хакерского трафика, после чего осел в частных коллекциях, ну и в антивирусных базах. О! Как круто ловить вирус, которого можно встретить разве что на http://www.offensivecomputing.net/ да и то после предварительной регистрации.

Новое время требует новых решений. Пионерами борьбы с червями (и зловещими хакерами) стали системы обнаружения вторжений, они же Intruder Detection System или, сокращенно, IDS. В отличии от антивирусов и pro-активных механизмов, работающих с файлами и хучащих операционную систему, так что она постоянно сваливается в голубой экран смерти, IDS поступает совсем не так. IDS садится на интерфейс, прогоняя через себя весь входящий/исходящий сетевой трафик и через специальную базу «правил» (фактически тех же самых сигнатур), ловит подозрительные пакеты или детектит специфичную сетевую активность, поднимая сигнал тревоги. Естественно, сигнатуры необходимо обновлять, иначе IDS ни хвоста не сможет распознать. А где их брать? Сигнатуры в смысле?!

Пополнение сигнатур осуществляется из двух основных источников. Первый — это honey-pot’ы — «горшки с медом» или «капканы» для червей, реализованные на базе умышленно незащищенных компьютеров (виртуальных машин) с кучей дыр, куда малварь устремляется мощными косяками, возбуждая специально сконструированную систему сенсоров, тут же «выцарапывающих» червей из TCP/IP потока и забрасывающих их в сигнатурную базу, в результате чего остальные узлы, оснащенные IDS, автоматически распознают малварь и поднимают администратора по тревоге.

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

Локальные антивирусы с эвристическими анализаторами на борту доступным всем желающим и прежде чем выпускать червя в сеть, хакеры многократно прогоняют его через кучу антивирусов, совершенствуя код до тех пор, пока не заткнуться все эвристики. Собственно потому, эвристический анализ и не работает. Даже если эвристик настолько крут, что ловит 99,996 еще неизвестной малвари, то оставшихся 0,004% вполне достаточно для эпидемии глобальных масштабов, не говоря уже о том, что цифры, приводимые разработчиками антивирусов, выражаются не в процентах, а в попугаях. Да-да, именно в попугаях. Проценты — это всегда проценты от чего-то. От чего? Если брать малварь написанную с учетом обхода эвристика, мы получим 0%, если же брать всю малварь… гм, а оно нам нужно?! Обилие пионерский червей, конечно, повышает процентаж, но нас интересуют не маркетинговые данные, а реальная защищенность, которая, увы, существует только в маркетинговых проспектах и в умах доверчивых пользователей, начитавшихся рекламной мишуры.

По большому счету, качество детекции у IDS ничуть не выше, но! Недоступность коммерческих реализаций и невозможность «обкатки» малвари, погружают хакера во тьму, вынуждая его действовать наугад, наступая на заботливо расставленные капканы и грабли, обойти которые может разве что ясновидец или же… непосредственно сам разработчик IDS, но ни тех, ни других среди хакеров не наблюдается, а потому IDS’ы рулят.

Рисунок 1 схематическое устройство типичной системы обнаружения/блокировки вторжений

Главным (и, пожалуй, единственным) недостатком IDS’ов является их пассивность. Они словно посторонние наблюдатели, распознающие вторжение, но не предпринимающие никаких мер по его предотвращению, хотя с технической стороны заблокировать трафик — раз плюнуть. Так почему же IDS’ы этого не делают?! Причина в огромном количестве ложных позитивных срабатываний. При простой записи в лог — проблем не возникает. (администраторы любят анализировать длинные логи), а вот блокировка трафика из-за каждого пустяка превращает IDS в замечательное средство для DoS атак, причем его даже атаковать не нужно. Он и сам с перепугу замурует все входы/выводы, словив совершенно честный пакет.

Когда же IDS достигли приемлемого качества распознавания атак, их тут же переименовали в IPS – Intruder Prevention System – Системы Предотвращения Вторжений. Базовые принципы работы остались неизменными. Старые продукты под новой торговой маркой. Ясное дело, чтобы срубить с пользователей побольше бабла (а что? некоторые ставят одновременно и IDS, и IPS, хотя по сути дела, IDS реализует подмножество функций IPS и при наличии последнего просто не нужен, ну разве что достался в подарок от производителей сетвых девайсов).

Кстати, о подарках. С некоторого времени IDS/IPS стали встраиваться в персональные брандмауэры, точки беспроводного доступа, модемы и т.д., и т.п. Однако, качество встраиваемых защит крайне невелико. Доступа к сигнатурным базам (за редкими исключениями) они не имеют, а потому ловят только клинически устаревшую малварь, использующую типовые сценарии атаки, разработанные несколько лет тому назад.

IDS/IPS, встроенные в «промышленные» марштутизаторы от CISCO, работают намного лучше. Точнее сказать, CISCO IPS _работает_, а та штука, что встроена в персональный брандмауэр, только набивает себе цену. Кстати, о цене. До недавнего времени, IDS/IPS стоили очень и очень дорого, что в конечном счете (спрос рождает предложение) привело к появлению аналогов от независимых производителей, из которых мы рассмотрим два наиболее известных продукта: коммерческий AMP (Active Malware Protection) от Endeavor Security и открытый проект Snort, сравнивая их сильные и слабые стороны.

Snort

Система обнаружения вторжений по имени Snort (с логотипом свиньи с вооот-такими ноздрями) позиционируется как Open-Source проект, исходные тексты которого можно в любой момент скачать с официального сайта http://www.snort.org. Там же можно найти и многочисленные порты под любые системы: от XP до прошивок DSL-модемов и беспроводных точек доступа. Правда, с установкой придется, мягко выражаясь, попыхтеть. Юзабельность на уровне черного экрана командой строки. Системы генерации отчетов в удобночитаемом виде как бы есть, но пользы от них немного и сквозь отчет приходится продираться как через оккупированную хрюшками свинофабрику.

Рисунок 2 www.snort.org – официальный сайт одной из самых популярных IDS с открытыми исходными текстами

Ладно, все это мелочи. Пора поговорить о главном, то есть о деньгах. Оказывается, что Snort далеко не бесплатный, хотя и свободный. Без сигнатурной базы Snort практически бесполезен, а за доступ к базе надо платить, выкладывая за годовую подписку от $30 до $500 в зависимости от количества установленных сенсоров и потребностей. Без подписки зарегистрированные пользователи (то есть халявщики) получают сигнатуры через 30 дней —порядком протухшие и не сильно полезные (последнее время вспышки вирусной активности носят кратковременный характер и через 30 дней вирусная агрессия, как правило, сходит на нет и в сети наблюдается мелкая «рябь» остаточной активности). Незарегистрированные пользователи получают сигнатуры по мере выхода новых релизов Snort’а, удивляясь, как эта штука стала стандартом де-факто в мире открытых IDS?! Ведь она же совсем не работает!

Рисунок 3 открытость Snort’а еще не подразумевает его бесплатность

Бесспорно, среди открытых проектов — Snort самый лучший и детально описанный в десятках книг, спектр целевой аудитории которых распластался от чайников, до администраторов, самостоятельно пишущих сигнатуры (или, точнее, в терминах Snort’а — рулеза от английского rules, что переводится как «правило [поведения]»), вместо того, чтобы лицензировать уже готовые у ведущих поставщиков.

На этом достоинства Snort’а и заканчиваются. Классический пример продукта в стиле: откомпилировали исходные тексты (попутно исправив кучу ошибок) — получился паровоз, откомпилировали опять — снова паровоз! Перевернули всю документацию, пока наконец не нашли сноску: доработать напильником до самолета. И нечего жаловаться! Ведь исходные тексты бесплатны! А готовые наборы сигнатур, составленные неизвестно кем и неизвестно для чего, это не Zen-way. Настоящие администраторы пишут все сигнатуры самостоятельно, обложившись кучей литературы (не бесплатной однако), сигаретами и всеми прочими атрибутами хакерской жизни. Ладно, заканчиваем со Snort’ом и переходим к действительно серьезным вещам, повернутым лицом к пользователю.

AMP

Основной конкурент Snort’а — это Active Malware Protection от Endeavor Security (www.endeavorsecurity.com). Коммерческий продукт с дружелюбным интерфейсом и потрясающими возможностями, приправленными качественно сконструированными и тщательно отлаженными сигнатурами, дающих минимум ложных срабатываний, что позволяет использовать AMP и как IDS, и как IPS. Полный аппаратно-программный комплекс стоит порядка $13k, причем не «вообще», а за год. По лицензии. А что?! Для крупных ISP вполне подъемная сумма, окупающая себя за счет подавления «паразитного» трафика, создаваемого червями, ботнетами и всякой прочей нечестью.

Рисунок 4 панель WEB-интерфейса по управлению AMP

А как быть рядовым пользователям?! Мыщъх убедил руководство компании создать бесплатную демонстрационную версию с ограничением по количеству малвари, детектируемой в единицу времени. Скажем, не более 100 червей в день, что для большинства из нас более, чем достаточно!!! Даже в разгар эпидемий мыщъхиный компьютер пытаются атаковать примерно раз в полчаса, что дает нам двойной запас по прочности.

Программная составляющая представляет собой дистрибутив в формате rpm, требующий процессора не хуже P-4, операционную систему типа Fedora Core 6 и, как минимум, одну сетевую карту. На Windows AMP принципиально не устанавливается, но… на этот случай существуют виртуальные машины со своими же виртуальными сетями и сетевыми трансляторами, связывающими виртуальную сеть с внешним миром.

В зависимости от целей, преследуемых пользователем, варианты установки варьируются в широких пределах. Если нам нужна система обнаружения вторжений, мы просто ставим Федору на VM Ware, инсталлируем AMP и даем ей доступ к физической сети, чтобы она ловила все проходящие пакеты, распознавая атаки (как успешные, так и обломавшиеся) вместе со следами присутствия малвари, что открывает огромное поле для экспериментов, позволяя, в частности, коллекционировать свежих червей и вести мониторинг вирусной активности.

Рисунок 5 в сети свирепствует червь Worm.Allaple-2, совершающий набеги на беззащитные узы

Функционируя в режиме IDS (системы обнаружения вторжений), AMP никак не защищает компьютер от атак, а лишь информирует, что нас поимели. Гм, ну это мы и без AMP рано или поздно узнаем. Как насчет укрепления линии обороны? В идеале нам потребуется отдельный компьютер, включенный в разрыв сетевого кабеля, но в «бюджетном» варианте можно обойтись и без него, воспользовавшись все той же VM Ware, чья виртуальная сеть конфигурируется так, чтобы весь трафик проходил через гостевую операционную систему с AMP – тогда AMP получит возможность блокировать вредоносные пакеты в реальном времени без отрыва от производства. Однако, при этом придется задействовать NAT (транслятор сетевых адресов, встроенный в VM Ware), а через NAT работают далеко не все программы, или работают, но в ограниченном режиме (скажем, Осел). К тому же, такая схема защиты не предотвращает атаки на TCP/IP стек базовой операционной системы, в котором так же имеются дыры. Впрочем, подавляющее большинство дыр сосредоточено в прикладных протоколах и приложениях типа IE, а дыры в TCP/IP стеке — это целое событие! И такие события можно пересчитать по пальцам одной руки. Ну, хорошо, двух рук — но это уже за все время существования NT.

Рисунок 6 детальная информация по отдельно взятому инциденту с возможностью скачивания экземпляра червя (разной степени «потрепанности») на свою локальную машину

Хорошая идея — пускай IE и другие потенциально небезопасные приложения работают через AMP, установленную на виртуальной машине, а программы, которым мы доверяем (например, Осел), ходят в сеть напрямую, что обеспечит полный комфорт и сухость.

>>> врезка хроника пикирующего бомбардировщика

Помимо локальной копии, фиксирующей атаки на заданный узел, пользователи AMP получают бесплатный доступ к демонстрационному аккаунту, который, пускай и с ограничениями, отображает текущую статистику вторжений в реальном времени. Очень полезная штука для анализа вирусной активности. В частности, 16 июля 2008 года произошел взрыв. Нет, не ядерный. Просто резкая и непонятно чем обоснованная вспышка вирусной активности, сошедшая на нет уже через несколько дней.

AMP позволяет не только наблюдать за вирусами, но и скачивать образцы, отловленные распределенной сетью honey-pot’ов, причем не только вирусов, атакующих наш узел, но и всех пойманных вирусов вообще! Лучшего средства для пополнения частных вирусных коллекций, пожалуй, и не придумаешь. Правда, не все так радужно. Больше половины малвари «вытягивается» в сильно побитом состоянии. Есть голова, но нет хвоста. Или же, наоборот, червь длинною в 9.6 Кб, захваченный вместе с посторонним трафиком, вырастает до мегабайтный размеров, что, естественно, сбивает столку, затрудняя анализ. Впрочем, учитывая, что количество пойманных штаммов одного и того же вируса исчисляется сотнями, всегда можно «выдрать» наиболее качественный экземпляр, с которым уже и работать.

Рисунок 7 hex-дамп атакующего shell-кода с возможностью скачки на компьютер в бинарный файл

Но черви это ерунда. Их и на http://www.offensivecomputing.net найти можно. Уникальность AMP в том, что она ловит (и позволяет скачивать для исследования!) еще и shell-коды, т.е. атакующие компоненты червя, вызывающие переполнения буфера, и загружающие «хвост», чаще всего реализованный в виде обычного exe/dll/sys файла, реже — чего-то сильно необычного и без загрузчика практически не поддающегося анализу (взять хотя бы нашумевший Rustock.C, когда реверсеры рвали на себе волосы в разных местах, умоляя бога послать им дроппер, ну то есть тот код, который забрасывает Rustock’а на заражаемые компьютеры).

заключение

Проникнуть на компьютер, защищенный Snort’ом, AMP или другой качественной IPS, практически невозможно. Допустим, хакер обнаружил новую, еще никому неизвестную уязвимость в… ну, это, впрочем, неважно. Допустим, так же, что атака основана на переполнении буфера, а жертва использует XP SP2+ с аппаратным DEP, задействованным для всех приложений. В этом случае первая фаза атаки — копирование shell-кода из стека в специально выделенную область памяти с атрибутами, разрешающими чтение, запись и выполнение. Технически это реализуется через последовательность вызовов API функций, чьи адреса хакер засылает в стек, что легко описывается языком сигнатур и распознается системой обнаружения вторжений независимо от того какое именно приложение (или сетевая служба) атакуется.

В умелых руках AMP превращается в мощный инструмент борьбы с агрессорами, действующий на автопилоте и не требующий внимания со стороны оператора. К сожалению, если за компьютером сидит существо типа «секретарша», то… AMP эффективно парсит TCP-протокол с сетевого уровня, и декодирует HTTP, а так же файлы различных форматов, такие, например, как MS Word или PDF — в них то же встречаются ошибки переполнения! Достаточно лишь открыть их. Увы! PDF, выложенный на WEB/FTP, распарсить (на сетевом уровне) еще возможно, но это уже предел (во всяком случае для AMP). Тот же самый PDF, начиненный shell-кодом, и упакованный zip’ом или rar’ом на сетевом уровне ни AMP, ни другие системы обнаружения вторжений, не распарсят, ибо если парсить абсолютно все — никаких вычислительных мощностей не хватит и мы получим такие тормоза, что ну ее на фиг эту безопасность.

Тоже самое относится и к обычным исполняемым файлам, внутри которых может находится все что угодно: от AdWare до троянских коней. AMP в принципе не защищает от атак подобного рода. Это все-таки не антивирус. А антивирусы известно где — на VirusTotal. AMP плюс VirusTotal (или локальный антивирус) плюс песочница типа Norman Sand Box – хоть и не панацея, но во всей своей совокупности обеспечивают вполне приемлемый уровень защищенности.