Руткиты — страница 8

  • Просмотров 4451
  • Скачиваний 256
  • Размер файла 453
    Кб

Также как и в Windows, в UNIX имеются и rootkit уровня приложений, и rootkit уровня ядра. Рассмотрим уровень приложений. Как правило, подобные rootkit состоят из «троянизированных» версий обычных программ, скрывающих присутствие своих компонент в системе, и бэкдора, предоставляющего скрытый доступ в систему. Примерами rootkit уровня приложений являются lkr, trOn, ark и др. Продемонстрируем работу rootkit уровня приложений на примере tr0n. Для сокрытия

своего присутствия в системе данный rootkit выполняет целый ряд действий: в момент инсталляции он останавливает syslogd-демон, затем подменяет своими троянскими версиями следующие системные утилиты du, find, ifconfig, login, ls, netstat, ps, top, sz. Кроме того, в систему добавляется троянская версия sshd-демона. В завершение, в фоновом режиме запускается sniffer, в inetd.conf добавляется запуск telnetd-, rsh-, finger-демонов, перезапускается inetd и снова стартует syslogd. Обычно

tr0n располагается в /usr/src/.puta, но благодаря установленной ранее троянской версии утилиты ls, этот каталог невидим. Перейдем к rootkit уровня ядра. Rootkit этого типа предоставляют все возможности предыдущего типа, но на более низком уровне — rootkit уровня приложений должны модифицировать отдельные бинарные файлы, rootkit уровня ядра должны изменить только ядро, что значительно увеличивает «качество» сокрытия информации. Существует

несколько способов внедрения rootkit в ядро системы UNIX: Использование LKM. Ядро linux, как и ядра многих других ОС, способны загружать модули (или драйверы устройств) «на лету», что позволяет злоумышленнику изменить системные вызовы ядра и тем самым выдавать некорректную информацию (например, исправленный список файлов). Использование подобного приема можно предотвратить, если скомпилировать монолитное ядро без поддержки LKM, но

такое решение имеет существенный недостаток — необходимость включения в ядро всех нужных драйверов. Запись в /dev/kmem, который предоставляет доступ к занятой ядром области памяти. Запись в /dev/kmem переписывает ядро «на лету». Таким образом, для изменения ядра необходимо лишь найти нужное место в памяти, но это решаемая проблема. Существует исправление, запрещающее записывать в /dev/kmem напрямую. Также это можно сделать через

mmap. Заражение существующих модулей. Отличие от первого способа заключается в том, что rootkit не содержит своего отдельного модуля и использует внедрение в уже существующие. Применение данного подхода позволяет сделать rootkit устойчивым к перезагрузке, поскольку чаще всего заражаются модули, которые будут загружены ОС в любом случае (например, драйвер файловой системы).   7 Методики обнаружения RootKit в системе Рассмотрим базовые