CUK77

Professional
Messages
1,193
Reputation
3
Reaction score
396
Points
83
В этой статье мы погорим с тобой о руткитах для операционных систем NT/W2k. Согласись, эта, с позволения сказать, отрасль очень бурно развивается! Если еще год назад мы могли только наслаждаться альфа-версией одного единственного NT-руткита (и каждый ламерский админ знал, что при странном поведении системы следует набрать net stop _root_ ), то сейчас ситуация в корне меняется в лучшую сторону!

История и политика

Microsoft ревниво оберегает свое ПО от посягательств. Его лицензиям на текст, код, изображения(!), высказывания Билла Гейтса(!!!) нет конца... Все это обременяет программера, создавая очень тесные рамки для работы (даже легальной). Оффтопик: ты слышал о новой лицензионной политике микрософта? Теперь они имеют право на доступ к информации на компьютерах пользователей!!! И это не просто слова, кто знает, к чему это вообще приведет (сразу в голову лезут мысли о потайных ходах софтверного гиганта). И вот тебе еще для затравки: недавно на одном из Микрософтверных ftp-сервкаков интернета обнаружили приватные данные примерно о нескольких миллионах пользователей windows (включая их адреса, номера телефонов и т.д.). Я советую тебе хорошенько над этим задуматься! Ладно, возвращаемся на землю, главная проблема - закрытые исходники. Если в unix-совместимых достаточно выискать сорс какого-нибудь login, добавить туда пару нужных строчек и скомпилировать, то в nt/w2k все обстоит иначе - надо дизассемблировать (ну, или искать более оригинальные пути), что, во-первых, противозаконно, а точнее, "противолицензионно" (я по поводу дизассемблирования). Во-вторых, все это предполагает хорошие знания асма. А в третьих, сорсы на языках низкого уровня получаются куда длиннее. На первый взгляд кажется, что проприетарный софт (т.е. с закрытыми исходниками) в некотором роде защищает программы от недобросовестных рук, но это иллюзорная безопасность, так как в реале код остается на том же уровне... Например, ты написал скрипт на С, автоматизирующий добавление новостей на сайте, выложил исходники, и вдруг по тупой оплошности твою пагу взломали... С одной стороны обидно, конечно, но с другой стороны - был найден баг. Ты получил опыт, а твои сорсы стали еще безопаснее. Что же касается проприетарного софта - исходники закрыты, и никто не знает что да как (мы даже не можем быть уверены в отсутствии потайных ходов!). Приходится полагаться на русское "авось". Мелкософт частенько не может выложить нормальные патчи (мда, хотя работают они быстро), и если вдруг кто-нибудь найдет очередную дырку в IE, то тебе долго придется ждать официальных заплаток (если он конечно сообщит об этом в M$).

Укрепляться или нет?

Стоит ли хакеру укрепляться на nt/2k машине? Согласен, очень спорный вопрос... Unix - свое, родное... А НТ? Она изначально создавалась как ОСь с графическим интерфейсом (gui встроен в ядро!), возможности командной строки минимальны (даже в w2k). Средства удаленного администрирования (вроде pcAnywhere, BO200 etc.) очень легко засечь, кроме того, требуется их как-нибудь запустить. Обычно добавляют нужные строки в какой-нибудь win.ini и перезапускают машину (что очень опасно), но подобная схема не относится к VNC (и еще некоторой радостью является появление Terminal Services). Идем дальше, забудем на некоторое время о gui и перейдем к командной строке. Как с ней быть? Можно поставить ее на netcat (no comments), а можно запускать через Web-сервер (если на взломанной машине он есть, посредством, например, cmdasp.asp). Но опять выходит глупость - неужели админ не заметит новый скрипт (да еще с таким названием, хотя можно и переименовать) или новый открытый порт в системе (со странным приглашением Enter Password: или просто C:\>)? Скрытие папок и файлов. Насчет первого, как обычно, отстой (я опускаю использование attrib +h как для каталогов, так и для файлов). Насчет второго есть отличное решение - потоки NTFS, например: cp dsniff.exe C:\WINNT\SYSTEM32\kernel32.dll:dsniff.exe. Теперь можно с радостью удалить исходный файл (del dsniff.exe) и радоваться жизни (а восстановить так: cp C:\WINNT\SYSTEM32\kernel32.dll:dsniff.exe dsniff.exe). Может быть, кто-то возразит и скажет, что средства контроля целостности файлов сразу заметят изменение размера kernel32.dll. А вот и нет! Размер файла не изменяется, изменяется свободное место на диске. Логи - тут тоже надо радоваться. Предоставляемые данные минимальны, так что админы их обычно сопоставляют с журналами системы обнаружения атак и фаерволами, только так можно добиться хоть каких-нибудь результатов. Но на всякий случай во время твоих действий советую набрать auditpol /disable (а при окончании auditpol /enable). Но стоит ли из-за всего этого считать NT/2k безопасной? Конечно, нет! Подпишись на security-рассылки и составь баланс unix- (даже всех дистрибутивов) и win-багов. Получится соотношение примерно 1 к 3. Это особенно касается IE, OE и IIS. К чему это я? Безопасность NT в ее тупости. Хотя система изначально создавалась для сети, ее возможности не на высоте. К чему мы пришли? Так или иначе, остается несколько белых пятен - скрытие каталогов, получения незаметного удаленного доступа (через gui или cmd) и т.д. И тут на помощь тебе приходят руткиты, к описанию которых мы и перейдем!

