Обнаружение руткитов в Linux: Инструменты и методы

10 мин чтения - 16 мая 2026 г.

hero section cover
Содержание
  • Обнаружение руткитов в Linux: Инструменты и методы для обеспечения безопасности серверов
  • Типы руткитов для Linux
  • Сканирование с помощью chkrootkit и rkhunter
  • Расширенное обнаружение: Мониторинг поведения и проверка целостности
  • Защита сервера от руткитов
  • Заключение
Поделиться

Как обнаружить и предотвратить руткиты Linux с помощью chkrootkit, rkhunter, Auditd, AIDE и поведенческого мониторинга на ваших серверах.

Обнаружение руткитов в Linux: Инструменты и методы для обеспечения безопасности серверов

Руткиты предоставляют злоумышленникам постоянный, скрытый доступ к системам Linux. Они манипулируют операциями ядра, скрывают файлы и процессы и обходят стандартные средства защиты. Некоторые из них остаются незамеченными годами. Для их обнаружения требуется многоуровневый подход, потому что ни один инструмент не улавливает все.

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


Типы руткитов для Linux

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

Руткиты пользовательского режима работают на уровне приложений (кольцо 3). Они перехватывают динамическую компоновку с помощью LD_PRELOAD для внедрения вредоносных библиотек, которые перехватывают стандартные функции библиотеки C, такие как readdir или fopen, скрывая файлы и процессы от пользовательских инструментов.

Руткиты в режиме ядра работают в кольце 0, загружаясь как загружаемые модули ядра (Loadable Kernel Modules, LKMs). Они перехватывают системные вызовы, манипулируют памятью ядра и скрывают свое присутствие. Поскольку они привязаны к определенным версиям ядра, неправильно настроенный руткит может вызвать панику ядра, что, по иронии судьбы, приведет к его раскрытию.

руткиты на основе eBPF используют подсистему Extended Berkeley Packet Filter для работы в пространстве ядра без загрузки традиционного модуля. Они прикрепляются к крючкам системных вызовов, точкам трассировки или событиям LSM. Стандартные LKM-сканеры их не видят. Boopkit - известный пример концепции, создающей скрытый канал C2 с помощью этого подхода.

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

Тип руткита Уровень привилегий Метод перехвата Сложность обнаружения
Пользовательский режим Кольцо 3 (Пользователь) LD_PRELOAD, перехват библиотеки Умеренный
Режим ядра Кольцо 0 (ядро) Таблица системных вызовов, LKM, встроенный хукинг Высокий
на основе eBPF Кольцо 0 (ядро) вложение программы eBPF Очень высокая
на основе io_uring Пользователь/ядро Асинхронный пакетный ввод/вывод Очень высокий

Сканирование с помощью chkrootkit и rkhunter

Два инструмента составляют основу для обнаружения руткитов на серверах Linux: chkrootkit для быстрого сканирования и rkhunter для более глубокой проверки.

chkrootkit

chkrootkit - это сценарий оболочки, который проверяет критические системные двоичные файлы(ls, ps, netstat, sshd, ifconfig) на наличие признаков взлома. Он также обнаруживает неразборчивые сетевые интерфейсы и удаленные журналы. Начиная с версии 0.59 (январь 2026 г.), он может выявить более 75 руткитов, червей и LKM, включая такие новые угрозы, как Linux BPFDoor, Syslogk и XZ Backdoor.

Запускайте ее после любой подозрительной активности. Обращайте внимание на предупреждения от компонента ifpromisc и оповещения об удаленных файлах lastlog или wtmp.

rkhunter

rkhunter идет дальше. Он сравнивает SHA-1-хэши системных двоичных файлов с известными значениями, следит за разрешениями файлов и скрытыми файлами, проверяет конфигурации запуска, а также выполняет анализ ядра и сети.

Настройте его правильно с самого начала:

# Establish a baseline after a clean install or update
rkhunter --propupd
 
# Update rootkit definitions
rkhunter --update
 
# Run a full scan (use --novl on production servers to reduce I/O)
rkhunter --check --enable all

Для автоматического ежедневного сканирования установите CRON_DAILY_RUN="true" в файле /etc/rkhunter.conf и используйте параметры --skip-keypress и --report-warnings-only для чистого вывода. Просмотрите журналы в /var/log/rkhunter.log и внесите в белый список подтвержденные ложные срабатывания.

Обнаружение руткитов LKM

Руткиты LKM особенно опасны, поскольку они работают как расширения ядра, перехватывая системные вызовы и скрывая процессы на уровне ядра. Стандартные инструменты вроде lsmod их не видят, но есть способы их обнаружить.

Сравните вывод lsmod со списком /sys/module/. Проверьте системные журналы на наличие подозрительных сообщений ядра:

# Look for out-of-tree module warnings
sudo dmesg | grep "loading out-of-tree module taints kernel"
 
# Check for module verification failures
grep "module verification failed" /var/log/syslog
 
# Run chkrootkit's LKM-specific check
sudo chkrootkit lkm

Даже руткиты, которые скрываются от lsmod и /proc/modules (например, Diamorphine), все равно можно найти, проверив /sys/module/diamorphine/coresize или просмотрев предупреждения syslog.

Расширенное обнаружение: Мониторинг поведения и проверка целостности

У статических сканеров есть фундаментальная слабость. В эксперименте 2026 года добавление одного нулевого байта в двоичный файл руткита - изменение, не влияющее на функциональность, - резко снизило количество обнаружений. Обнаружение Diamorphine упало с 33/66 до 8/64 только за счет удаления таблиц символов. Полагаться только на сигнатуры недостаточно.

Анализ поведения

