Comments 9
Вообще это слишком переусложненный способ, в *nix\bsd есть способ намного проще (без ассемблера и инъекций):
1. Запустить strace/truss с ид процесса sshd, отловить там fork
2. Запустить еще один strace/truss с ид ребенка, полученного из fork на шаге 1
В первых нескольких вызовах read/write будет лежать пароль в открытом виде.
1. Запустить strace/truss с ид процесса sshd, отловить там fork
2. Запустить еще один strace/truss с ид ребенка, полученного из fork на шаге 1
В первых нескольких вызовах read/write будет лежать пароль в открытом виде.
+2
Я думаю, у автора принципиальная идея в том, чтобы сделать инъекцию уже _после_ запуска процесса. Иначе если бы это был не sshd, то ещё проще воспользоваться LD_PRELOAD. (sshd его игнорирует из соображений безопасности.)
Я тоже как-то баловался с инъекцией в живые процессы. Было очень познавательно постараться найти адрес dlopen(), честно разбирая ELF-образ в памяти (вместо прыжка вслепую по смещению), а потом пытаться сделать инъекцию так, чтобы не сломать многопоточные приложения.
Я тоже как-то баловался с инъекцией в живые процессы. Было очень познавательно постараться найти адрес dlopen(), честно разбирая ELF-образ в памяти (вместо прыжка вслепую по смещению), а потом пытаться сделать инъекцию так, чтобы не сломать многопоточные приложения.
0
Да, вы правы.
ловит и логины и пароли.
sudo strace -p $SSHD_PID -f -e read
ловит и логины и пароли.
0
Если не ошибаюсь, для отладки нужен root. Так root может и бинарник sshd подменить на свой, с логированием.
+2
Если не ошибаюсь, для отладки нужен root. Так root может и бинарник sshd подменить на свой, с логированием.
0
На самом деле материал очень интересный. ssh тут скорее как пример. Мне интересно, а нету ли никаких библиотек, а ля detours или easyhook под винду, только под линукс для создания трамплинов и восстановления прологов в автоматическом режиме? Или всё ручками?
0
Sign up to leave a comment.
Введение в ptrace или инъекция кода в sshd ради веселья