Восстановите учётные данные с привязкой к аккаунтам из старой выгрузки

LinuxBeginner
Практиковаться сейчас

Введение

Общественная организация закрыла портал сотрудников. В упражнении по реагированию появилась синтетическая копия старой выгрузки паролей, а текущий архив продолжает работать. Определите, что действительно восстанавливается предложенными кандидатами, не теряя связь старой записи с человеком.

Вы воспользуетесь работающим архивом, запустите John the Ripper в Kali Linux и создадите закрытый перечень результатов восстановления. Все личности вымышлены. Контейнеры аудитора и цели изолированы и используют общее ядро одной VM. Разрешены только предоставленные файлы и сервис; установка и программирование не нужны.

Требуется уметь вводить команды и распознавать пути. Параметры и файловые операции объясняются в работе. Примерное время с чтением и обычными ошибками — 45 минут; это оценка автора. Следующая пошаговая работа начинается в независимой среде и проверяет текущие последствия.

Откройте архив и защитите результаты

На этом шаге вы увидите обычный доступ до исследования выгрузки. Откройте Auditor. Терминал входит в контейнер аудита Kali под пользователем auditor, в /home/auditor/project. Архив работает в другом контейнере.

SSH — протокол зашифрованного удалённого входа. Этот архив принимает пароли и возвращает только имя аутентифицированного аккаунта, не предоставляя обычную оболочку. Начните с несекретного демонстрационного аккаунта. -p выбирает порт сервиса. Два параметра -o выбирают подготовленный файл ключей сервера и требуют совпадения ключа. Ключ хоста идентифицирует сервер, пароль аутентифицирует вас. Завершающий whoami запрашивает имя удалённого аккаунта.

ssh -o UserKnownHostsFile=/etc/reuse/known_hosts -o StrictHostKeyChecking=yes -p 12222 demo@staff-archive whoami

При запросе demo@staff-archive's password: введите welcome-7 и нажмите Enter. Символы пароля не отображаются. Ожидайте demo, затем локальное приглашение. Не вводите пароль как команду оболочки. При опечатке отмените ввод через Ctrl+C и повторите команду SSH. Ошибка соединения или ключа хоста не означает отказ в учётных данных; не отключайте проверку ключа.

Прочитайте разрешённую область. cat показывает файл; относительный путь начинается в текущем каталоге. В inputs находятся оригиналы только для чтения.

cat inputs/scope.tsv

Разделённые табуляцией столбцы — employee_id, current_login, host и port. Разрешены только эти текущие аккаунты на staff-archive:12222 и demo. Не подбирайте дополнительные имена, хосты или списки кандидатов.

Восстановленные пароли конфиденциальны даже здесь. umask 077 убирает доступ группы и остальных к новым файлам этой терминальной сессии. mkdir -m 700 создаёт каталог, вход в который разрешён только владельцу. Выполните отдельно:

umask 077
mkdir -m 700 findings

findings — ваша область для записи результатов. Если она уже существует после переподключения, сохраните её; в новой сессии повторите umask 077. Команда pwd показывает текущий каталог, а cd /home/auditor/project возвращает сюда при ошибке относительного пути. Сохраняйте все входные файлы, аккаунты архива и их текущие пароли на протяжении аудита.

Восстановите совпадения из предоставленного словаря

На этом шаге вы проверите пять кандидатов по четырём настоящим хешам паролей. Хеш — значение, односторонне полученное из пароля. Автономное восстановление вычисляет хеши кандидатов с сохранёнными настройками и сравнивает их; оно не расшифровывает пароли и не входит в архив.

Оставайтесь в Auditor, в /home/auditor/project. Прочитайте каждый небольшой входной файл:

cat inputs/legacy.txt
cat inputs/candidates.txt

Старые строки имеют формат record_id:hash. $6$ обозначает SHA-512 crypt. Сохранённое значение включает соль, благодаря которой одинаковые пароли дают разные сохранённые значения. Не теряйте идентификатор записи. Этот крошечный синтетический словарь ускоряет упражнение; по его скорости нельзя оценивать стойкость паролей в реальной системе.

