16 ноября, 2011
Ребятам о руткитах.
// Или занимательная компьютерная проктология.
Честно говоря, публиковать этот пост – в этом есть некий риск. Не исключаю, что далеко не все читатели моего блога действительно настолько технически любопытны, чтобы интересоваться «руткитами» — техническими подробностями компьютерного зловредства и анти-зловредства. Ведь не всех интригует тема глубины кроличьей норы – большинство интересуется только вкусом и ценой крольчатины. Но – иду на риск и предлагаю две таблетки. Красную и синюю (как было у Нео). // кстати, где-то был интересный вопрос – а что бы произошло, если бы Нео слопал обе таблетки? :)
Итак – таблетка красная.
Тема интересная, но о ней в прессе почти как о покойнике – или ничего или леденящие душу, не имеющие ничего общего с реальностью страшилки. Ну, есть и много чисто технических публикаций, но широкой аудитории от этого проблема никак не становится понятнее.
А проблема есть.
Увы, большинство антивирусов откровенно задвигают на защиту от руткитов. А способность бороться с ними, во-первых, свидетельствует о технологической продвинутости и вообще антималварной экспертизе разработчика. Как следствие – на реальный уровень доверия, который этот разработчик заслуживает. А во-вторых, это прямо влияет на среднюю температуру по больнице и разгул кибер-негодяев в глобальном масштабе. Половина ботнетов используют руткит-технологии и умение антивирусов выводить эту заразу – лучшая защита от сетевого криминала.
Обо всём этом ниже и по порядку.
Начнём с азов. Что такое руткит?
Немного юниксовой археологии. Изначально термином «руткит» называли скрытые «закладки» в код стандартных юниксовых (линусковых) утилей – благо исходный код юни/лину-ксов открыт, втыкай что ни попадя. Главной задачей этих закладок было дождаться коннекта от удалённого «хозяина» и дать ему полный доступ к ресурсам системы (сделать хозяина «рутом» — потому и «руткит»). Т.е. умельцы-самоделкины, компиляющие систему сами из непроверенных источников, самостоятельно ставили себе «троянcкую закладку», которая позволяла неведомым хакерам из немеряных пространств Инета получать контроль над системой и рулить по своему усмотрению.
Достаточно популярный был термин, который был скопи-пиз.. пастен любителями «громких названий» для обозначения Виндовых зловредностей. Так *-никс термин давно забыт, используется теперь везде в приложении ко всему, что «прячется в системе».
Итак, «руткит» в современном понимании – это вовсе не страшный-престрашный вредонос, как можно прочитать в популярных статьях. Руткит в современном понимании – это просто технология сокрытия присутствия софта в системе. Инструментов тому много – перехват системных функций, изменение прав доступа, залочивание файлов, манипуляции с объектами ядра и много другого. И вредоносность этой технологии прямо зависит от фантазии автора. Вроде кухонного ножа – смотря как его использовать. Он может оказаться и полезной домашней утварью, а может быть и опасным холодным оружием в бытовых разборках. Например, руткиты используются в системах защиты от пиратства и эмуляторах разных устройств.
Но так повелось, что широкой публике эта технология больше известна с ярлыком плохиша. Много марвари (причём самой сложной и опасной) действительно использует руткиты, чтобы скрывать себя как от пользователя, так и от защитного ПО. Например, Stuxnet, TDSS, Sinowal и Rustock. Список очень длинный.
Историю, классификацию и прочие технические подробности по руткитам смотрите в Википедии. Также рекомендую вот эту обзорную статью по эволюции технологии. А я пойду дальше.
Руткиты – реально очень сложная технология. Некоторые из них научились обходить даже такие навороченные системы защиты как Patch Guard и цифровую подпись для драйверов. Я не сомневаюсь, что у кибер-негодяев такие спецы на вес золота. Да и сразу видно, что мало кто может себе позволить – например, у шикарно распиаренного McAfee Shady RAT (за которым, якобы, стояло некое правительство) этого не было.
Разумеется, и бороться с руткитами не так-то уж просто. С точки зрения интеграции в операционную систему и способности контролировать внутренние процессы руткиты равнозначны антивирусам. Как следствие – удаление руткита, а в частности лечение зараженного компьютера – задача нетривиальная. Но равные права нужно понимать буквально – у каждого также одинаковые возможности. И вот тут начинается реальный поединок мозгов и экспертизы.
Противостояние идёт по трём направлениям – детект модулей руткита (недопущение заражения), самозащита (чтобы руткит не вынес антивирус из памяти) и нападение (использование недостатков руткита для его нейтрализации и удаления).
Самое неприятное, что сейчас большинство антивирусов в борьбе с руткитами ограничиваются только детектом. Тупо вносят в базу данных хэши файлов-компонентов, тем самым позволяя детектировать руткит только в неактивном состоянии. В лучшем случае выпустят stand-alone утилиту для лечения (как в последней версии Нортона).
Оно и понятно: задетектить сигнатурой или того хуже — cтырить детект у соседа через мультисканер большого ума не надо. А вот проанализировать сложный код, подкрутить эвристику, сделать дженерик детект на всё семейство, перехватывать вредоносные скрипты, закрывать уязвимости в стороннем софте, разработать нормальную лечилку – для этого нужны и мозги и экспертиза. В результате и защита получается – решето. Немного подправили процесс – руткит уже не детектится. А о лечении активного заражения вообще речи не идёт.
Недавно на anti-malware.ru вышел свежий тест на способности разных продуктов лечить активное заражение руткитами. Ну, во-первых, просто приятно + респект нашему AMR (Anti-Malware Research). Так держать, очень горжусь как результатом, так и прогрессом по сравнению с прошлым годом. Во-вторых, из этой таблички очень просто понять, кто реально занимается исследованиями, а кто ориентируется на разные нерелевантные горе-тесты. В-третьих – это повод в нескольких словах рассказать про наши анти-руткит технологии.
У нас есть две собственные разработки против руткитов. Первая, QScan – такая универсальная таблетка против руткитов. Вторая, MARK – заточена под конкретные руткиты и их методики маскировки. Если QScan не справляется с чем-то, на помощь приходит MARK, проводит сложные хирургические мероприятия в памяти и передаёт «пациента» обратно QScan’у. У обеих технологий куча особенностей и хитростей. Например, QScan умело обходит руткитовые перехватчики – он разбирает файлы системного реестра и посекторно собирает файлы для сканирования. Дальше не буду углубляться – слишком сложно, да и тут много ноу-хау, которые ждут своей очереди в патентных бюро разных стран. Главное – налицо результат – наши продукты впереди всех по защите от руткитов!
Вот. А MARK мы сделали ещё в 2008 году. QScan появился годом позже. С тех пор постоянно их развиваем. Обе технологии — часть нашего антивирусного движка и присутствуют в коммерческих (консьюмерских и корпоративных) продуктах и бесплатных утилитах (например, наша Virus Removal Tool).
Я думаю, что чем дальше, тем руткиты будут становиться сложнее. И тем шире будет их применение. Уже сейчас старенький руткит можно запросто купить на чёрном рынке за пару сотен долларов и прикрутить к своей малвари. Да и сама технология тоже не стоит на месте -эволюционирует вместе с операционной системой! Руткиты начали поддерживать x64 (а мы что? Мы тоже их там ловим!), даже несмотря на то, что в x64 ОС усилили защиту от различных перехватов/модификаций системы. Плюс кибер-негодяи вовсю используют буткиты (также их использует и много легального софта), а на повестке дня уже стоят биоскиты.
Имхо, забивать на это направление малвари как это делает большинство антивирусных компаний – неправильно, недальновидно и вообще неуважительно по отношению к пользователям. У них создаётся ложное чувство защищённости – какой-нибудь троян может нормально себе жить-поживать на компьютере под защитой такого антивируса и «тырить всё»! И кому это надо?? Ясно кому!
В общем, смотрите, что себе ставите на компьютер. И не забывайте про сыр и мышеловки.
А синяя таблетка уже и не нужна – всё равно же ничего не помните! :)