Руткит
Руткит (от англ. rootkit, root — «корень», kit — «набор») — это набор программных средств (вредоносное ПО), предназначенный для скрытого внедрения в систему и маскировки присутствия злоумышленника или другого вредоносного кода. Основная функция руткита — обеспечение привилегированного доступа к операционной системе (обычно уровня администратора или ядра) и сокрытие собственных файлов, процессов, сетевых соединений и записей в реестре от стандартных средств мониторинга, антивирусов и пользователя.
История
Термин «руткит» возник в среде Unix-систем в начале 1990-х годов. Первоначально так назывались наборы утилит, которые заменяли стандартные системные команды (например, ps, ls, netstat, who) на модифицированные версии, не показывающие процессы и файлы злоумышленника. Эти ранние руткиты не скрывали своё присутствие на уровне ядра, а лишь маскировали активность на уровне пользовательских приложений.
С развитием операционных систем и средств защиты эволюционировали и руткиты. В середине 2000-х годов появились руткиты, работающие на уровне ядра (kernel-mode rootkits), которые внедрялись непосредственно в ядро ОС, перехватывая системные вызовы. Примером массового использования руткита стал скандал с защитой от копирования на компакт-дисках Sony BMG (2005 год), когда руткит XCP устанавливался на компьютеры пользователей без их ведома, скрывая свои файлы и создавая уязвимости для других вредоносных программ.
В 2010-х годах руткиты стали ещё более сложными, научившись внедряться в загрузчик (bootkits) и прошивки устройств (firmware rootkits), что позволяло им переживать переустановку операционной системы.
Классификация
Руткиты классифицируются по уровню внедрения в систему и по способу маскировки.
По уровню внедрения
- Пользовательские руткиты (user-mode rootkits). Работают на уровне приложений. Заменяют или перехватывают системные библиотеки (например, DLL в Windows) или утилиты командной строки. Наиболее просты в реализации, но и наиболее заметны для современных антивирусов.
- Руткиты уровня ядра (kernel-mode rootkits). Внедряются в ядро операционной системы, перехватывая системные вызовы (syscalls) или изменяя структуры данных ядра. Обладают максимальными привилегиями и могут скрывать практически любые объекты системы. Обнаружение таких руткитов требует специальных методов, например, сравнения списков процессов на уровне ядра и на уровне пользователя.
- Загрузочные руткиты (bootkits). Заражают главную загрузочную запись (MBR) или таблицу разделов GUID (GPT), а также загрузчик операционной системы (например, bootmgr в Windows). Загружаются до запуска ОС, что позволяет им обходить многие средства защиты и переживать переустановку системы.
- Руткиты прошивки (firmware rootkits). Внедряются в прошивку аппаратных компонентов: BIOS, UEFI, контроллеры жёстких дисков, сетевые карты, видеокарты. Наиболее сложны в создании и обнаружении, так как работают на уровне, недоступном для операционной системы. Примером является руткит LoJax, заражавший UEFI.
По способу маскировки
- Руткиты, заменяющие системные файлы. Классический подход, при котором легитимные системные утилиты заменяются на их вредоносные копии.
- Руткиты, перехватывающие системные вызовы. Используют технику «перехвата» (hooking) для изменения потока выполнения системных функций.
- Руткиты, модифицирующие структуры данных ядра. Изменяют внутренние таблицы ядра (например, таблицу дескрипторов объектов) для сокрытия своих объектов.
- Руткиты, использующие виртуализацию (Virtual Machine-Based Rootkits, VMBRs). Самый продвинутый тип, который создаёт гипервизор и запускает операционную систему в виртуальной машине. Гипервизор контролирует все ресурсы ОС, оставаясь незаметным для неё. Пример — руткит SubVirt, разработанный исследователями.
Устройство и принцип работы
Основной принцип работы руткита заключается в нарушении доверия между компонентами операционной системы. ОС доверяет ядру, а ядро — драйверам и системным вызовам. Руткит внедряется в эту цепочку доверия и изменяет данные, возвращаемые системой.
Например, когда пользователь открывает диспетчер задач, система запрашивает у ядра список процессов. Ядро, в свою очередь, перебирает структуры данных, описывающие процессы. Если руткит уровня ядра внедрён, он перехватывает этот запрос и удаляет из списка свои процессы. В результате пользователь не видит вредоносную программу в диспетчере задач, хотя она работает.
Для заражения руткиты используют различные векторы:
- Уязвимости в операционной системе или драйверах.
- Социальная инженерия (пользователь сам запускает вредоносный файл).
- Внедрение через другое вредоносное ПО (трояны, черви).
- Физический доступ к устройству.
Применение
Руткиты используются в различных целях, как злонамеренных, так и (в редких случаях) легитимных.
Злонамеренное применение
- Скрытие вредоносной активности. Руткиты являются компонентом многих сложных вредоносных программ (банковских троянов, программ-шпионов, бэкдоров), позволяя им оставаться незамеченными как можно дольше.
- Кража данных. Руткиты могут перехватывать нажатия клавиш (кейлоггеры), снимки экрана, сетевой трафик, пароли и криптовалютные кошельки.
- Создание ботнетов. Заражённые компьютеры могут быть объединены в сеть (ботнет) для проведения DDoS-атак, рассылки спама или майнинга криптовалют.
- Шпионаж и кибервойна. Государственные хакерские группы (например, APT-группировки) активно используют руткиты для долгосрочного скрытого присутствия в системах критической инфраструктуры, правительственных сетях и оборонных предприятиях.
Легитимное применение
- Защита от копирования (DRM). Некоторые производители ПО (как в случае с Sony BMG) использовали руткиты для защиты от нелегального копирования, что вызвало широкую критику и юридические последствия.
- Системы безопасности. Некоторые антивирусы и программы для родительского контроля могут использовать технологии, схожие с руткитами, для мониторинга системы на низком уровне.
- Судебная экспертиза. Правоохранительные органы могут использовать руткиты для скрытого сбора доказательств на компьютере подозреваемого.
Обнаружение и защита
Обнаружение руткитов — сложная задача, так как они активно противодействуют попыткам их найти. Традиционные антивирусы, работающие на уровне пользователя, часто неэффективны против руткитов уровня ядра или прошивки.
Методы обнаружения
- Поведенческий анализ. Антивирусные программы отслеживают подозрительное поведение: попытки скрыть процессы, изменение системных файлов, внедрение в ядро.
- Сравнение уровней (Cross-View Detection). Сравнивается список объектов (файлов, процессов, ключей реестра), полученный на высоком уровне (через API) и на низком уровне (через прямое чтение структур ядра). Расхождение указывает на наличие руткита.
- Сканирование на наличие перехватов (Hook Detection). Проверка целостности системных таблиц (например, SSDT — System Service Descriptor Table) и кода ядра на предмет несанкционированных изменений.
- Загрузка с доверенного носителя. Загрузка компьютера с Live CD или USB, содержащего чистую ОС и антивирус, позволяет обойти руткит, работающий на заражённом жёстком диске.
- Анализ дампа памяти. Специалисты по кибербезопасности анализируют дамп оперативной памяти заражённой системы на предмет аномалий.
Меры защиты
- Регулярное обновление операционной системы и программного обеспечения.
- Использование современных антивирусных решений с функциями защиты от руткитов (Rootkit Scanner).
- Включение Secure Boot (Безопасная загрузка) в UEFI для защиты от буткитов.
- Ограничение прав пользователей (не работа с правами администратора без необходимости).
- Осторожность при загрузке и запуске файлов из ненадёжных источников.
- Использование многофакторной аутентификации.
Известные примеры
- Sony BMG XCP (2005). Руткит, устанавливавшийся вместе с аудиодисками для защиты от копирования. Вызвал массовый скандал из-за нарушения приватности и создания уязвимостей.
- Stuxnet (2010). Сложный компьютерный червь, атаковавший иранские центрифуги по обогащению урана. Использовал руткиты для скрытия своего присутствия и саботажа промышленного оборудования.
- TDSS (TDL-4, Alureon). Один из самых известных руткитов уровня ядра для Windows, создавший мощный ботнет. Отличался высокой устойчивостью к удалению.
- LoJax (2018). Первый известный руткит, заражающий UEFI. Использовался группировкой Sednit (APT28) для атак на правительственные и военные организации в Европе.
Критика и этические аспекты
Использование руткитов в легитимных целях (например, в DRM) вызывает серьёзную критику со стороны сообщества специалистов по информационной безопасности. Установка любого ПО, скрывающего своё присутствие и манипулирующего работой системы без ведома пользователя, нарушает принцип прозрачности и может быть расценена как нарушение законодательства о защите персональных данных и компьютерной безопасности. В России подобные действия могут быть квалифицированы по ст. 272 УК РФ («Неправомерный доступ к компьютерной информации»).
Источники
- Хониг, Э. (2013). Rootkits: Subverting the Windows Kernel. Addison-Wesley Professional.
- Блау, М. (2005). «Sony BMG под огнём критики за использование руткита». PC World.
- Лаборатория Касперского. (2018). «LoJax: первый UEFI-руткит, используемый в реальных атаках».
- Microsoft. (2020). Защита от руткитов. Документация по безопасности Windows.
- Национальный институт стандартов и технологий (NIST). (2014). Guide to Rootkit Detection and Removal.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →