12 лет назад 10 апреля 2007 в 17:39 72

Компьютерная контрразведка

Автор: Сергей Голубев

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

КОМПЛЕКСНЫЕ ВАРИАНТЫ

Если говорить о борьбе с клавиатурными шпионами и RootKit-модулями, то первое, что приходит в голову – использовать классические антивирусные программы. Тем более что возросшая опасность от таких утилит заставила разработчиков уделить особое внимание методам противодействия именно им. В частности, в шестой версии “Антивируса Касперского” имеется модуль проактивной защиты, отвечающий за детектирование клавиатурных перехватчиков. Разработчики сообщают, что теперь их программа определяет все известные типы кейлоггеров.

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

Однако отсутствие адекватного контроля со стороны пользователя может обернуться неприятностями. Для классических вирусов роль ОТК выполняет сама система – зараженная машина очень скоро “просигнализирует” о том, что защитный софт никуда не годится.

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

Второй рубеж – любой более-менее продвинутый файерволл. Например, Agnitum Outpost. Все-таки главная задача клавиатурного шпиона – не столько собрать информацию, сколько отправить ее злоумышленнику. Для этого ему надо время от времени выходить в Сеть. Вот тут-то его и можно повязать. Внимательно смотрите за сообщениями брандмауэра и прибивайте все, что вызывает у вас какие-то подозрения.

Роль третьего рубежа может играть интегрированный пакет, специально предназначенный для защиты информации. Например, Acronis Privacy Expert Suite. Последняя версия этой программы ищет и удаляет не только клавиатурных шпионов, но и руткиты, так что решение является достаточно полным.

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

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

Вывод такой: комплексные средства хороши, но для того чтобы чувствовать себя относительно спокойно, их недостаточно. Хотя бы потому, что клавиатурные шпионы значительно опасней традиционных вирусов. Разрушенная система быстро восстанавливается из резервной копии. А вот содержимое скомпрометированного электронного кошелька вряд ли получится вернуть так же легко. Нужно что-то узкоспециализированное. Именно такие программы и составят последний рубеж обороны.

ЗАЩИТА ОТ КЕЙЛОГГЕРОВ

Anti-keylogger (www.bezpeka.biz) – утилита, призванная обнаруживать и блокировать клавиатурных шпионов. Ее основное достоинство заключается в том, что приложение не использует сигнатурные базы, а стало быть, совершенно не зависит от своевременного обновления. Это стало возможным благодаря специальным эвристическим алгоритмам, позволяющим детектировать опасные модули по их поведению, а не по коду.

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

Итак, Anti-keylogger функционирует в фоновом режиме и не задает пользователю никаких вопросов. Вроде, это хорошо – порой назойливость некоторых программ очень надоедает. Однако у всего есть побочный эффект. В данном случае невнимательный юзер может запросто привести систему в частично неработоспособное состояние.

Чтобы этого избежать, активируйте в настройках программы блок “Политика защиты” и внимательно ознакомьтесь со списком обнаруженных модулей, которые Anti-keylogger сочла клавиатурными шпионами. Поскольку готовых сигнатур приложение не использует, там окажется все, что вызывает хоть какое-то подозрение, в том числе и вполне добропорядочный софт. В частности, весьма распространенный файерволл Agnitum Outpost. Про утилиты типа Punto Switcher можно и не говорить – и так все ясно.

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

И тут мы можем столкнуться с побочным эффектом “дружелюбия”. Дело в том, что авторы программы советуют не снимать блокировку с модулей, назначение и функции которых не известны пользователю. А теперь обратите внимание на скриншот. Уверены ли вы, что любой потребитель запросто скажет, какие DLL-файлы хорошие, а какие плохие?

Создатели Anti-keylogger знают ответ на этот вопрос. Поэтому в расширенных опциях приложения есть возможность запретить пользователям, не имеющим прав администратора, управление политикой защиты. Правда, к поимке шпионов это уже никакого отношения не имеет – обычная защита “от дурака”.

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

Advanced Anti-Keylogger (www.anti-keylogger.net) – еще одна программа этого класса. Принцип работы аналогичен – используется все тот же эвристический метод. Интерфейс программы может показаться излишне скромным. По крайней мере, настроек у нее немного, и большинству пользователей даже не придется открывать этот пункт меню.

Однако из этого ровным счетом ничего не вытекает – Advanced Anti-Keylogger прекрасно управляема. Дело в том, что оптимальным режимом ее работы является Custom security mode, при котором пользователь сможет настроить правило для каждого приложения. Примерно таким же методом настраивается большинство файерволлов, поэтому дело весьма привычное.

