Hack-Faq Скляров Иван Хакер, номер #094, стр. 094-060-2 Non-authoritative answer: Name: www.xakep.ru Address: 194.67.128.2 Этот вывод означает, что был опрошен DNS-сервер ns.urtc.ru (его IP-адрес 195.38.32.2) и получен ответ IP (www.xakep.ru) = 194.67.128.2. Эта же утилита позволяет произвести обратное преобразование: > nslookup 194.67.128.2 Server: ns.urtc.ru Address: 195.38.32.2 Name: game-land.rmt.ru Address: 194.67.128.2 Как видишь, в реальности за IP-адресом 194.67.128.2 закреплено имя game-land.rmt.ru, следовательно, www.xakep.ru является виртуальным узлом. Q: Пишу руткит под Linux для ядер версии 2.6.x и столкнулся с такой бедой: в этих ядрах не экспортируется таблица системных вызовов sys_call_table. Как быть? A: Да, к сожалению, такая проблема есть. Разработчики ядер в целях безопасности сделали запрет на экспорт sys_call_table, начиная с ядер версии 2.5.41, поэтому простая подмена системных вызовов в этих ядрах не работает. Но хакерами были найдены способы обхода этого запрета. Я знаю три способа, как получить адрес sys_call_table: 1. Первый способ описан в электронном журнале Phrack#58 в статье «Linux on-the-fly kernel patching without LKM», но он зависит от текущей платформы и алгоритмически сложен. 2. Адрес таблицы можно найти простым поиском в файле /boot/System.map, например: # grep sys_call_table /boot/System.map c03ce760 D sys_call_table Теперь в модуле можно сделать присваивания следующего вида: unsigned long *sys_call_table; *(long *)&sys_call_table=0xc03ce760; и далее осуществлять подмену обычным образом, как в ядрах версии 2.4.x. В своем модуле ты можешь встроить функцию, которая открывала бы файл /boot/System.map и самостоятельно находила в нем адрес sys_call_table. 3. Третий способ придумал и описал (с исходным кодом) в своей статье российский хакер dev0id из UkR Security Team. Ищи эту статью на www.ustsecurity.info. Вдобавок к перечисленному я тебе советую купить мою книгу «Программирование боевого софта под Linux» (автор - Иван Скляров), где эти способы описаны более подробно, а также реализован и разобран учебный руткит и кейлоггер под ядра 2.6.x. Q: Как откомпилировать модуль ядра Linux версии 2.6.x? A: Компиляция модулей для ядер 2.6.x существенно отличается от компиляции модулей в ядрах 2.4.x. Сначала необходимо создать Makefile со следующим содержимым (в качестве примера возьмем модуль с названием mod.c): obj-m += mod.o Затем нужно выполнить команду для сборки модуля следующего вида: # make –C /usr/src/linux-`uname –r` SUBDIRS=$PWD modules В том случае, если у тебя в каталоге /usr/src присутствует символическая ссылка linux на каталог с исходными текстами ядра, то команда сборки будет выглядеть так: # make –C /usr/src/linux SUBDIRS=$PWD modules Как ты понимаешь, исходные тексты ядра должны быть установлены в твоей системе в каталог /usr/src. Если у тебя исходные коды ядра отсутствуют, то их нужно установить, иначе сборка модуля закончится с ошибкой. Устанавливать пакеты удобно через KDE или Gnome (ищи в меню функцию вроде «Установка программ»). Нужный пакет с исходными кодами ядра обычно имеет название вида kernel-source-номер_версии. |