Как обнаружить скрытые процессы rootkits в Linux?

поиск руткитов в линуксе

Руткиты — 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).

Оставьте комментарий