Конечно, в подобном подходе есть отрицательные моменты. Сразу же после первого запуска приходится тратить время на определение всех правил. Зато потом программа работает тихо и без сюрпризов. Разумеется, ни одно решение пользователя не является окончательным и бесповоротным – интерфейс Advanced Anti-Keylogger позволяет переопределить уже заданное правило для любого приложения.

Главное преимущество Advanced Anti-Keylogger над Anti-keylogger – высокая степень толерантности к другим защитным программам. Например, украинский продукт в сочетании с питерским файерволлом может запросто оставить пользователя вообще без интернета.

ВЫЯВЛЕНИЕ РУТКИТОВ

Trend Micro RootkitBuster (www.trendmicro.com) – бесплатная утилита для обнаружения и дезактивации руткитов, созданная известным производителем антивирусного ПО. Программа не требует инсталляции и может запускаться с любого носителя, что, без сомнения, следует записать ей в актив.

Еще одно достоинство приложения – предельная простота управления. Только три кнопки: Scan, Stop и Exit. Все результаты сканирования будут записаны в текстовый файл, и их можно будет спокойно изучить на досуге.

К сожалению, отсутствие настроек не позволяет выбрать каталоги для сканирования. И действительно, Trend Micro RootkitBuster работает только с системными папками. С одной стороны, это оправдано, поскольку искать руткиты в других местах особого резона нет, с другой – явное ограничение свободы потребителя.

Еще один минус программы – отсутствие хоть какой-нибудь помощи. Пользователю придется самому разбираться в том, какие именно объекты были обнаружены при сканировании, и принимать решение о степени их опасности. Таким образом, получается, что Trend Micro RootkitBuster предназначен для подготовленного специалиста. Впрочем, у обыкновенного человека всегда есть вариант полностью положиться на квалификацию разработчиков и не грузить себя содержимым лог-файла.

GMER (gmer.net) – еще один бесплатный инструмент для борьбы с руткитами. Точнее говоря, достаточно функциональная сервисная программа, в которой есть соответствующий модуль. В отличие от предыдущего героя GMER имеет много опций, среди них и выбор логических дисков, которые будут исследованы на предмет выявления заразы. Также пользователю предлагается отметить тип объектов, нормальное состояние которых вызывает у него опасение.

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

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

RootkitRevealer (www.microsoft.com/technet/sysinternals/utilities/RootkitRevealer.mspx) – программа, созданная одним из крупнейших специалистов в области борьбы с руткитами Марком Руссиновичем. В своей работе утилита использует полный доступ к структуре файловых систем. Фактически реальное содержимое объекта сравнивается с полученным при помощи API. Если есть разница, то пользователю предлагается с этим как-то разобраться.

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

Поскольку программа Руссиновича – едва ли не лучшая в своем классе, именно на ее примере лучше всего сказать о методиках обнаружения RootKit-модулей и об их недостатках.

Прежде всего, важно понимать, что руткит-технологии используются не только злоумышленниками, но и создателями вполне добропорядочных приложений. Например, тот же Руссинович обнаружил руткит в программе Sony BMG Music Entertainment. Занявшись более серьезным исследованием вопроса, он тут же нашел аналогичные блоки в ряде продуктов компании Symantec и “Лаборатории Касперского”, что послужило причиной его достаточно резких высказываний в их адрес.

Разумеется, представители фирм тут же заявили, что эти блоки нельзя считать руткитами по причине их полной безопасности для потребителя. Дескать, при вешании ярлыков надо исходить не из кода, а из намерений разработчиков. Все это, конечно, замечательно, но вот как объяснить сканеру, что помимо технически формальных признаков существует еще и расплывчато юридические?

Руссинович этого не знает. Поэтому его инструмент просто находит все объекты, которые по каким-либо причинам маскируют свое присутствие в системе. А решать, что с ними делать, предлагает пользователю.

Второй недостаток заключается в том, что RootKit-технология ассоциируется с некими скрытыми объектами, которые и находит сканер. Однако создатели вредоносных модулей программировать не вчера начали. Уже существуют руткиты, маскирующиеся от всего, кроме самих детекторов. Они обнаружены не будут.

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

Отсюда не очень приятный для пользователя вывод: с каждым обнаруженным руткитом придется разбираться отдельно. Лучше всего идти путем исключения. Например, очевидно, что не стоит опасаться всех подряд файлов, название которых начинается со знака “$”. А если посмотреть на скриншот, таких объектов обнаружено немало. Следующий шаг – исключение сомнительных модулей, входящих в явно нешпионские программы. Правда, перед этим крайне желательно зайти на официальный сайт разработчика. Наверняка вы не первый, кто столкнулся с такой проблемой, и какие-то комментарии там должны быть.

Таким образом, количество подозреваемых значительно сократится. Зато останутся самые “крепкие орешки”. Информацию о них придется искать в интернете. К сожалению, хороших и полных русскоязычных ресурсов, посвященных описанию RootKit-модулей, пока довольно мало – только отдельные статьи на сайтах по безопасности (или автор просто плохо искал, поэтому ссылки будут приняты им с благодарностью. – Прим. автора). Единственное, что можно смело рекомендовать – rootkits.ru. Тем же, кого не пугает технический английский, можно посоветовать обратиться к блогу Марка Руссиновича (blogs.technet.com/MarkRussinovich) или к специализированному порталу www.rootkit.com.

Еще одна трудность, подстерегающая борца с руткитами – невозможность удалить некоторые объекты при помощи стандартных средств. В частности, система откажется навсегда проститься с ключами реестра, содержащими вложенно-пустые параметры. Для этой цели Марк Руссинович написал утилиту RegDelNull (www.microsoft.com/technet/sysinternals/utilities/RegDelNull.mspx), работающую из командной строки.

ТАК ЛИ ВСЕ ПЛОХО НА САМОМ ДЕЛЕ?

Если быть совсем честным, то да. Дело в том, что безотказный и надежный метод сигнатур работает только со знакомым кодом. Поэтому у атакующей стороны есть очевидное преимущество – фора во времени. Для вирусов, которые портят систему и тут же “раскрываются”, она невелика. А вот шпионские модули могут не обращать на себя внимания достаточно долго. Поэтому надежда только на эвристику.

Но даже известных способов перехвата настолько много, что алгоритм детектирования получается слишком сложным. Следствие – на сегодняшний день нет абсолютно надежного автоматического средства определения и уничтожения клавиатурных шпионов и RootKit-модулей.

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

КЛАВИАТУРНЫЕ ШПИОНЫ

Клавиатурный шпион (Keyboard Logger, KeyLogger, Snoop, Snooper) – это программа, способная скрытно от пользователя записывать информацию обо всех нажимаемых им клавишах. Очевидно, что опасность от ее присутствия в системе трудно переоценить, ведь она фактически сводит на нет любые методы защиты данных.

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

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

Клавиатурные шпионы опираются в своей работе на различные методы. Наиболее популярные – классические ловушки, опросы клавиатуры, перехват API и использование специального драйвера.

Ловушки используют функции API библиотеки user32.dll, регистрирующей все потоки системы. Недостаток метода заключается в плохой маскировке работы. К тому же обнаружению поддаются только события из приложений GUI.

Метод опроса использует функции GetKeyboardState или GetAsyncKeyState, которые показывают текущее состояние клавиатуры. Главный недостаток такого подхода очевиден – обращения должны происходить с очень высокой частотой.

Перехват API и применение специального драйвера взамен штатного – более продвинутые технологии. Именно на их основе и созданы наиболее эффективные клавиатурные шпионы.

ROOTKIT

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

В Windows-мире под “руткитом” принято понимать утилиту, которая осуществляет перехват системных функций или замену системных библиотек. Это позволяет приложению работать незаметно для антивирусного ПО.

Как нетрудно заметить, чего-то изначально негативного Windows-толкование термина не несет. Программы-невидимки вовсе не обязательно должны быть вредными. Однако сама RootKit-технология все чаще используется для маскировки деятельности как шпионских приложений, так и обычных вирусов или троянов.

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

ОБЩИЕ МЕТОДЫ ОБНАРУЖЕНИЯ ROOTKIT

1 Самый эффективный способ заключается в сравнении снимков проверяемой системы. Первый делается во время ее работы, а второй – когда система выключена, для чего используется загрузка с LiveCD или другого жесткого диска. Такой метод позволяет гарантированно найти все скрытые объекты. Недостаток – очень высокая трудоемкость.

2 Можно сравнивать данные, возвращаемые API и полученные низкоуровневыми методами. Именно на этом принципе построена утилита RootkitRevealer. Недостаток – возможны пропуски вредоносных модулей.

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

4 Полное восстановление ServiceDescriptorTable к эталонному состоянию. Казалось бы, этот метод наиболее универсален и позволяет быстро избавиться от руткитов, работающих на уровне ядра. Но очень часто такой подход чреват крахом системы.