Руткиты (Rootkits)

Руткит (rootkit) — набор утилит для скрытия следов пребывания киберпреступников на зараженной машине, активности вредоносных программ и нежелательных либо потенциально опасных приложений: снифферов, кейлоггеров, средств удаленного администрирования и т.д.

Многие руткиты усилены бекдорами, которые позволяют взломщику устанавливать в систему новые программы и выполнять прочие разнообразные манипуляции. Заразив множество компьютеров руткитами, злоумышленник может проводить с них спам- или DDoS-атаки.

Руткиты (Rootkits)

Хакер устанавливает руткит в систему после получения привилегий администратора. Руткит (rootkit) может маскировать вредоносные программы под стандартные системные утилиты, собирать информацию о системе и управлять процессами в ней.

Способы внедрения и функционирования руткита зависят от целевой платформы. Например, проникая в систему Windows, руткит может подменить одну из DLL, хранящихся в файловой системе, своей библиотекой.

Классификация руткитов

По типу привилегий руткиты делятся на два вида: пользовательский (выполняет действия от имени учетной записи пользователя) и работающий на уровне ядра. Принцип работы руткитов тоже можно разделить на две категории: изменяющие алгоритмы системных функций и изменяющие системные структуры данных.

В операционных системах Windows руткиты могут работать следующими способами:

1. Захват таблиц вызовов

Такой руткит (rootkit) способен действовать как на уровне пользователя, так и на уровне ядра. Изменяя таблицу, он перенаправляет вызовы системных функций на нужные ему адреса — например, на те, по которым находятся функции троянской программы. В результате перехваченная процедура может обойти антивирус (путем блокировки вызовов от него) или заменить исходную функцию.

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

2. Модификация кода функции

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

Перехватчик работает по следующему алгоритму:

  1. Выполняет действия, которые задумал злоумышленник.
  2. Восстанавливает первые байты перехваченной функции.
  3. Анализирует выходные данные функции.
  4. Возвращает управление функцией системе.

Также для перехвата функции можно заменить ее первые байты операцией jmp, которая передает управление руткиту. Однако такую операцию легко разоблачить, если проверять первые байты вызываемых функций на ее наличие, поэтому большинство киберпреступников «затирает» несколько байт перед операцией jmp бессмысленными операциями вроде mov a, b.

Обнаружение руткита

Для UNIX-подобных операционных систем руткиты могут реализовываться следующими способами:

  1. Заменой системных утилит.
  2. В виде модуля ядра.
  3. С помощью патчинга VFS.
  4. Перехватом таблиц системных вызовов.
  5. Изменением физической памяти ядра.

 

Объект воздействия

Установка руткита — первое, что делает взломщик, когда получает права администратора в системе. Кроме выполнения кода, руткиты могут добавлять в систему свои, «невидимые» службы и драйверы, прятать любые директории и файлы. Основное предназначение руткита — скрытное нахождение в операционной системе, и он с ним прекрасно справляется. Руткиты могут использоваться правоохранительными органами для сбора сведений о злоумышленнике, доступа к его ПК и к конфиденциальной информации, предположительно содержащей улики. Без специального программного обеспечения найти руткиты в системе почти невозможно. Это — еще одно их преимущество.

Источник угрозы

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

Анализ риска

Многие действия руткита в системе можно обнаружить. Так, подмена системных утилит легко выявляется средствами вроде SELinux. Также существуют специализированные программы-антируткиты, которые имеют усовершенствованные методы обнаружения и удаления таких вредоносных объектов из системы. Ряд антивирусов для рабочих станций имеет в своем составе полноценный антируткит-модуль.

Руткитом может быть заражен и сервер крупной компании, и частный компьютер. Многие руткиты имеют возможности, сопоставимые с функциональностью средств удаленного администрирования (RAT). Сейчас в свободном доступе есть программы-конструкторы, с помощью которых даже неопытный хулиган может «построить» свой руткит и заразить им информационную систему или чей-то компьютер. Уязвимости в браузерах позволяют запустить процесс внедрения руткита на компьютере жертвы, даже если она не скачивала никаких файлов, а просто зашла на зараженный сайт.