Руткиты — rootkits — это специализированные вредоносные программы, которые маскируют своё присутствие в системе с целью выполнения в дальнейшем каких-либо скрытых действий. Они могут скрывать файлы, процессы и даже сетевые соединения, а так же подменять команды пользователя. Многие их них способны обходить антивирусные проверки. Я хочу поделиться с Вами своим опытом борьбы с руткитами. Возможно что-то из этого Вы возьмёте себе на вооружение.
Содержание
Как руткиты скрывают процессы — основные способы:
1. Подмена системных вызовов (syscalls). Rootkits перехватывают вызовы типа getdents(), readdir(), ps, top и т.п., скрывая нужные процессы.
2. Изменение ядра (Kernel Mode Rootkits). В этом случае руткиты загружаются как модули ядра (.ko-файлы) и модифицируют функции ядра, скрывая свою активность.
3. Хук системы /proc. Rootkits подменяют содержимое /proc/[PID], маскируя процесс от стандартных утилит.
4. Использование LD_PRELOAD. Библиотеки динамической загрузки подменяют поведение системных команд даже без изменения ядра.
Как обнаружить скрытые процессы в Линуксе?
1? Проверка /proc вручную:
ls -al /proc | grep -vE "^[d-]r--r--r--"
Если процесс не виден стандартными командами типа ps aux или top, но есть его директория в /proc — это уже должно Вас насторожить.
2? Сравнение выводов разных утилит:
ps aux | wc -l && ls /proc | grep -E '^[0-9]+$' | wc -l
Числа при сравнении должны совпадать. Если в /proc будет больше процессов, чем показывает вывод команды ps, то вполне возможно, что система заражена.
3? Использование утилиты chkrootkit:
chkrootkit | grep INFECTED
Простая проверка на наиболее распространённые и известные rootkits.
4? Использование rkhunter:
rkhunter --check
Утилита проверяет системные файлы на различные несанкционированные изменения.
5? Анализ ядра и загруженных модулей:
lsmod | grep -i rootkit
Некоторые руткиты могут маскироваться, но подозрительные модули можно выявить через lsmod.
Как можно защититься от руткитов в линуксе?
- Использовать SELinux/AppArmor для ограничения доступа к системным ресурсам.
- Регулярно проверять целостность файлов (aide, tripwire).
- Запретить загрузку новых модулей ядра (echo 1 > /proc/sys/kernel/modules_disabled).
- Следить за сетевой активностью (netstat -tulnp | grep LISTEN).
- Использовать Linux-утилиты безопасности (auditd, Sysmon for Linux).