Параметр John --format=sha512crypt выбирает формат, а --wordlist читает предоставленных кандидатов. Файл pot хранит восстановленные пары хеш/пароль. --pot выбирает закрытый файл вместо общего по умолчанию. --session задаёт расположение файлов возобновления и журнала запуска. OMP_NUM_THREADS=2 ограничивает рабочие потоки только для этой команды. В этих путях нет пробелов, поэтому кавычки не нужны.

OMP_NUM_THREADS=2 john --format=sha512crypt --wordlist=inputs/candidates.txt --pot=/home/auditor/project/findings/audit.pot --session=/home/auditor/project/findings/recovery inputs/legacy.txt

Дождитесь приглашения. Должны восстановиться три хеша; время и порядок могут отличаться. При повторе No password hashes left to crack может означать, что результаты уже есть в pot, а не что входной файл пуст. --show читает сохранённые результаты без нового запуска восстановления:

john --show --format=sha512crypt --pot=/home/auditor/project/findings/audit.pot inputs/legacy.txt

Ожидайте следующие соответствия, возможно в ином порядке:

portal-17:cedar42
portal-23:pebble7
portal-41:birch81

3 password hashes cracked, 1 left

Экспортируйте реальный вывод. > перенаправляет стандартный вывод в файл, заменяя этот файл результатов при повторе. Хеши не изменяются.

john --show --format=sha512crypt --pot=/home/auditor/project/findings/audit.pot inputs/legacy.txt > findings/recovered.txt
cat findings/recovered.txt

Экспорт должен сохранять идентификаторы записей и восстановленные пароли. Исправьте опечатку в пути и повторите затронутую команду. Если результат доступен другим, chmod 600 findings/recovered.txt вернёт чтение и запись только владельцу; так же можно исправить другой файл результатов. Не распространяйте pot или открытый текстовый экспорт как сводку об инциденте.

Сохраните связь с личностью и неопределённость

На этом шаге вы создадите перечень восстановления без паролей. Оставайтесь в Auditor и прочитайте старый список сотрудников:

cat inputs/legacy-roster.tsv

Он связывает record_id с постоянным employee_id и отображаемым именем. Двух людей зовут Morgan Rivera: portal-17 принадлежит E101, а portal-41 — E103. Имя не позволяет надёжно связать старую запись с текущим логином.

Здесь recovered означает, что исходный хеш совпал с предоставленным кандидатом. not-recovered означает, что ни один кандидат не совпал в этом завершённом ограниченном запуске. Это не означает стойкость, безопасность, отсутствие или отсутствие повторного использования. Принимает ли текущий сервис эти данные, пока неизвестно для каждой записи.

Создайте findings/recovery.tsv со столбцами record_id, employee_id, recovery. printf трактует \t как табуляцию, а \n как перевод строки. Одинарные кавычки сохраняют эти последовательности до чтения командой printf; > создаёт или заменяет этот перечень без паролей.

printf 'record_id\temployee_id\trecovery\nportal-17\tE101\trecovered\nportal-23\tE102\trecovered\nportal-41\tE103\trecovered\nportal-58\tE104\tnot-recovered\n' > findings/recovery.tsv
cat findings/recovery.tsv

Проверьте, что все четыре записи встречаются ровно раз с идентификаторами из списка: три восстановлены, одна остаётся неизвестной за пределами бюджета. Исправьте нужное значение в тексте printf и выполните команду снова. Закрытые pot и экспорт позволяют продолжить разрешённую работу; этот перечень сообщает результат без раскрытия паролей.

Резюме

Вы воспользовались работающим SSH-сервисом, восстановили три синтетических старых пароля с John и сохранили исходные связи с людьми. Закрытые результаты и перечень без паролей отделяют успешные автономные совпадения от ограничений исчерпанного словаря. Пока не доказано, что какой-либо восстановленный пароль работает для текущего аккаунта сотрудника. Следующая пошаговая работа делает этот отдельный вывод с точными разрешёнными парами.