Виявлення руткітів для 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, LKM). Вони перехоплюють системні виклики, маніпулюють пам'яттю ядра та приховують свою присутність. Оскільки вони прив'язані до певних версій ядра, неправильно сконфігурований модуль може спричинити паніку ядра, що за іронією долі викриває його.

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

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

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

Сканування за допомогою 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 або переглянувши попередження системного журналу.

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

Статичні сканери мають фундаментальний недолік. В експерименті 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

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