Вместо того чтобы спрашивать "соответствует ли этот файл известному руткиту?", анализ поведения спрашивает "делает ли этот процесс что-то необычное?" Отслеживайте эти сигналы:

  • Используйте Auditd для наблюдения за системными вызовами init_module() и finit_module(), которые загружают модули ядра независимо от метода.
  • Отслеживайте вызовы kill() с сигналами выше 31, которые могут указывать на скрытую связь с руткитом.
  • Проверьте /proc/sys/kernel/tainted на предмет несанкционированной активности модулей ядра.
  • Следите за неожиданными файлами .so в /tmp или /dev/shm.
  • Отслеживайте активность eBPF, особенно вызовы bpf_probe_write_user. Такие инструменты, как BCC, могут отслеживать операции io_uring через такие точки трассировки, как sys_enter_io_uring_enter.

Для руткитов eBPF и io_uring инструменты мониторинга времени выполнения, такие как Tetragon, Falco и Tracee, могут наблюдать за активностью в ядре в режиме реального времени.

Мониторинг целостности файлов

AIDE (Advanced Intrusion Detection Environment) создает базовую линию доверенных системных файлов и проверяет их на наличие изменений. Инициализируйте ее с помощью aide --init, а затем запланируйте aide --check через cron. Она отслеживает контрольные суммы, разрешения, права собственности и временные метки таких важных двоичных файлов, как /bin/login и /usr/bin/sshd.

Для проверки на уровне пакетов можно использовать debsums (Debian/Ubuntu) или rpm -Va (RHEL/CentOS) для подтверждения целостности системных файлов. Для получения наиболее надежных результатов загрузитесь с надежного загрузочного носителя и проверьте файловую систему в автономном режиме, поскольку руткиты могут подделать отчетность запущенного ядра.

Также следите за механизмами сохранения. Руткиты часто изменяют файл /etc/ld.so.preload, чтобы внедрить общие объекты, или изменяют файлы .bashrc и .profile. Легитимные изменения в этих файлах происходят редко, поэтому предупреждения здесь имеют высокое соотношение сигнал/шум.

Автоматизированный мониторинг с помощью Auditd

Добавьте эти правила в /etc/audit/rules.d/rootkit.rules для обнаружения подозрительной активности ядра в режиме реального времени:

# Detect unauthorized kernel module loading
-a always,exit -F arch=b64 -S finit_module -S init_module
 
# Catch unusual high-range kill signals
-a always,exit -F arch=b64 -S kill -F a1>=32

Объедините их с автоматическими обновлениями rkhunter. Установите UPDATE_MIRRORS=1 и MIRRORS_MODE=0 в конфигурации и запускайте rkhunter --propupd после легитимных обновлений системы, чтобы обновить базовую линию.

Защита сервера от руткитов

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

Постоянно обновляйте ядро и пакеты. Злоумышленники используют непропатченные уязвимости для повышения привилегий и развертывания руткитов на основе LKM или eBPF. После обновления обновляйте базовые линии обнаружения с помощью rkhunter --propupd.

Обеспечьте соблюдение наименьших привилегий. Не давайте пользователям или процессам больше доступа, чем им нужно. Используйте SELinux или AppArmor для обязательного контроля доступа, который блокирует несанкционированные действия, даже если процесс скомпрометирован.

Отключите загрузку модулей ядра после загрузки. На выделенных серверах вы можете полностью предотвратить руткиты LKM, заблокировав загрузку модулей после запуска системы. На виртуальном хостинге это невозможно, что является одной из причин, по которой выделенные или VPS-среды обеспечивают более высокий уровень безопасности.

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

Регулярно проводите аудит. Такие инструменты, как Lynis, позволяют выявить ошибки в разрешениях и неправильную конфигурацию до того, как ими воспользуются злоумышленники.

Заключение

Руткиты созданы для того, чтобы прятаться у всех на виду. К моменту появления симптомов система может быть уже скомпрометирована и не подлежит восстановлению. Ни один сканер не улавливает все, а базовое обнаружение на основе сигнатур легко обойти.

Практичная защита включает в себя несколько уровней:

  • Регулярное сканирование с помощью chkrootkit и rkhunter на предмет известных угроз
  • Правила Auditd и мониторинг поведения для выявления подозрительной активности ядра
  • Мониторинг целостности файлов с помощью AIDE для выявления несанкционированных изменений
  • Инструменты времени выполнения, такие как Tetragon или Falco, для выявления угроз eBPF и io_uring
  • Усиленный контроль доступа, исправления и сегментация сети для уменьшения поверхности атаки

Автоматизируйте все, что можно, поддерживайте базовые линии в актуальном состоянии и начинайте с чистой установки ОС, которой вы доверяете.

FDC Servers предлагает выделенный и VPS-хостинг с полным root-доступом и настраиваемыми конфигурациями ядра. Изучите варианты выделенных серверов для создания защищенной среды Linux.

background image
Ваш сервер сдерживает ваш рост?

Устали от медленного развертывания или ограничений пропускной способности? FDC Servers предлагает мгновенную выделенную мощность, глобальный охват и гибкие планы, рассчитанные на любой масштаб.

Обновление сейчас

Блог

События этой недели

Другие статьи
Контрольный список по укреплению серверов Linux

Контрольный список по укреплению серверов Linux

Пошаговый контрольный список для защиты сервера Linux. Охватывает SSH, брандмауэры, исправления, разрешения на файлы, SELinux/AppArmor и ведение журнала аудита

15 мин чтения - 8 мая 2026 г.

самоучитель iperf3: Тест скорости сети в Linux и Windows

10 мин чтения - 7 мая 2026 г.

Другие статьи
background image

У вас есть вопросы или вам нужно индивидуальное решение?

icon

Гибкие варианты

icon

Глобальный охват

icon

Мгновенное развертывание

icon

Гибкие варианты

icon

Глобальный охват

icon

Мгновенное развертывание