_root_040 - классика, но очень поучительная...

Это первый руткит для nt/2k. Доступна альфа-версия (хотя она была выпущена примерно год назад). Из достоинств хотелось бы отметить возможность прятать процессы, ключи реестра, файлы и каталоги (если они начинаются с _root_). Итак, чтобы запустить руткит тебе следует скопировать _root_.sys и deploy.exe в какую-нибудь директорию (например, YourDir) и набрать C:\YourDir>deploy.exe. Теперь в системе создается скрытый TCP/IP стек(!), который создает виртуальную машину с адресом 10.0.0.166 (естественно, такие фокусы будут корректно работать только в локальной сети). Берешь обычный телнет и коннектишься (порт не имеет значения, если будет время, попробуй посканить хост nmap'ом, получишь очень интересные результаты):

# ifconfig eth0 10.10.10.1

# telnet 10.0.0.166

Connected to 10.0.0.166.

Escape character is '^]'.

_

доступные команды:

ps # показать список процессов

8 System

136 SMSS.EXE

164 CSRSS.EXE

184 WINLOGON.EXE

212 SERVICES.EXE

232 LSASS.EXE

hidedir # спрятать файл/каталог (on/off)

hideproc # спрятать процесс (on/off)

debugint # резко перезагрузить машину (удаленную, естественно)

sniffkeys # keylogger (в данной версии отсутствует)

Доступа к командной строке пока нет (данную функцию планируется добавить в версии 0.44). Как ты уже понял, теперь все папки/файлы/процессы и ключи реестра, которые начинаются с _root_, будут скрыты, например:

C:\>mkdir _root_YourDir

C:\>cd _root_YourDir

C:\>copy c:\winnt\system32\cmd.exe _root_cmd.exe

Можешь запускать _root_cmd.exe и ни в каких списках процессов он светиться не будет (также не будет виден каталог _root_YourDir). Вот, в принципе, и все. Если вдруг тебе понадобится запустить/остановить руткит, то набирай net start

_root_ и net stop _root_ соответственно.

Gina Trojan

FakeGINA - это сборщик паролей для Nt/2k. "Что тут особенного?" - скажешь ты. "Есть ведь всякие keylogger'ы и прочее". А то, что программу можно установить удаленно (regini&ftp), и антивирусы, естественно, ее не засекают (так как, по сути, это не вирус/троян, а поддельная библиотека). Прога осуществляет перехват обращений WinLogon к msgina.dll (то есть часть процедуры обычного входа в систему), захватывая при этом имя пользователя и пароль. Для ее использования тебе надо скопировать fakegina.dll в папку c:\winnt\sysyem32\, потом отправляйся в реестр [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] и замени значение GinaDLL с msgina.dll на fakegina.dll (если ты не сможешь найти этот параметр, то просто создай его). Теперь после перезагрузки и повторного входа в систему можно будет посмотреть награбленные пароли:

C:\>more c:\winnt\system32\passlist.txt

TEST\Administrator 1!ImGod!1

TEST\stalsen qwerTTY

Как ты уже понял, TEST - имя компьютера, Administrator и stalsen - имена пользователей, а 1!ImGod!1 и qwerTTY - пароли. Вообще, имя библиотеки можно переименовать, например, в ginams.dll.

Hacker Defender (by Holy_Father)

На мой взгляд, это самый лучший из всех доступных руткитов для Windows NT/2k/XP. Большая часть кода написана на Дельфи 6 (и ассемблере). Основная идея состоит в следующем: использовать некоторые API функции (WriteProcessMemory и CreateRemoteThread), чтобы создать новую "нить" но всех запущенных процессах системы, которая будет пытаться переписать некоторые функции kernel32.dll (вроде Kernel32.ReadFile, Kernel32.CreateProcessW, etc) и вставлять поддельный (то есть нужный) код, назначение которого - проверять результаты выполнения некоторых API и модифицировать их "по своему усмотрению". Это позволяет программе прятать файлы, процессы, сервисы и ключи реестра. Более подробное описание работы читай в файле readme на английском и чешском языках. Ну что ж, перейдем к использованию. У руткита есть конфиг-файл hxdef051.ini. Существует 6 частей настройки, а конкретно это [Hidden Table] - список файлов и папок которые должны быть спрятаны. Например, в корне диска ты создал директорию mystuff со всякими прогами типа fscan, dsniff, fgrind, и тебе не хочется их показывать, тогда пиши в конфиг:

[Hidden Table]

~ ъ@ѕ.exe # читай ниже

mystuff*

fscan.exe

fgring.exe

dsniff.exe

hxdef* # сам руткит тоже надо скрыть!

Далее [Root Processes] - программы, которые будут свободны от инфекции (то есть смогут получать реальные результаты выполнения API), например:

[Root Processes]

~ ъ@ѕ.exe # читай ниже

fscan.exe

fgring.exe

dsniff.exe

hxdef*

Теперь проги fscan, fgrind, dsniff и сам руткит смогут получать верные данные (т.е. видеть скрытые файлы, каталоги и т.д.). Возможно, тебе еще понадобится скрывать всякие сервисы (например, VNC), тогда пиши:

[Hidden Services]

WinVNC*

HackerDefender* # это дефолтное имя "руткит-сервиса".

Хотя для установки VNC надо еще добавить некоторые ключи реестра, которые тоже желательно скрыть:

[Hidden RegKeys]

WinVNC*

HackerDefender051 # регключ руткита

LEGACY_HACKERDEFENDER051 # регключ руткита

А если тебе надо что-нибудь запустить во время старта системы, то используй [Startup Run]:

[Startup Run]

C:\mystuff\troyan.exe

[Password] - используется бэкдором. Вот о нем и поговорим. Для корректной работы он перехватывает некоторые API функции, связанные с получением пакетов из сети, и если поступающие данные равняются 256-битному ключу, то в каталоге temp создается копия шелла с именем "~ ъ@ѕ.exe", который, естественно, будет скрыт, но к счастью все это происходит после проверки пароля (чего нельзя сказать о _root_040):

[Password]

hxdef-rulez

Это дефолтный пароль, запомни его, может быть, пригодится. Как видишь, обычным телнетом сюда не войдешь, нужен специальный клиент. Но о нем позже. Запускаем руткит (хорошо еще, что все делается через командную строку, а то представляю себе небольшое окошко с крутой кнопкой InFec7eD, тогда бы уже пошли мучения для удаленного пользователя): C:\mystuff>hxdef051.exe. Все, теперь указанные папки/файлы/сервисы и ключи реестра скрыты, пора проверить бэкдор. Я запустил стандартную версию службы telnet на взломанной машине. Теперь берем клиент и коннектимся:

C:\>bdcli051.exe (или так: C:\>bdcli051.exe 169.254.173.210 23 hxdef-rulez, то есть формата host port password)

Host: 169.254.173.210

Port: 23

Pass: hxdef-rulez

connecting server...

receiving banner...

opening backdoor...

backdoor found

checking backdoor .....

backdoor ready

authorization sent, waiting for reply

authorization - SUCCESSFUL

backdoor activated!

close shell and all progz to end session

Microsoft Windows 2000 [Версия 5.00.2195]

Корпорация Майкрософт, 1985-2000.

C:\WINNT\system32> _

Мда, до боли знакомая строчка. Теперь ты можешь делать все что угодно... Во-первых, команды будут получать реальные данные (помнишь [Root Processed]?). Во-вторых, ты можешь перезапускать руткит в соответствии с новыми данными конфига: C:\>hxdef051.exe -:refresh. Что еще можно сделать? Многое! Ведь ты теперь получил интерактивный доступ к шеллу. Теперь ты можешь через ftp накачать уйму программ (eq дополнительные утилиты командной строки, сканеры всякие, если хочешь графического управления, то скачай VNC). Только потом не забудь перезапустить руткит, предварительно добавив имена прог в [Hidden Tables] и [Root Processes] (вспомни команду echo в шелле). Как закончишь, смело выходи командой exit. А теперь попробуем ввести левый пароль:

C:\>bdcli051.exe 169.254.173.210 23 PaSSwoRd

connecting server...

receiving banner...

opening backdoor...

backdoor found

checking backdoor .....

backdoor ready

authorization sent, waiting for reply

authorization - FAILED!

Bad password!

И если бэкдора нет, то увидишь что-то вроде: backdoor is not installed on 169.254.173.210:1025. Некоторое дополнение по поводу бэкдора: он будет работать при условии, что на определенном сервисе входящий буфер будет больше или равен 256 битам. Как мы уже выяснили, это Telnet, а также Apache (for Win32), IIS, Oracle, etc. Кроме того, Web-сервер не будет логировать команды, а FTP- и SMTP-сервисы только записывают дисконнект в лог-файл. Но от себя хочу заметить, что через netstat атакующий очень легко вычисляется, и еще - если журнал безопасности логирует успешные входы (такое редко бывает из-за "засорения" логов), то можно увидеть записи входа System со странным процессом "Temp\~ ъ@ѕ.exe". Думаю, эти баги будет устранены в следующей версии. Естественно, радует еще то, что программа фриверная (в принципе, это вполне естественно, не хватало еще платных руткитов), но исходники, увы, пока закрыты. Хотя весь проект планирует перейти на open source с версии 1.0. Существуют еще много не менее интересных средств вроде: NullSys, Hook4Windows, Pepper, Rootkit_IDA, NTKap, NTRooT. Но большая часть из них находится в активной разработке и, естественно, пока не рекомендуется их использовать на взломанных машинах, так как это может привести к непредсказуемым результатам (от аварийной перезагрузки до полного краха системы, что с большой вероятностью и произойдет).

fucking LaW

Естественно, не стоит даже упоминать, что использование руткитов незаконно. Проблема заключается в другом – в опасности написания подобных программ. Давай вспомним арест автора TorNKit. В нашем идиотском УК РФ это 273 статья - "Создание и распространение вредоносных программ для ЭВМ" - до 3 лет со штрафом от 200 до 500 минимальных окладов. А если еще с тяжкими последствиями (например, ты по неосторожности запорол руткитом всю систему, ведь на данном этапе эволюции nt/2k rootkits это вполне реально), и, естественно, компания (якобы или реально) понесла убытки и еще вправе потребовать компенсацию ущерба. А вообще наш УК в плане сетевого терроризма (как это модно сейчас говорить) очень туп. Посуди сам, новый (и не очень богатый) юзер интернета вдруг натыкается на статью сайта superhackers.narod.ru о троянах, естественно, скачивает несколько версий и посылает кому только можно... Через некоторое время по жалобам пользователей (из-за этого все обычно и происходит) юзера вычисляет наше неподкупное Управление Р. "Официально", так сказать (то есть по кодексу), выходит две уголовные статьи - вышеуказанная 273 (до трех лет + штраф) и еще 272 (до двух лет + штраф): "неправомерный доступ к компьютерной информации" (то есть получение паролей, список посещаемых сайтов и т.д.). Естественно, в реале все складывается несколько иначе, обычно отделываются предупреждением (если совсем малолетки) или штрафом. Для тех же, кто постарше, ситуация непредсказуема. Небольшое, но, на мой взгляд, важное дополнение - помни, что если провайдер государственный, то при жалобах он ОБЯЗАН обратиться в правоохранительные органы. Если же частник, то вполне реальны разборки иными путями (предупреждение, добровольное возмещение "награбленного" или все вышеуказанное с кулаками)... Эх, что-то я уж слишком разошелся по этой теме... Мой тебе совет: не отравляй жизнь бедным юзерам, воруя у них инет, т.к. если сравнить его стоимость и возможные последствия - дело того не стоит! А насчет написания руткитов/вирусов - я не слышал ни об одном случае преследования их авторов в России.

Выводы

Теперь уже руткиты докатились и до windows-систем. Это, естественно, радует! До совершенства им еще очень далеко, но, тем не менее, достойные претенденты уже набираются. Конечно, нельзя пока этот "рынок" назвать насыщенным (как, например, в unix-совместимых системах), но дело постепенно движется... А последнюю информацию о руткитах для NT/2k можно получить по адресу rootkit.com (надо заметить, что сервак частенько в дауне).

Обзор популярных руткитов

Выбор руткита - весьма сложное занятие. Если подойти к этому вопросу неосознанно, то можно в два счета лишить систему работоспособности или засветиться перед бдящими глазами админа. Ведь абсолютно любой руткит помимо видимых достоинств имеет весомые недостатки. Именно их и нужно учитывать при выборе защитного средства. Этим правилом я всегда пользуюсь. А ты?

Огромный ассортимент

Подходить к вопросу выбора нужно очень и очень серьезно. В некоторых случаях хакерские комплекты вообще нельзя применять - если на сервере установлен умный ядерный патч, последний chkrootkit или навороченная IDS. В этой ситуации достаточно ограничиться небольшим бэкдором или собственным самопальным средством (это мы уже проходили в Х/09). Задуматься о вопросе затроянивания можно лишь тогда, когда на сервере не крутятся опасные для руткита процессы. Но даже при идеальном раскладе можно вывести систему из равновесия, применив самый защищенный руткит.

Но довольно прелюдий! Пора уже определяться с выбором. На отведенных мне полосах я расскажу о таких вещах, как shv4, suckit, adore, fbsd-rootkit и rootkitSunos. А после подробного описания каждой тулзы ты выберешь для себя оптимальный вариант. Договорились? Тогда поехали!

Приватный и глючный shv4

Если ты хоть раз поднимал инфу о самых популярных руткитах, то наверняка знаешь о великом shv. Этот комплект собрал хакер с ником dcoder и позаботился о том, чтобы он стал приватным. Действительно, в публичных источниках тебе не найти shv4, но это не значит, что он недоступен. Приватные тулзы часто всплывают в ответах на нестандартные поисковые запросы (типа «shv4 index»), на зарутанных машинах с 0day-хранилищем или на забугорных irc-каналах. Но я тебе этого не говорил ;).

Сам комплект состоит из одного архива shv4.tgz. Устанавливается пакет с помощью команды ./setup password port - такой синтаксис указан в файле README. Но если ты выполнишь эту неприметную команду, то рискнешь лишиться контроля над системой. Нет, в установочном файле setup нет команды rm -rf /, просто создатель руткита оказался ушлым человеком и заставил инсталлятор высылать ему на почту всю информацию о машине, включая пароль и порт на соединение. Поэтому возьми себе за правило: когда ставишь неизвестный руткит - исследуй содержимое его установщика. А то мало ли что.

Не спеши ставить комплект даже после удаления шпионской строки. Пришло время добавить бочку дегтя в ложку меда :). Дело в том, что руткит хреново работает с некоторыми операционками (в частности с RedHat 6.1). Его бинарники порой падают в кору, а если все-таки запускаются, то можно увидеть ругань на некорректные опции (в случае замены /bin/ls на старую версию) и на несоответствие каких-то там символов в /boot/System.map (глюк /bin/ps на некоторых версиях ядер 2.2.х). К чему я все это? Если уж решил троянить систему - то забэкапь каталог /bin и /usr/bin (полный список заменяемых файлов смотри во вложенном архиве bin.tgz). Только после этого стартуй setup. Не рекомендую класть бэкап в папку с shv4 - она удалится после установки пакета. И еще один совет: не стоит выбирать слишком высокий порт: в некоторых операционках руткит почему-то отказывается его слушать.

Предположим, что все получилось как надо: руткит успешно установился, бинарники прижились, порт слушается. Теперь можно юзать ssh-клиент на выбранном порту. В качестве логина применяется слово root, а в качестве пароля - первый параметр, переданный установщику. Руткит умеет очень много интересных вещей. В /usr/include можно обнаружить три файла: log.h, port.h и proc.h. В них забиты подстроки, порты и названия процессов, которые не стоит показывать администратору. С виду все работает как надо, но если посмотреть на систему под другим углом - опять получаем баги. Первая брешь затаилась при симбиозе руткита с libncurses (попросту с менеджером mc). Все скрытые директории и файлы прекрасно отображаются в midnight’е, как будто руткита вообще нет. В связи с этим рекомендую не пользоваться этой фичей.

В каталоге /lib/ldd.so, который характерен для shv4, есть три важных файла: tks, tksb и tkp. Первый выполняет роль ftp/telnet/pop3/imap-снифера и прекрасно дампит всю информацию в /lib/ldd.so/tkps. Второй - парсер для снифера. Его задача - грамотно обработать лог с перехваченными данными. И последний атрибут руткита - логклинер, который, к сожалению, вычищает лишь текстовые журналы.

Следующая особенность shv4 заключается в том, что он умеет перехватывать ssh-пароли, заменяя клиент пропатченной версией. Это не есть хорошо, потому что заменяемый /usr/bin/ssh не умеет коннектиться по второму протоколу, тем самым выдавая себя с потрохами. Если тебя это не пугает - пользуйся на здоровье. Сграбленные пароли будут дампиться в /lib/ldd.so/system.log.

Вот, собственно, и все особенности руткита shv4. В приватных источниках существует и shv5, но я его еще не видел, поэтому ничего хорошего сказать не могу. Как ты понял, руткит применяется только для linux-систем и только для ядер 2.2 и 2.4.

Невидимый Suckit

Второй руткит, который конкурирует с shv4, получил название Suckit (или sk). Хакерский комплект выложен в публичные источники, но новые его версии являются приватными. Комплект состоит всего из двух файлов - /sbin/init и login. Как ты понял, установщик троянит init, которым и управляет хакер. Второй файл используется в качестве клиента - с его помощью взломщик логинится в систему.

Установка руткита очень проста: вначале выполняется команда make skconfig. Хакеру зададут ряд простых вопросов, ответы на которые будут занесены в специальный конфиг руткита. Затем можно писать make и make install, после чего sk будет активирован.

Теперь поговорим об особенностях клиента. Для успешного соединения с системой необходимо, чтобы на сервере светился любой порт. Переноси login на другую машину, затем запускай его с параметром -h host -d port - и ты внутри. У составителя руткита есть чувство юмора - это видно по красочному приглашению. Все процессы и логи, порожденные со шпионской консоли, не будут никуда логироваться, так что не нужно заморачиваться вопросом чистки журналов. У тебя может возникнуть иллюзия, что процессы не скрываются, но это оптический обман - для удобства ты видишь собственные процессы, но их не может видеть обычный пользователь.

Как подобает настоящему руткиту, suckit поставляется со встроенным снифером, который записывает все набранные логины и пароли в файл ~/.sniffer (домашний каталог руткита - /usr/share/locale/sk/.sk12).

Пришло время поговорить о недостатках sk. Первый, и весьма весомый минус - руткит опознается chkrootkit’ом. В связи с этим не рекомендуется инсталлить sk при излишней активности администратора. Второй недостаток - руткит не всегда бывает легко собрать. Из-за особенностей ядра хакерский комплект может наотрез отказаться устанавливаться. И с этим ничего нельзя поделать :(. И наконец, последний минус - руткит достаточно сложно уничтожить. Простая замена /sbin/init не помогает, поэтому если администратор засечет sk, скорее всего, он переустановит всю систему.

Я знаю многих людей, которые любят suckit за его компактность и навороченность. Но сам лично почему-то не доверяю этому руткиту и чаще всего использую shv4 (или не использую ничего). Поэтому сам решай, что лучше. Практика, практика и еще раз практика!

Модульный БУМ, изменивший мир

Все вышеописанные руткиты основывались на замене бинарников. Но ты знаешь, что бывают и LKM-based-комплекты, которые поставляются в виде ядерных модулей. С одной стороны, хакеру нужно позаботиться о вопросе хитрой подгрузки LKM, а с другой - можно забыть про всякие там chkrootkit и tripwire. Они полностью бессильны перед невидимыми ядерными плагинами.

Самым лучшим и актуальным по сей день LKM-руткитом является adore. Он поставляется в виде двух модулей и одного управляющего бинарника. Честно говоря, это самый компактный руткит, который я когда-либо видел. Установка модулей очень проста: достаточно написать ./configure и make. На первом шаге у тебя спросят так называемый пароль (чисто символический), а на втором создадутся все необходимые модули. Перенеси бинарник ava и модули adore.o и cleaner.o в какой-нибудь неприметный каталог, а затем выполни команды insmod /path/to/adore.o; insmod /path/to/cleaner.o; rmmod cleaner. После этого все модули будут успешно установлены и скрыты от посторонних глаз. Самое время оценить всю мощь модульного adore.

В первую очередь, adore умеет скрывать процессы и каталоги. Чтобы скрыть шпионскую папку, достаточно запустить управляющий бинарник с параметром h имя_файла. Буква «u» снимает скрытый статус с каталога. Опции i pid и v pid делают подобные вещи с процессом. Команда ava U пароль_заданный_при_установке деактивирует шпионские модули. Кроме этого, руткит способен выполнять рутовые команды. Это достигается с помощью параметра r cmd. Просто? Конечно, просто :). Единственная сложность - позаботиться об автоматической загрузке руткита при каждом старте системы. Это можно сделать как через cron, так и через стартовые скрипты, выдавая загрузчик модулей за важное системное приложение.

