Предисловие (дисклеймер)
Всем доброго времени суток! Этот цикл статей берет свое начало в силу моей заинтересованности данной сферой, а также в силу развития как мягких, так и сложных навыков. Мы будем разбирать уязвимые машины на HTB как для повышения своей компетенции, так и просто в целях самообразования и развития общей эрудиции. В этих разборах поначалу я буду расписывать все максимально подробно для новичков: почему используем именно эту утилиту, флаги утилиты, какие еще вектора атак имели место и тому подобное. После прохождения блока Starting Point я буду думать, что у читателя уже заложился некоторый фундамент взлома машинок, и статьи будут становиться лаконичнее.Под новичками я понимаю людей, которые пришли в данную сферу не с около нулевым багажом знаний, а с некоторыми базовыми навыками такими как: основы сетей, Linux, OWASP TOP 10 и другие. Ведь нам необходимо не просто научиться решать данные машины по некоторой методологии, а с умом и пониманием оценивать те вектора атак, которые заложены в них для дальнейшего предотвращения подобного рода атак на реальной работе.
Attack is the best form of defence
Возможно, не стоило начинать с HTB, поскольку она считается довольно сложной для начинающих, и можно было начать с более легких площадок по типу THM, но больно мне приглянулась данная платформа в силу разнообразия задач и удобства, и я постараюсь в этом цикле рассказать все максимально доступно.
Приветствуется конструктивная критика как от чайников, так и от самоваров в этой сфере. Также прошу сильно не судить, поскольку сам являюсь новичком в этом ремесле.
План работы в этом цикле следующий:
- Starting Point
- Machines (easy)
- Machines (medium)
После вступительных слов, думаю, можно переходить к непосредственному разбору машины.
Настоящий дисклеймер: все техники и инструменты из этой статьи используются исключительно в образовательных целях и не могут применяться на реальной инфраструктуре без соответствующего согласования.
Разбор машины "Meow"
Просмотрев теги, можно сделать вывод, что в этой машине заложена уязвимость неправильной конфигурации в протоколе Telnet.
Для дальнейшей работы с машиной нам необходимо подключиться к ней по VPN. Это можно сделать с помощью openvpn: скачиваете конфигурационный файл с HTB на свою виртуальную машину (Kali Linux), в терминале запускаем утилиту openvpn от sudo, в аргументе которой указываем скачанный файл. В случае успешного подключения в конце логов будет строка «Initialization Sequence Completed». Если подключиться не получается, проверьте, что в вашей ВМ в настройках сети стоит сетевой мост.
После подключения к VPN нам будет предложено запустить атакуемую машину:
После запуска машины будет предложен её IP-адрес, который потребуется для работы с ней.
Переходим к первому вопросу:
Методология обучения в Starting Point представляет собой пошаговое решение предложенной машины, то есть на каждом шаге будет задаваться вопрос, и вам необходимо найти/дать на него ответ. Все эти таски составлены таким образом, чтобы привести вас к решению машины. В самом конце этих вопросов обычно необходимо предоставить флаг пользователя и рута. В этот момент вы должны резюмировать всю полученную ранее информацию из этих вопросов и составить логическую цепочку, приводящую к флагам.
В первом вопросе нас спрашивают про аббревиатуру «VM». Я думаю, для всех это очевидно, если кому-то не очевидно, взгляните на шаблон ответа. Имеется ввиду Virtual Machine.
Вводим ответ и переходим к следующему заданию:
Во втором вопросе нас спрашивают, какой инструмент мы используем для администрирования OC через командную строку. Если вы работали с Linux, то знаете, что инструмент командной строки там называется «Terminal».
Следующий таск:
Спрашивается об инструменте, с помощью которого мы подключились к HTB labs. Чуть ранее я уже проспойлерил, так что ответ: «openvpn».
Переходим к следующему заданию:
В этом задании спрашивается об аббревиатуре туннельного интерфейса. Для решения просмотрим сетевую конфигурацию нашей системы с помощью утилиты ip :
Отсюда видно название сетевого интерфейса, который используется для подключения к VPN: tun0.
Переходим на следующий вопрос:
В этом таске нас спрашивают об инструменте, который используется для проверки соединения с машиной с помощью протокола ICMP. Я беру за аксиому, что вы знакомы с основами сетей, так что данный вопрос не должен вызывать трудностей. Очевидно, что речь идет об общеизвестной утилите ping, которая используется для отправки echo request и приёма echo reply.
Даем ответ и двигаемся дальше:
Здесь спрашивается о самом распространенном инструменте для сканирования открытых портов на целевой машине. Обратимся за помощью к Google:
Google выдал нам инструмент под названием Nmap. Действительно, данный инструмент возглавляет список всех сетевых сканеров и является наиболее популярным среди них. Эта утилита может стать очень серьезным инструментом в руках опытного специалиста.
Даем ответ и едем дальше:
Теоретические вопросы кончились — переходим к практическим. Здесь нас спрашивают о названии сервиса, который поднят на 23 порту целевой машины. Для решения воспользуемся инструментом, о котором велась речь в предыдущем вопросе:
Пояснение команды:
- аргументом утилиты выступает IP-адрес 10.129.61.42 (в моем случае)
- Флаг -sC сигнализирует инструменту, чтобы тот запускал набор скриптов по умолчанию для сканируемых портов
- Флаг -sV указывает nmap, чтобы он определял версию ПО, используемого на том или ином порте
Сценарии по умолчанию представляют собой набор некоторых скриптов, которые используются nmap во время сканирования каждого порта. Они содержат в себе информационные запросы, проверки на уязвимости, возможности определения версий приложений и тому подобные вещи. К тому же данный флаг позволяет нам задавать набор скриптов автоматически, что может ускорить нашу проверку портов и минимизировать необходимость задания скриптов вручную.
К примеру, если на 22 порту был найден сервис SSH, то с этим флагом nmap запустит скрипт проверки на наличие какой-либо уязвимости в протоколе удаленного доступа. Если на 80 порту работает веб-сервер, то тогда утилита автоматически запустит скрипт, выявляющий уязвимости веб-серверов.
Про принцип определения версий ПО:
Nmap с флагом -sV определяет версии программного обеспечения на различных портах путем отправки зондов (probes) к ним и анализа полученных ответов. Термин probes закрепил за собой nmap, вы можете считать, что это отпечатки пальцев (fingerprinting), по которым как раз и составляется различная информация о том или ином порте.
Существует различное количество зондов, которые могут быть отправлены nmap к тому или иному порту. Я приведу в пример два популярных зонда:
- SYN probe: отправляет SYN-пакет на целевой порт с целью получения ответа, с помощью которого можно определить состояние порта (открыт, закрыт, отфильтрован)
- ACK probe: данный зонд отправляется только с установленным флагом ACK в TCP-заголовке. Этот зонд служит для проверки на фильтрацию порта. Принцип здесь такой: если пакет ACK не заблокирован, то в этом случае nmap получит RST-пакет, указывающего на открытость или закрытость порта. Также это помогает собрать информацию о службах, работающих на портах, то есть флаг -sV использует этот зонд как раз для определения ПО.
Из вывода nmap можно заключить, что на 23 порту запущена служба «telnet».
Вводим ответ и переходим к следующему вопросу:
Дальше нас спрашивают под каким логином можно войти по telnet в систему без пароля. Здесь нужно вспомнить о том, какая уязвимость была заложена в данную машину — неправильная конфигурация. Она как раз и является слабым звеном в данной тачке. Какие в таком случае могут быть вектора атак? В вопросе кроется подсказка: можно войти с помощью пустого пароля. На лицо признак мисконфига со стороны людей, отвечающих за безопасность машины.
Таким образом, можно попытаться перебрать различные популярные логины по типу: admin, administrator, root и так далее:
Команда telnet принимает два аргумента:
- IP-адрес хоста
- Порт, на котором запущена служба (если не указывать, то по умолчанию считается 23 порт)
Отвечаем на вопрос и переходим к заключительному таску:
Предлагается найти флаг рута. Это не вызовет проблем, поскольку мы уже авторизованы под записью суперпользователя. Задача сводится к обычному поиску:
Оказалось все проще: флаг лежал в домашней директории. На этом данную машину можно считать пройденной — полный доступ к системе был успешно получен.
Заключение
На этом первая статья в этом цикле подходит к концу. Сегодня мы рассмотрели простейшую машинку, уязвимость которой заключалась в неправильной конфигурации протокола telnet.Я крайне надеюсь, что данная статья была кому-либо полезна, и кто-нибудь открыл для себя что-то новое. Пишите свои пожелания, критику и просто оставляйте фидбэк от прошедшего занятия — мне будет приятно видеть обратную связь.
В следующей статье будет разбор машины «Fawn», где поработаем с протоколом FTP.
До скорой встречи!