Хотя в прошлом и считалось, что вирусы разрабатываются исключительно для работы с ОС Windows, взломщики, специализирующиеся на свободных системах, опровергли это утверждение. Руткит, работающий в системе на основе ядра Linux, делает ее уязвимой к атакам, проводящимся вручную или программно, а для его нейтрализации должны применяться сложные методы диагностики и очистки системы от вредоносного ПО. Системы на основе ядра Linux стали де-факто стандартом в дата-центрах, поэтому администраторам этих систем следует расширять свои познания в области проблем, связанных с руткитами, и методов их разрешения для защиты инфраструктуры. Главной целью этой статьи является информирование системных администраторов и членов команд IT-менеджмента о потенциальной угрозе, а сама статья наверняка окажется полезной для них.
В современном мире IT-технологии используются практически повсеместно для автоматизации повторяющихся задач, начиная с покупки товаров в Интернет и заканчивая снятием денежных средств со счета, упрощая тем самым нашу жизнь. Наряду с достоинствами этих систем, они также подвержены различным проблемам. Практически каждый пользователь персонального компьютера знает о вреде вирусов. Даже мало знакомые с принципами работы компьютеров люди знают о том, что их данные подвержены опасности повреждения, удаления или похищения, поэтому необходимо создавать резервные копии.
Хотя и существует большое количество антивирусных программ, существует другая, более опасная по своей природе категория вредоносного ПО, называемая руткитами. Это ПО создается талантливейшими программистами, к сожалению, со злыми намерениями и доставляет массу проблем пользователям.
Вредоносное ПО может работать как приложение в пользовательском пространстве или как часть операционной системы. Руткиты чаще всего относятся ко второй категории, что дает им больше возможностей, делает их более опасными и максимально затрудняет их поиск и нейтрализацию. Неизвестная личность, получившая контроль над вашей системой, работающая с ней чаще всего одновременно с вами, может причинить ущерб и получить доступ к вашей личной информации. Программы для записи событий клавиатуры позволяют похитить пароли, номера кредитных карт, персональные данные, данные о финансовых операциях из таблиц, конфиденциальные данные, относящиеся к деятельности компании, и.т.д.
Руткиты являются небольшими наборами инструментов, утилит и сценариев. Главной целью внедрения их в целевую систему является получение прав администратора, поэтому система может либо использоваться удаленно для сбора секретных данных, либо использоваться для проведения атак в отношении других уязвимых систем, внедрения руткита и получения доступа к ним.
Обычно руткит содержит в своем составе набор сетевых снифферов, инструментов для исследования системного журнала, сценариев для чистки системного журнала, системных утилит для определения IP-адресов, аналога утилиты netstat, утилит для остановки выполняющихся процессов, сценариев для сокрытия кода и своей сжатой копии для репликации.
Чем руткиты отличаются от вирусов
Давайте кратко рассмотрим отличительные признаки обоих.
Вирус
Руткит
Чаще всего выполняется как пользовательский процесс
Чаще всего выполняется как часть ОС/ядра
Обычно получает доступ к системе с правами пользователя
Получает доступ к системе с правами администратора/пользователя root
Не открывает путей для удаленного администрирования
Открывает пути для удаленного администрирования - viz., порт, IP, и.т.д.
Не предоставляет возможностей для удаленного доступа
Предоставляет возможность удаленного доступа для взломщика
Довольно просто обнаружить и удалить из системы
Очень сложно обнаружить и удалить из системы
Предназначен для нарушения работы системы и повреждения данных
Предназначен для похищения конфиденциальных данных
Как видно из таблицы, хотя некоторые черты вирусов/троянов и руткитов и схожи (в общем случае и те и другие могут либо вызывать потерю данных, либо захватывать и собирать конфиденциальные данные, такие, как имена пользователей, пароли, адреса электронной почты, и.т.д.), существуют и принципиальные различия между ними. Хотя вирус обычно и работает в "невидимом режиме", скрывая свое присутствие путем инфицирования исполняемых и системных файлов, он все равно работает как приложение - поэтому антивирусные программы способны обнаружить и удалить его. Троян, являющийся усовершенствованным вирусом, скрывается в системе более искусным образом.
Руткит, с другой стороны, заменяет собой часть операционной системы для сокрытия и получения максимально возможного контроля над системой. Поэтому он имеет возможность проводить мониторинг процессов, происходящих в системе, наряду с выполнением любых действий. Он также может использоваться для внедрения других руткитов и вирусов в систему. Руткиты позволяют удаленно управлять компьютером, обычно также используя его в качестве распространителя коммерческого спама.
Инфицирование/установка
Руткиты используют методы, аналогичные используемым вирусами для проникновения в систему; однако, поскольку руткитам необходимы привилегии уровня ОС, методы их внедрения незначительно отличаются. Обычно взломщики используют следующие пути для проникновения в систему:
Если взломщик имеет физический доступ к системе, он может попытаться подобрать несложный пароль. Если есть возможность загрузить систему со съемного носителя, принадлежащего взломщику (CD, USB), он может попробовать применить различные техники для получения пароля пользователя root из системы, установленной на жестком диске.
Взломщик может удаленно определить уязвимости ОС и сетевых приложений, не обновленных вовремя, после чего атаковать их.
Взломщик может использовать веб-страницу со встроенным сценарием для проникновения в систему через браузер.
Многие приложения, шпионящие за пользователем (spyware), могут использоваться в качестве надежного средства доставки руткитов в систему.
Зачастую руткит упакован в виде файла самораспаковывающегося архива, данные из которого извлекаются сразу же после попадания в систему. Часто небольшой набор программ для установки, следящих за работой руткита, получающих права администратора и скрывающих свое присутствие в системе, находится также в сжатом виде.
Некоторые особо сложные руткиты имеют возможность определения антивирусного и антишпионского программного обеспечения и изменения принципа его работы вместе с модификацией вывода для сокрытия своего присутствия в системе. Например, некоторые руткиты копируют набор своих инструментов в корень файловой системы, но их невозможно обнаружить с помощью вывода списка файлов, так как руткит изменяет поведение соответствующих системных команд.
Так как взломщики постоянно пытаются оптимизировать размер кода руткитов, для их установки и активации требуется очень малый промежуток времени. Руткиты предназначены для максимального распространения, поэтому практически все они содержат свою копию. В процессе работы они используют все возможные механизмы для исследования локальной сети и поиска других уязвимых систем.
Если при проектировании локальной сети аспект безопасности недостаточно проработан, получения руткитом административных привилегий на одном из узлов вполне достаточно для его распространения на другие системы в сети. Современные руткиты способны определять наличие соединения с интернетом, получать последнюю версию руткита и копировать ее на все инфицированные машины, а затем пытаться найти в Интернет другие уязвимые или недостаточно хорошо настроенные системы.
Обнаружение
Как говорилось ранее, обнаружение руткита является действительно сложной задачей, которая требует от администраторов дополнительных действий по сравнению с аналогичной задачей для вирусов и троянов. Хотя некоторые руткиты и блокируются при помощи новейших антивирусных инструментов, большинство руткитов неуязвимы для них. Так как руткит становится частью операционной системы, кажущиеся элементарными методы загрузки системы с диска или USB-носителя для восстановления системы очень полезны для загрузки свежей неинфицированной версии операционной системы и использования инструментов для обнаружения руткитов без противодействия с их стороны. Кроме того, многие инструменты для обнаружения руткитов только определяют их наличие, но не могут удалить их, поэтому необходимо ручное вмешательство для очистки системы.
Инструменты для обнаружения руткитов должны применять новые методы вместо простых проверок файлов или процессов, поскольку руткит в процессе работы может повлиять на эти устаревшие методы и алгоритмы. Лучшим вариантом является снятие снимка различных аспектов работы системы и сравнение его со снимком, снятым программой сразу после установки системы.
Новые инструменты используют интеллектуальные алгоритмы для обнаружения изменений в состоянии системы, поэтому не требуют исследования системы в начальном состоянии. Существуют различные алгоритмы обнаружения руткитов, такие, как метод на основе сигнатур, использующийся при обнаружении вирусов, или метод на основе установления неприкосновенности, при котором файлы, процессы и модули ядра проверяются на бинарную неизменность. Существует другой эффективный метод, при котором при помощи программы снимается дамп памяти, исследуемый впоследствии в поисках аномалий, сигнатур или изменений, прямо или косвенно связанных с функционированием руткитов.
Существует множество коммерческих и свободных программ для обнаружения руткитов; давайте рассмотрим несколько популярных инструментов.
Компании McAfee и Symantec предлагают продукты, позволяющие защититься от внедрения руткитов и обнаружить некоторые их них. Как бы то ни было, для обнаружения руткитов требуются отдельные специализированные инструменты.
В мире свободных программ известным инструментом, превосходящим большинство других, является chkrootkit. Он позволяет проводить подробные бинарные проверки, проверки модификаций файлов и исследования модулей ядра. Программа отлично работает в широком спектре дистрибутивов Linux и является необходимым инструментом в наборе администратора.
Аналогично, Tripwire является важным инструментом с открытым исходным кодом, который позволяет проводить исчерпывающие проверки MD5-хэшей и обнаруживать аномалии, такие, как открытые соединения для удаленного управления и локальные эксплойты.
Rootkit Hunter является еще одним известным инструментом, являющимся продуманным сценарием, способным обнаружить множество руткитов. Он также может обнаружить некорректные права доступа к файлам и модулям ядра, при этом предоставляя возможность проведения ежедневных проверок. При появлении нового руткита опытный системный администратор может изучить его и разработать сценарий для его обнаружения.
Важно знать о том, что создатели вредоносного ПО обычно тоже изучают эти механизмы и вносят необходимые модификации в новые версии своих руткитов для предотвращения их обнаружения с помощью специализированных инструментов.
Примеры руткитов и причиняемый ими вред
Аналогично вирусам, к сожалению, существует множество руткитов и для Windows и для коммерческих дистрибутивов Red Hat Enterprise Linux, а также и для других свободно распространяемых дистрибутивов Linux. Так как ядро долгое время не претерпевало кардинальных изменений, взломщикам обычно не составляет большого труда разработать руткиты, которые будут распространяться.
Несмотря на то, что существуют сотни опасных для свободных систем руткитов, рассмотрим только некоторые наиболее часто встречающиеся экземпляры.
Начнем с упоминания руткита LRK, так как это один из самых старых и до сих пор активных руткитов (впервые он был обнаружен в 1997 году, но до сих пор встречается на уязвимых системах). Он имеет множество версий и известен тем, что подменяет известные исполняемые файлы, такие, как netstat, linsniffer, inetd, ifconfig, и.т.д.
Knark является руткитом, который очень сложно обнаружить, так как он полностью располагается в ядре. Это очень опасно, так как во время работы он скрывает открытые порты, файлы и процессы от администратора.
Beastkit является относительно новым вариантом руткита, разработанным для дистрибутивов Red Hat, а его опасная модификация с названием Illogic известна тем, что процесс, работающий на порту 901, позволяет взломщику при помощи telnet делать с системой практически все то, что способен делать администратор, имеющий физический доступ к системе.
Стоит упомянуть о руткитах, причинивших значительный ущерб Linux-системам: Sneakin, Kitko, Ajakit и Devil. Все эти руткиты используют сложные техники, такие, как определение ОС и модификация структур ядра в процессе работы, проброс портов для декодирования данных, запись событий от клавиатуры для похищения паролей и незаметная отправка их на адрес электронной почты взломщика, оптимизация действий для сокращения использования ресурсов системы, и.т.д. Эти руткиты также известны высокой скоростью распространения и превращением инфицированных машин в зомби для продолжения распространения.
Как отмечалось ранее, руткиты также дают возможность доступа к системе путем открытия портов, создания процессов уровня ядра, что позволяет злоумышленнику в полной мере удаленно контролировать систему, даже через Интернет.
Существует несколько дружественно настроенных руткитов, которые сотрудничают друг с другом. Если руткит во время внедрения в систему обнаруживает уже присутствующий в ней руткит, он обновляет его для улучшения работы. Известно несколько руткитов, которые работают как шлюзы для доставки вирусов и троянов в локальную сеть; сначала в систему внедряется руткит, резервирует место, устанавливает привилегии пользователя, получает контроль над файловой системой, отключает работающие антивирусные программы, открывает доступ для отправки вирусов и переходит в невидимый режим работы.
Новое поколение руткитов известно действиями по установке поддельных SSL-сертификатов и попытками расшифровки HTTP-трафика для получения информации о кредитных картах, которая обычно передается по зашифрованному каналу. Существуют руткиты, компрометирующие системы путем проведения с помощью них атак перехвата с участием человека в отношении других систем, что затрудняет расследование по поиску реального взломщика.
Разработка постоянно совершенствующейся системы безопасности инфраструктуры необходима для остановки распространения и предотвращения ущерба, причиняемого руткитами. Современные системы обнаружения проникновений (IDS) могут эффективно останавливать распространение руткитов на подходе к сетям. Старший IT-менеджмент должен быть проинформирован об этой серьезной опасности и предпринимать решительные шаги по защите подконтрольных сетей.