Минусом модульного руткита является несовместимость с любой IDS и кернеловыми патчами. Если таковые имеются, то несанкционированной загрузке модулей воспрепятствуют вышестоящие инстанции :). Но навороченные серваки встречаются крайне редко, что очень радует. Необходимо помнить, что adore не умеет работать с новым 2.6 ядром, а порой неправильно компилируется.

Слово за FreeBSD

Согласись, несправедливо, что я описываю только linux-руткиты. Это связано с нехваткой хакерских комплектов для других систем. В частности для FreeBSD. Но не все так плохо: для фряхи существует средненький по возможностям руткит, который получил название fbrk (сокращенно от FreeBSD rootkit). Этот комплект может использоваться для FreeBSD версии 4.2-4.5.

Установить fbrk не просто, а очень просто. Достаточно запустить скрипт setup без параметров. Тебе предложат сгенерировать пароль, после чего все бинарники установятся в систему. Не стоит забывать об осторожности: я тестировал руткит на FreeBSD 4.6, после чего новые файлы перестали запускаться. Поэтому, как в случае с shv4, необходимо сделать спасительный бэкап. Прочитав readme, ты узнаешь о том, сколько всяких троянцев установится в систему. В первую очередь, fbrk хорош тем, что умеет скрывать файлы и процессы. Необходимо лишь занести их в конфиги /dev/fd/.99/.ttyf00 и /dev/fd/.99/.ttyp00 соответственно. Синтаксис конфигов также указан в readme, поэтому посылаю тебя в этот файл для детального изучения руткита :).

Чтобы получить рутовые привилегии, нужно объявить переменную окружения DISPLAY, значением которой будет заданный пароль. После этого смело запускай telnet localhost и получай абсолютные права. Если залогиниться через FTP под твоим паролем (указывается в качестве username), то руткит даст тебе удаленного рута на 21 порту. По желанию на 65535 порту будет висеть еще один бэкдор, который активирует bash после ввода хакерского пароля.

