Руткіти нової хвилі
Про руткітів вже писали; писали, що головне завдання будь-якого руткита - «дозволити хакеру повертатися в систему і не бути при цьому непоміченим». Писали, що цього досягається за допомогою заміни системних програм і установки «протрояненних» демонів ...
Але час цих руткітів проходить - руткіти змінюються. Сучасні руткіти більше не змінюють ps і ls, не встановлюють протрояннений passwd і inetd - тепер руткіти дісталися до серця ОС - її ядра (kernel). Такі руткіти ми і розглянемо.
LKM-руткіти досягають своєї мети за допомогою спотворення роботи системи на рівні маніпуляціями системними викликами (sys_getdents, sys_write, sys_close, sys_kill, sys_fork, sys_clone, sys_symlink - у випадку з руткітом Adore, який ми пізніше розглянемо). Для цього руткит використовує завантажувані модулі ядра (Loadable Kernel Modules - звідси і скорочення -
LKM).
Загружаеми модулі ядра були задумані для підвищення функціональності ядра і разом з тим збереження його розумного розміру. У загальному вигляді робота з завантажуються модулями відбувається наступним чином: якщо відбувається звернення до ресурсу, недоступному в даний момент, то відбувається звернення до демона ядра (/ sbin / kerneld), який завантажує необхідний модуль і ядро продовжує свою роботу. Перебуваючи в системі у вигляді модуля, руткит може викликати таку маніпуляцію: при виклику, наприклад, sys_open (оригінальний виклик) викликається якась функція open_hacked ( «хакерська» функція) і результати її роботи видаються за результати роботи оригінального
sys_open.
З іншого боку - всі програми (наприклад ls) використовують системні виклики і якщо ці системні виклики спотворити, то зміниться і інформація, яка видається програмою. Тобто щоб спотворити вихідні результати, зовсім не обов'язково замінювати саму програму (як було раніше). В результаті становят марним такий спосіб боротьби з руткітів як контрольні суми «бінарників», перестановка системних програм.
Отже, LKM-руткіти маніпулюють системними викликами, але що ж вони вміють?
Змінні процедури: sys_getdents, sys_write, sys_close, sys_kill, sys_fork, sys_clone, sys_symlink
Приховування процесів, файлів, з'єднань, перешкоджає записи «непотрібних» логів. Можна сказати - стандартний
джентльменський набір. З дитинства любить Linux, але є і версія для FreeBSD - AdoreBSD. Руткіт динамічно розвивається - поточна версія - 0.39b4.
Маніпульовані виклики: sys_getdents, sys_ioctl, sys_settimeofday, sys_kill, sys_fork, sys_clone, sys_read, sys_execve
Той же джентльменський набір + можливість виконання команд були надіслані з віддаленого хоста. Знову ж динамічно розвивається - поточна версія - 0.59 дружить з Linux 2.2.
Маніпульовані виклики: sys_getdents, sys_query_module, sys_read, sys_open, sys_close
Стандартний набір + дуже цікава можливість - приховування частини файлів. Механізм роботи простий і геніальний одночасно: якщо в файлі є два. то все що знаходиться між цими фрагментами буде приховано (і
самі фрагменти теж). Написаний для Linux 2.2.
Маніпульовані виклики: sys_getdents, sys_getuid, sys_query_module, sys_kill, sys_fork, sys_clone, sys_open
Приховує файли, процеси і користувачів. Дає рута користувачеві з UID = 666 (дуже оригінально ;-). Приховує відкриті порти. Задуманий для Linux 2.1, 2.2.
Підставу шукати тут: sys_getdents, sys_query_module, sys_read, sys_kill
Приховує файли і процеси. Дуже дієвий інструмент, призначений для Linux 2.1.
Змінні функції: sys_getdents, sys_open
Сховає твої файли від очей допитливого адміна. Дуже старий інструмент, написаний для Linux 2.0
Ось тобі і невелика колекція ... звичайно це ще не все LKM-руткіти, але думаю - найдостойніші.
Як же засікти подібний руткит? Оскільки це модуль, то можна спробувати:
1. Команду lsmod
2. Перевірити вміст файлу / proc / modules (cat / proc / modules).
Хочу відразу попередити - пробуй обидва способи, тому що різні руткіти мають від них різний «імунітет». Наприклад, Synapsis ховає себе від lsmod (але видно через cat / proc / modules), Rial - попадеться на обидва відразу, а adore і knark ти так взагалі не знайдеш ...
Як же боротися з руткитами? Рада старий і універсальний, як доктор Айболить - просто не давай себе поламати ...
Покажи цю статтю друзям: