Pull to refresh

Шпаргалка по обнаружению и удалению руткитов ядра Linux

Original author: https://github.com/MatheuZSecurity/detect-lkm-rootkit-cheatsheet

Обнаружение руткитов ядра Linux

Поиск руткитов в sysfs/tracing

  • /sys/kernel/tracing/available_filter_functions# Перечисляет функции ядра, которые можно отфильтровать для трассировки.

  • /sys/debug/kernel/tracing/available_filter_functions# Альтернатива для перечисления фильтруемых функций в режиме отладки.

  • /sys/kernel/tracing/available_filter_functions_addrs# Перечисляет фильтруемые функции с адресами, только в ядре 6.5+

  • /sys/debug/kernel/tracing/available_filter_functions_addrs# Как и предыдущий, но в режиме отладки, ядро ​​6.5+

  • /sys/kernel/tracing/enabled_functions# Перечисляет функции ядра, которые в данный момент включены для трассировки

  • /sys/debug/kernel/tracing/enabled_functions# альтернативный список отслеживаемых функций, в режиме отладки

  • /sys/kernel/debug/tracing/trace# Где события отслеживания записываются в режиме реального времени

  • /sys/kernel/tracing/trace# Как и предыдущий, позволяет просматривать трассировку, не требует режима отладки

  • /sys/kernel/debug/dynamic_debug/control# включить/отключить отладочные сообщения ядра в реальном времени для определенных модулей

  • /sys/kernel/tracing/touched_functions# показывает все функции, которые когда-либо трассировались ftrace или прямым трамплином (только для ядра 6.4+)

  • /sys/fs/bpf/*# Каталог карт и программ BPF (eBPF), используемых для отслеживания и безопасности

  • /sys/module/*# Содержит информацию о загруженных модулях ядра, такую ​​как параметры и состояния

  • /sys/kernel/tracing/kprobe_events# Содержит события kprobes

Поиск руткитов в procfs

  • /proc/kallsyms# Перечисляет все символы ядра, включая адреса функций и переменных

  • /proc/modules# Отображает модули, загруженные в ядро, с такой информацией, как размер, использование и т. д.

  • /proc/vmallocinfo# Показывает использование памяти, выделенной vmalloc

  • /proc/sys/kernel/tainted# Указывает на состояние «загрязнения» ядра, сигнализируя об изменениях или ошибках.

Журналы

  • /var/log/dmesg*# Журналы сообщений ядра, собранные командой dmesg

  • /var/log/kern.log# Хранит журналы событий и сообщений ядра, полезные для мониторинга и отладки

  • /dev/kmsg# Интерфейс для отправки и чтения сообщений ядра в реальном времени

  • dmesg# Команда для просмотра сообщений журнала ядра и загрузки

  • journalctl -k# Показывает журналы ядра, захваченные systemd-journald

Инструменты с открытым исходным кодом

Делаем руткит на основе ftrace бесполезным

Большинство руткитов, которые все еще работают с последними версиями ядра, используют известный метод перехвата ftrace, поскольку перехват таблицы системных вызовов устарел и не работает для большинства последних версий ядер именно из-за защит и изменений, которым подверглось ядро.

Поскольку большинство современных руткитов используют ftrace, почему бы не отключить его?

Вы можете сделать это для поиска PID, скрытых каталогов, например. Отключая ftrace, вы фактически делаете любой хук ftrace бесполезным, но если вы включите его снова, хуки снова будут работать. (помните, что есть способы защитить ваш руткит, который использует ftrace, от обхода таким образом).

echo 0 > /proc/sys/kernel/ftrace_enabled
or
sysctl kernel.ftrace_enabled=0

Удаление руткитов LKM

Империум

Вы можете использовать комбинацию трассировки, чтобы получить адрес функции, например module_show, из diamorphine, с помощью imperius. По сути, imperius вызовет эту функцию, добавит ее обратно в lsmod и сделает руткит LKM видимым.

КонтрТрейсер

Цель ModTracer — найти скрытые внутри системы руткиты LKM и снова сделать их видимыми.

Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.