Корень зол
АрхивВ фокусеМир виртуальный ничуть не безопаснее реального. Наоборот: в нем проще совершить преступление, поэтому число угроз, с которыми не только может, а ежедневно сталкивается любой пользователь, продолжает расти.
Мир виртуальный ничуть не безопаснее реального. Наоборот: в нем проще совершить преступление и проще остаться безнаказанным. Вследствие этого число угроз, с которыми не только может, а ежедневно сталкивается любой пользователь, продолжает расти.
По историческим причинам юзеры больше всего боятся информационных вирусов. Изначально их называли (да и продолжают называть) "компьютерными", однако сейчас этот термин кажется анахронизмом: само понятие "компьютер" сильно изменилось за последнее десятилетие, да и среда для размножения вирусов стала куда разнообразнее - взять хотя бы смартфоны и даже банальные мобильники с поддержкой Java.
Поскольку изменился также и стиль жизни айтишников, вирусы постепенно отошли на задний план, уступив лидерство сетевым червям. Появление и повсеместное распространение дешевого доступа в Интернет (вкупе с халатным отношением пользователей к безопасности)привело к тому, что уже который год в списке самых опасных угроз интернет черви занимают первые места.
В затылок им дышат троянские кони, которые уже давно перестали быть прерогативой целенаправленной атаки и сейчас табунами скачут по жестким дискам случай ных жертв. Иногда слышу от пользователей жалобы: мол, антивирус нашел какую то гадость, а вылечить не смог - пришлось удалить. В связи с этим хочется напомнить, что зачастую черви и трояны существуют в виде отдельных файлов, которые "вылечить", естественно, невозможно, поскольку это и есть их тела. Число шпионских программ и компонентов возросло настолько, что периодическая проверка antispyware утилитами из параноидальной акции стала насущной необходимостью [Про spyware см. статью "Шпионские войны" в "КТ" #616]. Более того, теперь отрицательный результат сканирования заставляет меня насторожиться.
Старый новый код
В прошлом году из за скандала с Sony [en.wikipedia.org/wiki/] вспомнили о давней и доселе игнорируемой пользователями угрозе - руткитах(rootkits). Изначально в ОС Unix под руткитом подразумевался набор программ, предназначенный для получения, удержания и сокрытия факта использования привилегий суперпользователя (root). В Windows же это понятие трактуется так: совокупность программных средств, установленных на ПК с целью получения над ним контроля (полного или частичного) и скрывающих свое присутствие в системе. Их назначение может быть каким угодно: перехватчик клавиатурных нажатий, троян, шпионская программа, драйвер виртуального привода оптических дисков (к слову, комплекс защиты от копирования StarForce действует во многом схоже с руткитами)… и даже защитный (например, антивирусный) комплекс. Безусловно, технология руткитов является довольно специфической и агрессивной, но, как видите, она используется не только злоумышленниками и далеко не всегда с корыстным умыслом.
Троицу любит не только Нео
Чтобы обеспечить тайну присутствия руткита, его разработчик может пойти одним из трех основных путей.
>Первый - добавление фрагмента кода к ядру ОС (или даже перезапись его части). В этом плане ядро Windows NT и его "потомки" удивляют своей hacker friendly архитектурой. Когда трава была зеленее и деревья выше, традиционное ядро выглядело как самая маленькая, наиболее тщательно оптимизированная часть операционной системы. Потому она и оказывалась самой надежной. Однако с тех пор утекло много воды, и сейчас на уровне ядра работает множество небеспроблемных процессов - например, драйверы устройств [Цифровой сертификат - это здорово. Однако проблемы он не решает. Ведь зачастую бывает так, что у пользователя в наличии только неподписанный драйвер, не прошедший WHQL сертификацию в Microsoft, и деваться некуда. Приходится ставить по принципу Plug n Pray, попросту игнорируя предупреждения]. Многие мудрые люди критиковали такой подход, однако внутренние отчеты компании о скорости разработки ОС семейства Windows и звон монет, видимо, заглушили для руководства MS даже глас Брюса Шнайера [Шнайер Б. Секреты и ложь. Безопасность данных в цифровом мире. - С Пб.: "Питер", 2003].
Прошли годы, а воз и ныне там. Справедливости ради отмечу, что Linux тоже небезупречна: в ней присутствуют подгружаемые модули ядра (через которые также можно добавлять системные вызовы), и это не делает ее безопаснее.
>Перехват и подмена системных вызовов - другой способ скрыть руткит от глаз пользователя. Для этой цели модифицируются или заменяются собственными системные библиотеки. Дело в том, что любое приложение (будь то файловый менеджер или антивирусный сканер) начинает работать с файлами и директориями на диске, запрашивая через системную библиотеку их список. Если библиотека выдает неверный результат (скрывает часть файлов/каталогов), то они не будут ни отображаться, ни проверяться. Аналогичным образом руткит может прятаться и при попытке просмотреть список активных процессов.
>Третий путь проникновения: непосред ственная замена кода пользовательской программы - то есть, по сути, его троянизация. Это типичный вариант работы руткитов уровня приложений. С одной стороны, такие вещи проще всего обнаруживаются. С другой - их также проще писать и использовать. Большая часть доступных в Интернете наборов для изготовления руткитов позволяет делать именно такие руткиты. Кстати, распространено мнение, что если процесс активен, то принадлежащий ему файл нельзя пропатчить до завершения процесса. Мягко говоря, это опасный миф. Достаточно вникнуть в схему разграничения прав различных типов исполняемого кода, чтобы развеять его.
Адская смесь
Разграничения в виртуальной среде довольно условны. Кроме того, практически всегда есть возможность сочетать методики атаки и сокрытия следов. Поэтому в каждом конкретном случае бывает затруднительно сказать, что вот этот руткит - уровня ядра, а вот этот - приложения. Хотя такая классификация и применяется в настоящее время, она не является официальной, общепринятой (да и не может пока быть таковой). Неясно также и то, каким образом следует позиционировать руткиты по отношению к другим "вредоносным" программам.
Широта методов их работы, доставки на ПК жертвы и конечных целей служит благодатной почвой для споров. Разные исследователи руткитов и эксперты в области информационной безопасности (в зависимости от того, с чем больше работали и чаще сталкивались) излагают свои, действительно уникальные точки зрения: от необходимости считать руткиты всего лишь технологией для сокрытия других процессов [См., например: Машевский Ю., Монастырский А., Сапронов К. Возможности rootkit и борьба с ними] до придания им статуса эволюционно нового и быстро развивающегося типа угроз [Haesman John, Rootkit threats].
Старая гвардия и ПО специального назначения
Сейчас антивирусные компании всерьез озаботились проблемой руткитов и стали не просто добавлять их сигнатуры в базы своих продуктов (обеспечивая тем самым профилактику заражения), но даже разрабатывать новые способы определения активного руткита в системе (осуществлять диагностику). Не дремлют и другие борцы за чистоту адресного пространства. Марк Руссинович и Брюс Когсвелл выпустили отличную утилиту RootkitRevealer [www.sysinternals.com] , которая во многих случаях позволяет обнаружить присутствие руткита любого типа по отличиям в реестре и файловой системе при их опросе различными способами.
Однако единственный способ, гарантирующий возможность беспрепятственной проверки зараженной ОС [А любая ОС, по моему параноидальному мнению, должна считаться инфицированной до тех пор, пока строго не доказано обратное. Поскольку же строго доказать это практически невозможно… делаем вывод], - это ее сканирование в неактивной форме, то есть из под другой ОС. Тогда самый совершенный руткит уровня ядра будет обнаруживаться так же просто, как и клон тривиального вируса, - по сигнатуре. Ведь противостоять сканированию он уже не сможет. Подобная методика борьбы со зловредным кодом изестна давно: раньше пользовались загрузочными носителями с DOS, теперь применяют Linux с драйверами чтения/записи NTFS или модифицированную версию Windows XP. Так, например, WinXP PE "устанавливается" на виртуальный жесткий диск, создаваемый в оперативной памяти, и позволяет производить с исходной (установленной на жесткий диск и подвергающейся проверке) WinNT/2k/XP/2k3 любые действия [См. статью "Флэш - драйв" в КТ #630]. Проверять базовую ОС следует всеми средствами, какие только найдете (по скольку разные продукты обладают разной чувствительностью и возможностями поиска), и так часто, насколько это возможно.
Разумеется, следует помнить о ложно положительных срабатываниях: прежде чем решиться на удаление чего либо, следует все тщательно обдумать и создать резервную копию.
О непротивлении злу
Борьба с такими агрессивными в плане методов работы malware осложняется еще вот чем: руткиты, стелс вирусы и иже с ними могут преспокойно "плясать от ядра", вытворяя с ОС все, что угодно. Их создателям наплевать на возможные проблемы у пользователя. А вот разработчики антивирусных и прочих защитных приложений обычно не могут позволить себе такую роскошь в выборе средств [Хотя, между нами говоря, иногда позволяют]. Они дорожат своей репутацией, имеют службу поддержки и несут ответственность (несмотря на disclaimer’ы в лицензии) за свой продукт. Поэтому они вынуждены придерживаться стандартов и ограничиваться (подобно рядовым прикладным программистам) третьим кольцом защиты [Номер кольца определяет, что может делать программа, а какие инструкции выходят за рамки ее компетенции.Осуществляется этот механизм регулирования путем управления адресным пространством. Для каждого его сегмента устанавливается свой уровень привилегий. Чем выше номер кольца, тем меньше полномочий у программ, расположенных в нем]. Аналогия из жизни: если охраннику дать боевое оружие, он с гораздо большей вероятностью сможет остановить преступника. Однако вероятность причинения вреда законопослушным гражданам тоже возрастет.
Очевидно, что если такое положение дел кое как годится для предотвращения инфицирования (со многими оговорками), то для лечения уже зараженного (читай - подконтрольного malware) компьютера оно создает непреодолимые препятствия. С этим связана одна из типичных ошибок пользователя - целиком полагаться на защиту антивирусного монитора (резидентно проверяющего открываемые и запускаемые файлы). Дело в том, что AV монитор - это аналог фильтра грубой очистки. Он не может (да и не должен) выполнять проверку столь же тщательно, как антивирусный сканер. В противном случае он отъест львиную долю вычислительных ресурсов и сделает работу с ПК едва ли возможной. Нет речи о том, чтобы проверять файлы построчно (режим "избыточного" или "полного" сканирования). Зачастую пользователям предлагается отказаться от проверки архивов больше определенного размера или целиком либо вообще ограничиться тестированием исполняемых файлов и документов MS Office, как самого типичного рассадника заразы.
Кроме того: некий зловредный код может стартовать раньше, чем запустится антивирусный монитор, - со всеми вытекающими последствиями.
Откуда они берутся?
Обычная схема установки руткита в три шага (если его использует злоумышленник) принципиально не отличается от таковой в случае других malware и выглядит примерно так. На первом этапе пользоваелю предлагается установить нечто интересное. Затем это "нечто" доустанавливает руткит (например, под видом обновления). После чего руткит использует какую либо уязвимость в ОС или приложении (чаще всего - в Internet Explorer) для повышения своих привилегий до уровня системы.
Есть и более эффективные методики, сводящие к минимуму зависимость от действий компьютеровладельца. Использование эксплойт червей позволяет скрытно от юзера установить на его ПК любую программу - в том числе и руткит.
От них редко спасают файрволлы (поскольку эксплойт червь может работать как часть приложения, уже получившего разрешение на выход в Сеть. Например, браузера или медиа плейера).
Своевременная установка обновлений - мера необходимая, но недостаточная для защиты от такого метода доставки руткитов, поскольку о части новых уязвимостей становится известно за несколько дней (или даже недель!) до выпуска официальной "заплатки", устраняющей их. Другой изощренный способ внедрения работает по принципу бинарных зарядов [Здесь термин "бинарный" заимствован у военных токсикологов и не имеет отношения к ИТ]. Суть в том, что код руткита раз бивается на несколько частей, каждая из которых по отдельности не вызывает подозрений у антивирусной защиты. После этого тем или иным образом злоумышленник инициализирует сборку руткита непосредственно на компьютере жертвы.
Делается это, главным образом, для обхода антивирусных мониторов, установленных на корпоративном сервере. Поскольку методика сложна, ее реализация может сильно растянуться во времени (в случае, если каждая из частей доставляется своим путем), такие атаки редки и осуществляются целенаправленно.
PC’хологические аспекты
Говоря об угрозах вообще, должен обратить внимание читателей на следующий факт: возможности Интернета сейчас востребованы практически всеми программами вне зависимости от их назначения. Через него осуществляется регистрация и проверка обновлений. За очевидным удобством здесь стоит не менее очевидная угроза: трудность проверки взаимодействия программ с Интернетом, которая для рядового пользователя означает невозможность контроля сетевой активности своего компьютера. Кроме того, люди привыкают к мысли, что любая программа может работать в Сети, и в результате теряют бдительность. Даже если у них стоит грамотно настроенный файрволл, который заставляет весь софт честно спрашивать разрешение на подключение, под лавиной таких запросов пользователи часто сдаются и начинают соглашаться со всем подряд. Им уже не интересно, что и куда передается или откуда принимается. Лишь бы работало и не отвлекало. Затрудняют разумное регулирование поведения программ в Сети со стороны пользователя еще два момента: плохое владение английским (по прежнему далеко не весь софт может похвастаться грамотной русификацией) и весьма абстрактные представления об устройстве Интернета. Но эти проблемы решить труднее, чем обнаружить самый коварный руткит…
- Из журнала "Компьютерра"