"Наборы отмычек" для модификации ядра
"Наборы отмычек" для модификации ядра
В предыдущих разделах были рассмотрены традиционные "наборы отмычек", с помощью которых можно модифицировать определенные файлы взломанной системы, а затем разместить в ней программы типа "троянский конь". В настоящее время такие средства несколько устарели. Современные и гораздо более разрушительные варианты "наборов отмычек" могут функционировать на уровне самого ядра операционной системы. Такие "наборы отмычек" позволяют модифицировать выполняющееся ядро UNIX и, таким образом, вводить в заблуждение все системные программы без модификации самих программ.
Обычно загружаемый модуль ядра (Loadable Kernel Module — LKM) служит для обеспечения дополнительной функциональности выполняющегося ядра без встраивания этих функций непосредственно в само ядро. Подобная возможность позволяет загружать и выгружать из оперативной памяти различные модули по необходимости, что, в свою очередь уменьшает размер выполняющейся части ядра. Таким образом, компактное ядро небольшого размера находится в оперативной памяти постоянно, а его возможности расширяются модулями, которые загружаются при необходимости. Это преимущество поддерживается многими версиями системы UNIX, в том числе Linux, FreeBSD и Solaris.
Описанным механизмом может воспользоваться злоумышленник, в результате чего он сможет полностью манипулировать системой и всеми запущенными в ней процессами. Вместо того чтобы использовать модуль LKM для загрузки драйверов устройств, например сетевого адаптера, этот модуль может применяться для перехвата системных вызовов и их модификации с целью изменения реакции системы на определенные команды. Двумя наиболее популярными "наборами отмычек" является knark (для Linux) и SLKM (Solaris Loadable Kernel Module) компании ТHС (http://www.infowar.co.uk/thc/files/thc/ slkm-1.0. tar.gz). Мы подробно рассмотрим пакет knark (http: //packetstorm. securify.com/UNIX/penetration/rootkits/knark-0.59.tar.gz) ниже, а дополнительную информацию о "потайных ходах" ядра системы Solaris можно найти по адресу http://www.infowar.co.uk/the/files/the/slkm-1.0.html/.
Пакет knark разработан хакером Кридом (Creed) и представляет собой "набор отмычек" для модификации ядра системы Linux 2.2.x. Самым важным компонентом этого пакета является модуль ядра knark. о. Для того чтобы загрузить этот модуль, нужно воспользоваться утилитой загрузки модуля ядра insmod.
[shadow]# /sbin/insmod knark.о
После этого на экране появится информация о загрузке модуля.
[shadow]# /sbin/lsmod
Module Size Used by
knark 6936 0 (unused)
nls_iso8859-l 2240 1 (autoclean)
lockd 30344 1 (autociean)
sunrpc 52132 1 (autociean) [lockd]
rt!8139 11748 1 (autociean)
Как видно из приведенного фрагмента, модуль ядра knark был успешно загружен. Кроме того, очевидно, что системному администратору не составит труда обнаружить этот модуль. Поэтому абсолютно закономерно, что взломщик захочет оставить свою деятельность незамеченной. Для того чтобы удалить данные о модуле knark из результатов, предоставляемых утилитой Ismod, злоумышленники могут воспользоваться модулем modhide.o (еще одним компонентом пакета knark)
[shadow]#/sbin/insmod modhide.o
modhide.o: init_module: Device or resource busy
[shadow]# /sbin/lsmod
Module Size Used by
nls_iso8859-I 2240 1 (autociean)
lockd 30344 1 (autociean)
sunrpc 52132 1 (autociean) [lockd]
rt!8139 11748 1 (autociean)
Теперь, после повторного запуска утилиты Ismod, модуль knark таинственным образом "исчезнет" из поля зрения администратора.
К другим интересным утилитам, входящим в состав пакета knark, относятся следующие.
- hidef. Используется для сокрытия файлов.
- unhidef. Служит для отображения скрытых файлов.
- ered. Применяется для настройки команды ехес, используемой для перенаправления ввода-вывода. Благодаря этому вместо исходных версий утилит могут выполняться программы типа "троянский конь".
- nethide. С помощью этой утилиты можно скрыть записи в файлах /proc/net./tcp и /proc/net/udp. Именно из этих файлов получает информацию утилита netstat. Указанные данные злоумышленник может использовать для сокрытия входящих/исходящих соединений взломанной системы.
- taskhack. Эта утилита позволяет изменить идентификаторы UID и GID запущенных процессов. Таким образом, взломщик в любой момент может изменить владельца процесса /bin/sh (выполняющегося с привилегиями обычного пользователя) и сделать его владельцем пользователя root (с UID 0).
- rехес. Эта утилита применяется для удаленного выполнения команд на сервере, на котором установлен пакет knark. Она обеспечивает возможность использования ложного исходного адреса, что позволяет выполнять команды без выявления их источника.
- rootme. Эта утилита позволяет получить доступ с привилегиями root без использования профамм SUID. Из приведенного ниже фрагмента видно, насколько просто это осуществить.
[shadow]$ rootme /bin/sh
rootme.с by Creed @ #hack.se 1999 creed@sekure.net
Do you feel lucky today, haxOr?
bash#
Группа программистов и специалистов по вопросам безопасности Teso разработала еще один вариант ятра под названием Adore, который можно найти по адресу http://teso.scene, at/releases/adore-0 .14. tar. gz. По возможностям эта программа не уступает пакету knark. Ниже представлены некоторые параметры командной строки.
[shadow]$ ava
Использование: ./ava {h,u,r,i,v,0}
[имя-файла, PID или dummy (для
параметра 'U')]
h скрыть файл
u отобразить файл
r выполнить с привилегиями root
U удалить adore
i сделать PID скрытым
v сделать PID видимым
Если приведенных выше сведений оказалось недостаточно, то прочитайте статью Сильвио Чезаре (Silvio Cesare), в которой рассматриваются аналогичные средства, позволяющие "на лету" модифицировать выполняющееся в оперативной памяти ядро в системах с "потайным ходом", в которых отсутствует поддержка модулей LK.M. Эту статью и описываемые в ней средства можно найти по адресу http://www.big.-net.au/~silvio/runtime-kernel-kmem-patching.txt. И наконец, Джоб Де Хаас (Job De Haas) выполнил огромную работу по исследованию методов взлома ядра системы Solaris. Часть написанного им кода можно найти по адресу http://www. itsx.com/kernmod-0.2.tar.gz.
Содержание раздела