Предисловие (дисклеймер)
Всем доброго времени суток! Этот цикл статей берет свое начало в силу моей заинтересованности данной сферой, а также в силу развития как мягких, так и сложных навыков. Мы будем разбирать уязвимые машины на HTB как для повышения своей компетенции, так и просто в целях самообразования и развития общей эрудиции. В этих разборах поначалу я буду расписывать все максимально подробно для новичков: почему используем именно эту утилиту, флаги утилиты, какие еще вектора атак имели место и тому подобное. После прохождения блока Starting Point я буду думать, что у читателя уже заложился некоторый фундамент взлома машинок, и статьи будут становиться лаконичнее.
Под новичками я понимаю людей, которые пришли в данную сферу не с около нулевым багажом знаний, а с некоторыми базовыми навыками такими как: основы сетей, Linux, OWASP TOP 10 и другие. Ведь нам необходимо не просто научиться решать данные машины по некоторой методологии, а с умом и пониманием оценивать те вектора атак, которые заложены в них для дальнейшего предотвращения подобного рода атак на реальной работе.
Attack is the best form of defence
Возможно, не стоило начинать с HTB, поскольку она считается довольно сложной для начинающих, и можно было начать с более легких площадок по типу THM, но больно мне приглянулась данная платформа в силу разнообразия задач и удобства, и я постараюсь в этом цикле рассказать все максимально доступно.
Приветствуется конструктивная критика как от чайников, так и от самоваров в этой сфере. Также прошу сильно не судить, поскольку сам являюсь новичком в этом ремесле.
План работы в этом цикле следующий:
Starting Point
Machines (easy)
Machines (medium)
Замечание: в данном цикле будут рассматриваться исключительно машины на базе Unix.
После вступительных слов, думаю, можно переходить к непосредственному разбору машины.
Настоящий дисклеймер
Все техники и инструменты из этой статьи используются исключительно в образовательных целях и не могут применяться на реальной инфраструктуре без соответствующего согласования.
Разбор машины "Meow"
![Машина "Meow" и теги к ней Машина "Meow" и теги к ней](https://habrastorage.org/getpro/habr/upload_files/a77/30f/a04/a7730fa0435523eadc14ec1a1a3d6099.png)
Просмотрев теги, можно сделать вывод, что в этой машине заложена уязвимость неправильной конфигурации в протоколе Telnet.
Для дальнейшей работы с машиной нам необходимо подключиться к ней по VPN. Это можно сделать с помощью openvpn
: скачиваете конфигурационный файл с HTB на свою виртуальную машину (Kali Linux), в терминале запускаем утилиту openvpn от sudo, в аргументе которой указываем скачанный файл. В случае успешного подключения в конце логов будет строка «Initialization Sequence Completed»
. Если подключиться не получается, проверьте, что в вашей ВМ в настройках сети стоит сетевой мост.
После подключения к VPN нам будет предложено запустить атакуемую машину:
![](https://habrastorage.org/getpro/habr/upload_files/4c3/21d/0f8/4c321d0f8460423582c61e46ef7a931c.png)
После запуска машины будет предложен её IP-адрес, который потребуется для работы с ней.
Переходим к первому вопросу:
Методология обучения в Starting Point представляет собой пошаговое решение предложенной машины, то есть на каждом шаге будет задаваться вопрос, и вам необходимо найти/дать на него ответ. Все эти таски составлены таким образом, чтобы привести вас к решению машины. В самом конце этих вопросов обычно необходимо предоставить флаг пользователя и рута. В этот момент вы должны резюмировать всю полученную ранее информацию из этих вопросов и составить логическую цепочку, приводящую к флагам.
![Вопрос 1 Вопрос 1](https://habrastorage.org/getpro/habr/upload_files/80c/c5d/772/80cc5d77267b0cf78a65ec54e410b40a.png)
В первом вопросе нас спрашивают про аббревиатуру «VM». Я думаю, для всех это очевидно, если кому-то не очевидно, взгляните на шаблон ответа. Имеется ввиду Virtual Machine.
Вводим ответ и переходим к следующему заданию:
![Вопрос 2 Вопрос 2](https://habrastorage.org/getpro/habr/upload_files/840/371/693/8403716939cb9cab137b4aef4f2e1a36.png)
Во втором вопросе нас спрашивают, какой инструмент мы используем для администрирования OC через командную строку. Если вы работали с Linux, то знаете, что инструмент командной строки там называется «Terminal».
Следующий таск:
![Вопрос 3 Вопрос 3](https://habrastorage.org/getpro/habr/upload_files/fd0/bd1/3e0/fd0bd13e08b61fbecb372bf7dae08f71.png)
Спрашивается об инструменте, с помощью которого мы подключились к HTB labs. Чуть ранее я уже проспойлерил, так что ответ: «openvpn».
Переходим к следующему заданию:
![Вопрос 4 Вопрос 4](https://habrastorage.org/getpro/habr/upload_files/8f0/858/7dc/8f08587dc99d31a4aa46048b06d155cd.png)
В этом задании спрашивается об аббревиатуре туннельного интерфейса. Для решения просмотрим сетевую конфигурацию нашей системы с помощью утилиты ip
:
![Частичный вывод команды ip a Частичный вывод команды ip a](https://habrastorage.org/getpro/habr/upload_files/052/c98/308/052c98308fa13cbb5dfee5a8528b1e04.png)
ip a
Отсюда видно название сетевого интерфейса, который используется для подключения к VPN: tun0.
Переходим на следующий вопрос:
![Вопрос 5 Вопрос 5](https://habrastorage.org/getpro/habr/upload_files/600/40f/0a9/60040f0a9963a28609bb6c9791d19df7.png)
В этом таске нас спрашивают об инструменте, который используется для проверки соединения с машиной с помощью протокола ICMP. Я беру за аксиому, что вы знакомы с основами сетей, так что данный вопрос не должен вызывать трудностей. Очевидно, что речь идет об общеизвестной утилите ping
, которая используется для отправки echo request
и приёма echo reply
.
Даем ответ и двигаемся дальше:
![Вопрос 6 Вопрос 6](https://habrastorage.org/getpro/habr/upload_files/5db/122/2af/5db1222afdcb3143dd1fa4a013d5f48e.png)
Здесь спрашивается о самом распространенном инструменте для сканирования открытых портов на целевой машине. Обратимся за помощью к Google:
![](https://habrastorage.org/getpro/habr/upload_files/39c/fde/46c/39cfde46c0670ebcb0816dce0956bca0.png)
Google выдал нам инструмент под названием Nmap
. Действительно, данный инструмент возглавляет список всех сетевых сканеров и является наиболее популярным среди них. Эта утилита может стать очень серьезным инструментом в руках опытного специалиста.
Даем ответ и едем дальше:
![Вопрос 7 Вопрос 7](https://habrastorage.org/getpro/habr/upload_files/664/895/526/66489552621cf287e5ab10f88a835325.png)
Теоретические вопросы кончились — переходим к практическим. Здесь нас спрашивают о названии сервиса, который поднят на 23 порту целевой машины. Для решения воспользуемся инструментом, о котором велась речь в предыдущем вопросе:
![Демонстрация работы утилиты nmap Демонстрация работы утилиты nmap](https://habrastorage.org/getpro/habr/upload_files/804/925/840/804925840e670dbae69d7a5a017b2c2f.png)
nmap
Пояснение команды:
аргументом утилиты выступает 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».
Вводим ответ и переходим к следующему вопросу:
![Вопрос 8 Вопрос 8](https://habrastorage.org/getpro/habr/upload_files/010/5af/a98/0105afa9827c7c3a17cb674e56f564e2.png)
Дальше нас спрашивают под каким логином можно войти по telnet в систему без пароля. Здесь нужно вспомнить о том, какая уязвимость была заложена в данную машину — неправильна конфигурация. Она как раз и является слабым звеном в данной тачке. Какие в таком случае могут быть вектора атак? В вопросе кроется подсказка: можно войти с помощью пустого пароля. На лицо признак мисконфига со стороны людей, отвечающих за безопасность машины.
Таким образом, можно попытаться перебрать различные популярные логины по типу: admin
, administrator
, root
и так далее:
![Успешная попытка входа в систему по протоколу telnet Успешная попытка входа в систему по протоколу telnet](https://habrastorage.org/getpro/habr/upload_files/796/80f/599/79680f599cc2d18dd14ec0bac6edf212.png)
Команда telnet принимает два аргумента:
IP-адрес хоста
Порт, на котором запущена служба (если не указывать, то по умолчанию считается 23 порт)
Как видно из скриншота выше, первые две учетные записи не подошли, а УЗ с логином root
оказалась без пароля.
Отвечаем на вопрос и переходим к заключительному таску:
![Финальный вопрос Финальный вопрос](https://habrastorage.org/getpro/habr/upload_files/447/ba6/d0c/447ba6d0c717f7ae090eddeacb8c227a.png)
Предлагается найти флаг рута. Это не вызовет проблем, поскольку мы уже авторизованы под записью суперпользователя. Задача сводится к обычному поиску:
![Получение флага Получение флага](https://habrastorage.org/getpro/habr/upload_files/eb1/036/f81/eb1036f816c03273a41d795f0a56ab94.png)
Оказалось все проще: флаг лежал в домашней директории. На этом данную машину можно считать пройденной — полный доступ к системе был успешно получен.
Заключение
На этом первая статья в этом цикле подходит к концу. Сегодня мы рассмотрели простейшую машинку, уязвимость которой заключалась в неправильной конфигурации протокола telnet.
Я крайне надеюсь, что данная статья была кому-либо полезна, и кто-нибудь открыл для себя что-то новое. Пишите свои пожелания, критику и просто оставляйте фидбэк от прошедшего занятия — мне будет приятно видеть обратную связь.
В следующей статье будет разбор машины «Fawn», где поработаем с протоколом FTP.
До скорой встречи!