Кроме этого, руткит содержит два незаменимых логклинера, которые называются freshb (бинарный логвайпер) и fresht (текстовый логвайпер). Им достаточно указать подстроку в качестве параметра, и логи будут быстро вычищены.

Если тебе не нравится этот руткит, можешь заюзать adore для FreeBSD, благо он тоже имеется (http://packetstormsecurity.nl/groups/teso/adorebsd-0...). Те же модули, те же возможности, те же баги :), но только для твоей любимой Фряхи.

Гроза для Solaris

Порой складывается такая ситуация, когда хакеру необходимо закрепить свои права на старенькой Solaris. Впрочем, описываемый руткит может без проблем встать и на SunOS 5.8, но адаптирован он исключительно для 6 и 7 версии. Если ты еще не догадался, речь пойдет о знаменитом в хакерских кругах rootkitSunos, который немного похож на fbrk, но в то же время отличается от него грамотной доработкой на случай сбоя.

Итак, сам руткит состоит из традиционно протрояненных бинарников ls, ps, du, find и т.п. Оформление конфигов аналогично fbrk, но сами файлы спрятаны в /dev/pty*. Прочти файл Rootkit.README и поймешь, как с ним работать. Традиционно в комплект руткита входит снифер и бинарник ic, который подменяет ifconfig, скрывая флаг PROMISC. Тулза sl посылает /bin/login’у заветный пароль и активирует рутовый шелл. Порадовало, что руткит создает бэкап замененных бинарников в каталоге /tmp/.X11-unix/.../rk-bak, а также запускает утилиту fix. Последняя восстанавливает права доступа и время создания файлов. Согласись, что это очень безопасно.

Если полагать, что Солярные админы редко пользуются программами типа chkrootkit, то rootkitSunos проживет в системе долгие годы, а ты будешь без лишнего геморроя и заботы о безопасности админить поверженный сервер.

Что же выбрать?

Я думаю, этот обзор поможет как можно скорее найти ответ на этот сложный вопрос. Лично я редко использую руткиты, лишь в редких случаях прибегаю к помощи shv4 и rootkitSunOS. Пару лет назад очень любил Adore и Suckit, а для Фряхи выбирал только fbrk. С уверенностью могу сказать, что все описанные комплекты заслуживают доверия, несмотря на свои недостатки. Лишь новые версии операционок и умные админы порой мешают ими воспользоваться.

Админам на заметку

Если ты думаешь, что эта статья посвящена лишь хакерам, то глубоко ошибаешься :). Админы обязаны знать все известные руткиты, чтобы с первого взгляда определить, взломана система или нет. Вот список симптомов, указывающих на руткиты из обзора.

* Shv4:

1. Существует каталог /lib/ldd.so

2. /bin/ls не понимает опцию --colors

3. В /usr/includes можно заметить три лишних файла: proc.h, port.h и log.h

* Suckit:

1. В системе существует файл /usr/share/locale/sk/.sniffer

2. /sbin/init отличается контрольной суммой от родного init'а

* Adore:

1. Созданный каталог adore невидим для /bin/ls

2. Chkrootkit засекает скрытые процессы

3. В системе обнаружен бинарник ava

* Fbrk:

1. Наличие каталога /dev/fd/.99/

2. Открытый 65535 порт

* rootkitSunOS:

1. Наличие каталога /tmp/.X11-unix/.../

2. Наличие файлов /dev/ptyX

Если ты обнаружил, что в системе поселился руткит, тут же обновляй все бинарники, которые заменил установщик. Помни, что LKM-руткиты подгружают модули, которые сразу же удаляются из списка. В этом случае смотри все стартовые скрипты и удаляй посторонние записи.

INFO

В некоторых системах при подгрузке модулей проверяется их лицензия. Adore таковой не имеет, поэтому необходимо добавить в код строчку MODULE_LICENSE("GPL").

WARNING

После установки shv4 обязательно сними все атрибуты с файлов в /bin и /usr/bin (команда chattr), а затем подкорректируй время создания файла (команда touch).
 
Last edited:
Top