1

strace/dtrace/ltrace ... полезен для многих вещей, от поиска скрытых нарушений доступа до трассировки сетевых сокетов, но, возможно, он не может видеть все.

Я не смог выяснить, используя strace (он снова возник, когда я пытался ответить на другой вопрос сегодня), где sudo выделяет и сохраняет незашифрованные пароли в системной памяти. Связанный вопрос связан, если это новость для вас.

Наиболее близкий, который я получил, с такими следами (это может быть плохой пример, используя сложенное sudo; я пробовал несколько вещей):

$ sudo strace -ff -o mem sudo -s
Enter password...

строки такие:

mem.14471:stat("/etc/profile.d/gnome-ssh-askpass.sh", {st_mode=S_IFREG|0644, st_size=70, ...}) = 0
mem.14471:access("/etc/profile.d/gnome-ssh-askpass.sh", R_OK) = 0
mem.14471:open("/etc/profile.d/gnome-ssh-askpass.sh", O_RDONLY) = 3
mem.14471:read(3, "SSH_ASKPASS=/usr/libexec/openssh"..., 70) = 70

и я полагаю, что пытался отследить их по отдельности, даже заменив переменную env в /usr /libexec /openssh-askpass своим собственным strace, но безрезультатно.

Я умею читать и декодировать строки; Я могу следить за назначенными дескрипторами, кодами возврата и распределением памяти. Чего я не могу найти, так это разветвления, которое выделяет и сохраняет пароль sudo (до 7 раз) в памяти, пока sudo активен. Подтверждение резидентности пароля осуществляется с помощью LiME Forensics, примененной к CentOS.

В качестве альтернативы, будет ли лучший подход, как итерация распределения памяти процесса?

1 ответ1

3

Strace не собирается показывать что-либо более конкретное, чем это. Самое близкое, что вы можете получить, это вызовы brk() или mmap(MAP_ANONYMOUS) которые glibc использует для захвата целой новой области памяти. Остальные не используют системные вызовы, просто прямой доступ к памяти.

Вы можете попробовать ltrace для вызовов библиотеки пользователя.

Или просто найдите запрос пароля в исходном коде и посмотрите, что произойдет с его результатами. Добавьте несколько printf() для отображения адресов памяти.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .