Александр Кульков, генеральный директор компании "ИнфоОборона" В настоящее время организации периодически сталкиваются со злоумышленными действиями третьих лиц, в результате которых взламываются компьютеры сети. Но зачастую хакеры не ограничиваются одной атакой на компьютер — они могут установить постоянный контроль над его действиями, снять данные, хранящиеся в системе, или установить наблюдение за работой сети в целом. Для этого злоумышленники оставляют в системе так называемые лазейки (своего рода секретные пути для получения доступа), чтобы в любой момент времени иметь возможность для подключения к компьютеру-жертве. Чтобы лазейка не была обнаружена пользователем, хакер применяет специальную технологию для сокрытия работы вредоносного программного обеспечения или своего присутствия в системе — руткит (rootkit).
Работа руткита заключается в изменении функционирования модулей. Программы, работающие в системе, создаются для выполнения определенных действий. Процесс функционирования приложений заключается в вызове определенных функций операционной системы (например, выделение памяти, запрос списка процессов и т.п.). Руткит же изменяет работу этих программ путем подмены вызываемых функций и получаемого результата или вводимых параметров, из-за чего приложения начинают функционировать не так, как того ожидает пользователь.
Виды руткитов
Существуют руткиты, функционирующие в режиме пользователя и режиме ядра. Первый вид изменяет код загруженного в память компьютера приложения. Второй изменяет код ядра операционной системы, непосредственно загруженного в память машины. Особенностью первого вида является простота разработки, при этом такой руткит легко обнаружить. Главная характеристика второго типа руткитов — сложность в обнаружении, поскольку они функционируют на очень низком уровне операционной системы. В то же время такой руткит сложен и в разработке (хотя для опытного системного программиста это не составит большого труда).
Хороший низкоуровневый руткит невозможно обнаружить средствами операционной системы, такими как "Диспетчер задач", утилита просмотра открытых соединений Netstat, утилита просмотра и редактирования ключей реестра regedit и т.п. Поэтому необходимо прибегать к специализированным программам, предназначенным для выявления аномальной активности в системе.
Технологии руткитов
Примером использования технологии руткитов может являться сокрытие работы определенного вредоносного процесса в системе от штатных программ, перечисленных выше, предназначенных для просмотра списка запущенных в данный момент времени приложений. Иными словами, пользователь даже не будет подозревать, что на его компьютере функционирует приложение, которое, например, незаметно копирует конфиденциальную информацию или отслеживает нажатые клавиши на клавиатуре с целью съема паролей к Интернет-кошелькам, почтовым ящикам, icq и прочим программам. Такой руткит может быть разработан как для режима пользователя, так и для режима ядра. Рассмотрим второй вариант.
Как правило, для сокрытия процесса используется модуль ядра (драйвер, представляющий собой руткит), который модифицирует ряд функций в ядре операционной системы, предназначенных для получения информации о запущенных в данный момент приложениях. В результате пользователь получает неверную информацию о протекающих процессах без указания вредоносного приложения.
Поймай систему на "лжи"
Для обнаружения такой аномальной активности в системе необходимо поймать саму систему на "лжи". Что это значит? Для начала нам необходимо получить список процессов различными документированными и недокументированными способами (вызовами различных функций операционной системы) и затем сравнить их между собой. К такой технологии прибегают многие специализированные программы. В случае если списки различаются, это означает, что некоторый процесс (или процессы) скрыто протекает в системе. Дело в том, что руткит не может контролировать абсолютно все способы получения перечня запущенных приложений в системе (хотя теоретически такое, конечно, возможно, но практически трудноосуществимо). Поэтому его обнаружение становится возможным описанным способом.
В связи с этим для снижения вероятности попадания вредоносного программного обеспечения в систему или компьютер пользователя можно посоветовать ряд действий:
регулярно устанавливать критически важные обновления для операционной системы;
иметь установленный антивирус, желательно с механизмом проактивной защиты, базы вирусов которого регулярно обновляются (не менее 1 раза в день);
иметь установленный и грамотно настроенный межсетевой экран;
иметь несколько специализированных утилит для поиска аномальной активности в системе (кейлоггеров, руткитов и т.п.) и регулярно проверять с помощью данных программ свой компьютер;
отключать неиспользуемые в системе сервисы.
Опубликовано: Журнал "Information Security/ Информационная безопасность" #5, 2008