Добро пожаловать обратно, кибервоины! В сегодняшней статье мы рассмотрим реальный случай взлома, который стал возможен благодаря цифровой криминалистике. Во время одного из недавних расследований мы обнаружили машину, находящуюся за пределами основного домена. К сожалению, в этой системе не было ни учётных данных, которые можно было бы сразу использовать, ни путей доступа для горизонтального перемещения. Наша команда испробовала различные методы извлечения учётных данных, от стандартного анализа SAM до анализа файлов журналов и общей проверки файлов. В конце концов, мы обнаружили ценный актив, спрятанный на одном из подключённых дисков — виртуальном диске.
Те, кто читал нашу предыдущую статью о взломе домена посредством криминалистического анализа старого образа Windows, наверняка помнят, насколько полезными могут быть такие подходы. Та же логика применима и к системам Linux. Даже если рассматриваемая машина неактивна, взлом старых учётных данных всё равно может обеспечить горизонтальное перемещение, если используется повторное использование паролей.
Давайте рассмотрим, как мы извлекли, проанализировали и в конечном итоге скомпрометировали эту виртуальную машину Linux.
Виртуальный диск находился на вторичном диске хоста Windows. Из-за ограниченного места на диске и во избежание сбоя работы системы мы решили перенести диск в нашу лабораторию для анализа.
Один из надёжных способов передачи файлов из сеанса RDP — через облачный сервис Mega. Используя временный адрес электронной почты, вы можете анонимно создать учётную запись Mega.
Mega предоставляет 20 ГБ бесплатного хранилища на аккаунт, чего вполне достаточно. Если вам нужно больше, можно приобрести дополнительные аккаунты или оформить платный тариф.
После успешной загрузки файла мы открыли VMWare и импортировали его. В данном случае это был файл .vmdk , который изначально поддерживается VMWare.
В процессе импорта VMWare запросит имя виртуальной машины и автоматически создаст папку в локальной среде. В процессе импорта иногда могут возникать ошибки. В этом случае нажатие кнопки «Повторить» обычно решает проблему.
После успешного импорта виртуальной машины мы попытались её загрузить. Машина запустилась как и ожидалось, но появился экран входа с запросом учётных данных.
На этом этапе у вас может возникнуть соблазн вручную подобрать слабые пароли, но более систематический подход предполагает распаковку виртуального диска для непосредственной проверки файловой системы.
Файл .vmdk можно распаковать с помощью 7-Zip . Для этого выполните следующую команду в PowerShell:
P.S. > & «C:\Program Files\7-Zip\7z.exe» x .\vmc-disk1.vmdk -oC:\VM-Extract -y
Это извлечет содержимое виртуального диска в новую папку VM-Extract на диске C. В данном случае мы получили три файла образов дисков. Следующим шагом было монтирование этих образов для доступа к их содержимому.
Монтирование файловых систем Linux в Windows
Поскольку Windows по умолчанию не может интерпретировать файловые системы Linux, попытка их монтирования нативно приводит к ошибке или запросу на форматирование диска. Чтобы избежать этого, мы использовали DiskInternals Linux Reader — бесплатный инструмент, который может интерпретировать и монтировать файловые системы на базе EXT.
После запуска инструмента перейдите в раздел Диски > Подключить образ , выберите опцию Необработанные образы дисков , а затем выберите все извлеченные файлы образов.
После завершения вы увидите файловую систему Linux в интерфейсе Linux Reader, что позволит вам перемещаться по ее структуре.
Первоначальный анализ
Получив доступ к смонтированной файловой системе, нашей первой целью было восстановить сохранённые учётные данные. Системные администраторы часто используют пароли повторно, поэтому даже устаревшие учётные данные могут предоставить возможность для горизонтального перемещения. Кроме того, в системах Linux часто отсутствует комплексный инструментарий безопасности, что делает их идеальными для обеспечения долгосрочного сохранения данных.
Мы начали с поиска файла /etc/shadow , в котором хранятся хеши паролей. В этой системе использовался алгоритм хеширования yescrypt — современный и безопасный алгоритм, который в настоящее время не поддерживается Hashcat. Однако John the Ripper его поддерживает, и мы скоро к этому вернёмся.
Затем мы экспортировали файл .bash_history из каталогов /home/user/ и /root/ . Этот файл хранит историю команд пользователя и часто включает IP-адреса, сведения о выполнении скриптов, а иногда даже пароли в открытом виде. Если Linux Reader не может отобразить файл из-за ограничений по размеру, щёлкните правой кнопкой мыши и экспортируйте его на хост Windows для корректной проверки.
Помимо истории bash, ещё одним хорошим объектом для поиска является каталог crontab. Некоторые задания cron используют встроенные в скрипты учётные данные для автоматизированных задач, которые также можно использовать для доступа.
Поскольку Hashcat в настоящее время не поддерживает YesCrypt, мы решили использовать John the Ripper. Синтаксис прост:
kali > sudo john –format=crypt –wordlist=rockyou.txt hashes.txt
Вывод может выглядеть как ошибка, особенно если взломанный пароль — это что-то простое, например «1», но это действительно был правильный пароль для обеих учётных записей пользователей на этой машине. Мы проверили его, и он сработал. Мы успешно вошли в виртуальную машину.
Исследование после доступа
Получив доступ к виртуальной среде, мы приступили к более тщательному исследованию. Первым делом мы проверили историю браузера, а затем сохранённые учётные данные в таких приложениях, как Mozilla Firefox. Мы также проверили журналы аутентификации и журналы сеансов Remmina, которые могли содержать сохранённые учётные данные или информацию об удалённой системе.
Действительно, мы обнаружили сохранённые учётные данные для веб-сервиса в Firefox. Используя эту информацию, мы просканировали внутреннюю сеть на предмет хостов, запускающих тот же сервис. Если такие сервисы доступны, их уязвимость часто может быть взломана либо путём повторного использования учётных данных, либо через уязвимость в самом сервисе. В некоторых случаях это приводит к удалённому выполнению кода и полной компрометации системы.