Виявлення руткітів для Linux: Інструменти та методи

10 хв читання - 16 травня 2026 р.

hero section cover
Зміст
  • Виявлення руткітів у Linux: інструменти та методи забезпечення безпеки серверів
  • Типи руткітів для Linux
  • Сканування за допомогою chkrootkit та rkhunter
  • Розширене виявлення: моніторинг поведінки та перевірка цілісності
  • Захист вашого сервера від руткітів
  • Висновок
Поділитися

Як виявляти та запобігати появі руткітів Linux за допомогою chkrootkit, rkhunter, Auditd, AIDE та поведінкового моніторингу на ваших серверах.

Виявлення руткітів у Linux: інструменти та методи забезпечення безпеки серверів

Руткіти надають зловмисникам постійний прихований доступ до систем Linux. Вони маніпулюють операціями ядра, приховують файли та процеси і обходять стандартні засоби безпеки. Деякі з них залишаються невиявленими роками. Для їх виявлення потрібен багаторівневий підхід, оскільки жоден окремий інструмент не може виявити все.

У цій публікації розглядаються основні типи руткітів для Linux, способи їх сканування та просунуті методи моніторингу, які виявляють те, що пропускають базові сканери.


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

Руткіти працюють на різних рівнях привілеїв, і чим глибше вони розташовані, тим важче їх знайти.

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

Руткіти режиму ядра працюють на Ring 0, завантажуючись як завантажувані модулі ядра (LKM). Вони перехоплюють системні виклики, маніпулюють пам'яттю ядра та приховують свою присутність. Оскільки вони прив'язані до конкретних версій ядра, неправильно налаштований руткіт може спричинити паніку ядра, що, як не дивно, викриває його.

Руткіти на базі eBPF використовують підсистему Extended Berkeley Packet Filter для роботи в просторі ядра без завантаження традиційного модуля. Вони приєднуються до хуків системних викликів, точок трасування або подій LSM. Стандартні сканери LKM їх не бачать. Boopkit — це відомий концептуальний доказ, який створює прихований канал C2, використовуючи цей підхід.

Руткіти на основі io_uring — це найновіший варіант. Вони використовують io_uring асинхронний інтерфейс вводу-виводу для пакетних операцій, генеруючи менше помітних подій системних викликів. RingReaper, експериментальний руткіт, продемонстрував, як це може непомітно замінити виклики на кшталт read, write, та connect , ухиляючись від інструментів EDR.

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

Сканування за допомогою chkrootkit та rkhunter

Два інструменти становлять основу для виявлення руткітів на серверах Linux: chkrootkit для швидкого сканування та rkhunter для більш глибокої перевірки.

chkrootkit

chkrootkit — це скрипт оболонки, який перевіряє критичні системні бінарні файли (ls, ps, netstat, sshd, ifconfig) на наявність ознак втручання. Він також виявляє мережеві інтерфейси в режимі promiscuous та видалені журнали. Починаючи з версії 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 або переглядаючи попередження в системному журналі.

Розширене виявлення: моніторинг поведінки та перевірка цілісності

Статичні сканери мають фундаментальну слабкість. У експерименті 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 пропонує миттєве виділення потужності, глобальне охоплення та гнучкі плани, створені для будь-якого масштабу.

Оновити зараз

Блог

На цьому тижні

Більше статей
Чому важливо мати потужний і нелімітований VPS

Чому важливо мати потужний і нелімітований VPS

Нелімітований VPS надає фіксовану пропускну здатність з фіксованою швидкістю порту. Чим він відрізняється від тарифних планів, коли він окупиться і що потрібно перевірити перед покупкою.

7 хв читання - 9 травня 2025 р.

Управління пам'яттю в Linux: Swap, OOM Killer та Cgroups

12 хв читання - 31 травня 2026 р.

Більше статей
background image

Маєте запитання або потребуєте індивідуального рішення?

icon

Гнучкі варіанти

icon

Глобальне охоплення

icon

Миттєве розгортання

icon

Гнучкі варіанти

icon

Глобальне охоплення

icon

Миттєве розгортання