Синтетический закат. Проходим виртуалку Sunset decoy, чтобы отточить навыки пентеста

В этой статье я расскажу, как решать CTF-задачку Sunset: decoy, которую ты можешь скачать с VulnHub. Повторив прохождение этой виртуалки вместе со мной, ты потренируешься подбирать пароли по хешам, мониторить процессы Linux без прав root, эксплуатировать уязвимости и передавать файлы через бэк-шелл.

Об авторе

Автор этой статьи — пентестер из команды FBK CyberSecurity. Это часть крупнейшей российской аудиторско-консалтинговой группы ФБК (Финансовые и бухгалтерские консультанты). Компания специализируется на услугах в области практической информационной безопасности.

Автор задачки — whitecr0wz, а опубликована она была 7 июля 2020 года. Машина предназначена для начинающих, поэтому и прохождение будет недлинным. Зато по пути я постараюсь разъяснить все шаги и рассказать об используемых утилитах. Мы проэксплуатируем известную уязвимость, чтобы повысить привилегии и прочитать файл в каталоге root.

Загруженная виртуальная машина

Не буду описывать подключение и запуск виртуальной машины, это уже делали мои коллеги в статье «Захват Ваканды. Ломаем виртуальную машину с VulnHub». Начнем с разведки, а точнее — с запуска утилиты netdiscover.

Netdiscover — простой инструмент обнаружения (ARP-сканер), который удобно использовать для поиска «живых» хостов в сети без конфигурации IP-адреса сетевого интерфейса.

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

Целевая машина decoy находится с нами в одной подсети, поэтому просто пишем netdiscover.

Обнаруженные сетевые адреса

Теперь мы знаем целевой IP-адрес — это 192.168.1.123. Следующим шагом сканируем хост и ищем открытые порты и запущенные сервисы. Просканируем порты популярной утилитой Nmap.

nmap -sV -sC -O -p - 192.168.1.123

Вот что значат наши ключи:

  • -sV — вывести версии обнаруженных служб;
  • -sC — использовать базовый набор скриптов для получения расширенной информации;
  • -O — определить версию ОС;
  • -p — сканировать весь диапазон портов от 0 до 65 535.

Результат сканирования всех портов утилитой Nmap

После полного сканирования хоста мы получим два открытых порта:

  • 22 — OpenSSH Server 7.9p1;
  • 80 — Apache httpd 2.4.38.

Начнем изучать целевую машину с веб-службы Apache. Заглавная страница на 80-м порте выдает нам индекс каталога.

Содержимое индексной страницы веб-сайта

Скачиваем единственный файл save.zip и пытаемся распаковать его. В результате узнаем, что он защищен паролем.

Содержимое архива save.zip

Чтобы получить доступ к содержимому, нужно подобрать пароль. Для этого нам нужна хеш-сигнатура файла. На помощь приходит вспомогательная утилита zip2john из состава пакета John the Ripper.

Выполнение утилиты zip2john

К сожалению, программа выдает хеш, совместимый только с «Джоном» (формат PKZIP), использовать его в моем любимом hashcat не удастся — он любит формат WinZIP.

Кто-то предпочтет другие утилиты, но, по моему опыту, на реальных проектах с длинными паролями hashcat выручает чаще. В данном же случае взлом пароля не вызовет трудностей, поскольку он тривиален и с легкостью поддается перебору по универсальному словарю rockyou (он входит в любой современный наступательный дистрибутив Linux вроде Kali и Parrot).

Успешный подбор пароля по словарю

Если же рассуждать о буднях пентестера в реальных условиях, то рекомендую обратить внимание на более увесистые словари. Например, в crackstation.txt.gz содержится 15 Гбайт реальных утечек, а в hashkiller-dict.7z еще 1,5 Гбайт.

Теперь можем распаковать архив и ознакомиться с его содержимым.

Успешная распаковка архива при помощи пароля

Содержимое распакованной папки etc не представляет особого интереса, кроме файла shadow. В нем содержится наименование учетных записей системы и хеши паролей. Попробуем подобрать пароль для какого-либо пользователя и подключиться к ранее обнаруженному порту 22 по SSH.

Выведем командой cat содержимое файла shadow и отфильтруем при помощи grep пользователей для перебора.

Если написать grep -v "*", то увидим все строки, в которых нет звездочек, то есть пользовательские, а не служебные учетные записи.

Выводим хеши паролей пользователей

Учетная запись systemd-coredump к делу тоже не относится, поэтому остаются только пользователи root и некто с длинным буквенно-цифровым логином.

Источник: xakep.ru

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *