Руткит (Rootkit)

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

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

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

Проникая в систему Windows, например, руткит подменяет один из .dll файлов, хранящихся в файловой системе на свой.

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

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

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

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

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

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

  • Модификация кода функции

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

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

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

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

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

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

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

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

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

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

случае жертве даже не придется ничего скачивать. Также руткиты могут занестись хакером с внешнего носителя информации.

Анализ риска

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

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