Pull to refresh

Comments 9

Вообще это слишком переусложненный способ, в *nix\bsd есть способ намного проще (без ассемблера и инъекций):
1. Запустить strace/truss с ид процесса sshd, отловить там fork
2. Запустить еще один strace/truss с ид ребенка, полученного из fork на шаге 1
В первых нескольких вызовах read/write будет лежать пароль в открытом виде.
Я думаю, у автора принципиальная идея в том, чтобы сделать инъекцию уже _после_ запуска процесса. Иначе если бы это был не sshd, то ещё проще воспользоваться LD_PRELOAD. (sshd его игнорирует из соображений безопасности.)

Я тоже как-то баловался с инъекцией в живые процессы. Было очень познавательно постараться найти адрес dlopen(), честно разбирая ELF-образ в памяти (вместо прыжка вслепую по смещению), а потом пытаться сделать инъекцию так, чтобы не сломать многопоточные приложения.
Да, вы правы.
sudo strace -p $SSHD_PID -f -e read

ловит и логины и пароли.

Если не ошибаюсь, для отладки нужен root. Так root может и бинарник sshd подменить на свой, с логированием.

«rpm -Va» или аналогичная проверялка целостности файлов это увидит. А тут всё таки не меняется содержимое исходных файлов. Больше шансов остаться не замеченным.

Если не ошибаюсь, для отладки нужен root. Так root может и бинарник sshd подменить на свой, с логированием.

На самом деле материал очень интересный. ssh тут скорее как пример. Мне интересно, а нету ли никаких библиотек, а ля detours или easyhook под винду, только под линукс для создания трамплинов и восстановления прологов в автоматическом режиме? Или всё ручками?
Есть набор кросплатворменных утилит, например funchook, plthook, subhook. Есть менее универсальные утилиты, например для хука функций времени под linux — TARDIS
А нету никакого сравнения насколько они нормально отрабатывают под Линуксом?
Sign up to leave a comment.

Articles