
Слепой админ
Хакер, номер #020, стр. 020-056-1
[mal@xakep.ru]
[админ слепой не потому, что плохо видит,
а потому, что не знает, куда смотреть]
Начнем с того, что ты порутил сервак зло-админа.
На следующий день ты, довольный своим достижением, лезешь
на "свою" тачку: вводишь login, password... А она, нехорошая,
ругается, понимаешь ли: "Login incorrect".
Проверяешь мыло, а там мессага от root@zlo.org, прочтя которую,
тебе становится ясно, что просекли хацкера админы. -)
Ну и в голове, естественно, мысли:
- Да задолбали!! Черт... Как же сделать так, чтоб
в следующий раз меня не просекли?
Ну так вот, слушай, что я тебе скажу. В сети полно
программ - руткитов. Специально для таких, как ты. -) Они
позволяют тебе использовать систему после ее взлома так,
что администратор не замечает явных признаков твоего
присутствия. Правда, существует небольшая проблемка:
каждая такая программа переписана под определенную версию
ос. Поэтому не всегда получается найти то, что тебе нужно.
Ну что ж тут поделаешь... выход один: научиться писать
руткиты самому. -)
Руткит - набор определенных программ, выполняющих
системные функции, переписанных "под себя". К таким прогам
относятся : login, su, passwd, ps, who, ifconfig и другие.
Ну, не будем затягивать, приступаем... -) Итак,
первым делом переписывать будем login, с такой целью, чтобы
иметь доступ к системе по своему паролю, который не будет
светиться в базе данных пользователей, а конкретней - в
/etc/shadow. Короче говоря, у нас будет некий пароль,
с помощью которого можно будет залогиниться на тачку под
любым юзверем.
Да, кстати, все примеры, рассмотренные в этой статье,
реализовывались на FreeBSD 3.1. Поэтому если у тебя другой
*nix или другая версия freeBSD, возможны некоторые различия.
В общем, поехали... Чтобы переписать программу, нам желательно
достать ее исходники, а то изобретать колесо заново меня не
прет. -) Достать их можно в сети, а можно и прямо на машине,
если, устанавливая BSD, админ там не забыл указать установку
sources. -)
bash#whereis login.c
login: /usr/bin/login /usr/share/man/man1/login.1.gz /usr/src/usr.bin/login
bash#
Отлично. Вот и видно, что исходники login-a лежат у нас в папке
/usr/src/usr.bin/login/
Топаем туда.
Теперь нужно немного разобраться с этим логином. Что это, вообще,
за прога? -) Все очень просто. Когда ты телнетишься на тачку, запускается
login и требует от тебя логин с паролем, сверяет их с базой данных и решает
уже, дать тебе шелл или не дать. -) Ну так вот... Нам, по идее, нужно
найти в исходнике функцию, которая запрашивает пароль и сверяет его
с тем, что в базе. Найти ее довольно-таки просто.
Для этого нам, кстати, понадобится дебаггер. Я всегда использую - gdb.
Итак, нам надо дебагнуть логин, для этого сначала его нужно
откомпилить с определенным флагом -g3.
Поэтому для начала подправим немного Makefile.
bash#ee Makefile
И в ту строчку, что начинается с CFLAGS+= ,
добавим -g3, теперь она выглядит у меня так:
CFLAGS+=-g3 -Wall -DLOGIN_ACCESS -DLOGALL
Сохраняем Makefile и пишем:
bash#make
После того как login откомпилится, запускаем дебаггер gdb.
bash#gdb login

















































































































