Введение в CTF с использованием платформы TryHackMe

Этот курс предназначен для новичков, желающих погрузиться в мир информационной безопасности через практические задачи Capture The Flag. Вы освоите базовые инструменты, научитесь искать уязвимости и решать задачи на платформе TryHackMe.

1. Начало пути: знакомство с платформой, OpenVPN и основы Linux

Начало пути: знакомство с платформой, OpenVPN и основы Linux

Добро пожаловать в курс «Введение в CTF с использованием платформы TryHackMe». Если вы читаете эту статью, значит, вы решили погрузиться в захватывающий мир информационной безопасности. CTF (Capture The Flag) — это не просто соревнования, это один из самых эффективных способов обучения практическим навыкам хакинга в легальной и безопасной среде.

В этой первой статье мы заложим фундамент, необходимый для прохождения всего курса. Мы разберем, что такое TryHackMe, как настроить рабочее окружение через OpenVPN и изучим базовые команды Linux, без которых невозможно представить работу этичного хакера.

Что такое CTF и платформа TryHackMe?

CTF (Capture The Flag) — это соревнования по информационной безопасности, где участники должны найти «флаг» (обычно это строка текста определенного формата, например, THM{secret_flag}), спрятанный в уязвимой системе, веб-сайте или файле. Чтобы добыть флаг, нужно решить головоломку, взломать сервис или расшифровать данные.

TryHackMe (THM) — это онлайн-платформа, которая превращает обучение кибербезопасности в игру. Вместо скучных лекций вы попадаете в «Комнаты» (Rooms). Каждая комната — это виртуальная лаборатория, посвященная определенной теме: от основ работы с сетью до взлома Active Directory.

Структура обучения на платформе

  • Комнаты (Rooms): Основная единица контента. Бывают обучающие (Walkthrough), где вам дают пошаговые инструкции, и соревновательные (Challenge), где нужно найти решение самостоятельно.
  • Пути обучения (Learning Paths): Наборы комнат, выстроенные в логической последовательности (например, «Junior Penetration Tester»).
  • Машины: Виртуальные компьютеры, которые запускаются в облаке. Вы атакуете их со своего компьютера или через браузер.
  • !Схема подключения пользователя к виртуальным лабораториям TryHackMe через VPN

    Настройка доступа: OpenVPN

    Для выполнения заданий вам необходимо получить доступ к виртуальным машинам внутри сети TryHackMe. Эти машины не доступны из обычного интернета напрямую в целях безопасности. Чтобы «дотянуться» до них, используется технология VPN (Virtual Private Network).

    Зачем нам VPN?

    Когда вы запускаете машину на TryHackMe, ей присваивается внутренний IP-адрес (например, 10.10.15.25). Ваш компьютер не знает, где находится этот адрес, так как он находится в частной сети платформы. OpenVPN создает зашифрованный туннель между вашим компьютером и сетью TryHackMe, позволяя вам обращаться к атакуемым машинам так, будто они находятся в вашей локальной сети.

    Инструкция по подключению

    Для работы мы будем использовать Kali Linux (самый популярный дистрибутив для пентеста) или любую другую Linux-систему. Если у вас Windows, вы можете использовать WSL (Windows Subsystem for Linux) или виртуальную машину.

    Шаг 1: Скачивание конфигурации

  • Зайдите на сайт TryHackMe и авторизуйтесь.
  • Перейдите на страницу доступа (Access).
  • Выберите сервер (обычно выбирается ближайший географически) и нажмите кнопку Download Configuration File. Вы скачаете файл с расширением .ovpn (например, user.ovpn).
  • Шаг 2: Установка OpenVPN

    В большинстве дистрибутивов Linux для безопасности (например, Kali Linux, Parrot OS) OpenVPN уже установлен. Если вы используете чистый Ubuntu или Debian, выполните команду:

    Шаг 3: Запуск соединения

    Откройте терминал (консоль) в папке, куда вы скачали файл конфигурации, и введите следующую команду:

    Здесь user.ovpn — это имя вашего скачанного файла. Команда sudo необходима, так как создание сетевого интерфейса требует прав администратора.

    После запуска вы увидите много строк логов. Если в конце появится надпись Initialization Sequence Completed, значит, соединение установлено успешно. Не закрывайте это окно терминала, пока работаете с платформой.

    > Проверить подключение можно, обновив страницу Access на сайте TryHackMe. Там должна появиться галочка «Connected» и ваш внутренний IP-адрес.

    Основы Linux: Ваш главный инструмент

    Подавляющее большинство серверов в интернете и инструментов для хакинга работают на базе Linux. Умение работать в терминале (Command Line Interface — CLI) — это критически важный навык. В графическом интерфейсе вы ограничены кнопками, которые нарисовал разработчик. В терминале вы ограничены только своими знаниями.

    Давайте разберем базовые команды, которые понадобятся вам для решения первых задач CTF.

    Навигация по файловой системе

    В Linux нет дисков C: или D:. Все начинается с корня, который обозначается символом /. Файловая система представляет собой дерево каталогов.

    !Визуализация иерархии файловой системы Linux

    1. Где я нахожусь?

    Команда pwd (Print Working Directory) показывает полный путь к текущей директории.

    2. Что здесь есть?

    Команда ls (List) показывает содержимое текущей папки.

    * ls — просто список файлов. * ls -l — список с подробной информацией (права доступа, размер, владелец). * ls -a — показать скрытые файлы (в Linux скрытые файлы начинаются с точки, например .config). * ls -la — комбинация предыдущих ключей (часто используется в CTF для поиска скрытых флагов).

    3. Как перейти в другую папку?

    Команда cd (Change Directory) используется для перемещения.

    * cd Documents — перейти в папку Documents (если она есть в текущей директории). * cd /etc/openvpn — перейти по абсолютному пути. * cd .. — подняться на уровень выше (назад). * cd ~ — вернуться в домашнюю директорию пользователя.

    Работа с файлами

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

    1. Чтение содержимого

    Команда cat (Concatenate) выводит содержимое файла на экран.

    Если файл очень большой, cat выведет его весь, и начало улетит вверх. В таких случаях используют:

    * less file.txt — позволяет листать файл стрелками (выход на клавишу q). * head file.txt — показывает первые 10 строк. * tail file.txt — показывает последние 10 строк.

    2. Создание файлов и папок

    * touch newfile.txt — создает пустой файл. * mkdir my_folder — создает новую директорию (Make Directory).

    3. Копирование и перемещение

    * cp source.txt dest.txt — копирует файл (Copy). * mv file.txt folder/ — перемещает файл (Move). Также используется для переименования: mv old.txt new.txt.

    4. Удаление

    Будьте осторожны с этими командами, в Linux нет корзины при удалении через терминал!

    * rm file.txt — удаляет файл (Remove). * rm -r folder — удаляет папку и все ее содержимое (Recursive).

    Права суперпользователя

    В Linux есть обычные пользователи и суперпользователь (root), который может делать всё. Для выполнения административных задач (установка программ, редактирование системных файлов) используется команда sudo (SuperUser DO).

    Система попросит ввести пароль вашего пользователя. Обратите внимание: при вводе пароля в терминале символы не отображаются (даже звездочки). Это сделано для безопасности. Просто введите пароль и нажмите Enter.

    Поиск информации

    Одна из самых важных команд для новичка — man (Manual). Она открывает справку по любой команде.

    Это откроет подробное руководство по команде ls, где описаны все возможные ключи и опции. Умение читать man-страницы отличает профессионала от любителя, который просто копирует команды из интернета.

    Практический пример: Поиск первого флага

    Представьте, что вы подключились к машине на TryHackMe. Вы открыли терминал. Ваши действия могут выглядеть так:

  • Проверяем, где мы: pwd -> /home/user.
  • Смотрим файлы: ls -> видим flag.txt и task.zip.
  • Пытаемся прочитать флаг: cat flag.txt -> Permission denied (Отказано в доступе).
  • Смотрим права доступа: ls -l flag.txt -> видим, что файл доступен только пользователю root.
  • Пробуем прочитать с правами суперпользователя: sudo cat flag.txt.
  • Получаем заветную строку: THM{l1nux_pr1v1l3g3s_rull3z}.
  • Заключение

    Сегодня мы сделали первый шаг. Мы разобрались, как устроена платформа TryHackMe, настроили безопасное соединение через OpenVPN и освоили базовый набор команд Linux. Эти команды — ваш алфавит. Без них невозможно написать «поэму» эксплойта или прочитать «историю» логов.

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

    2. Сетевая разведка и сканирование портов с помощью Nmap

    Сетевая разведка и сканирование портов с помощью Nmap

    В предыдущей статье мы подготовили наш арсенал: настроили Kali Linux, подключились к сети TryHackMe через OpenVPN и освоили базовые команды терминала. Теперь, когда мы находимся внутри сети, перед нами встает главный вопрос: «А что именно мы будем взламывать?».

    Хакинг — это не слепой перебор паролей. Это методичный процесс, и его первый, самый важный этап — разведка (Reconnaissance). Сегодня мы изучим инструмент, который является стандартом индустрии для сетевого сканирования — Nmap.

    Что такое сетевая разведка?

    Представьте, что вы грабитель (конечно, только в рамках обучения!), который хочет проникнуть в дом. Вы не будете сразу ломать первую попавшуюся дверь. Сначала вы обойдете дом вокруг, посмотрите, какие окна открыты, есть ли собака в будке, какая стоит сигнализация и кто живет в доме.

    В кибербезопасности дом — это сервер (целевая машина), а окна и двери — это порты.

    IP-адреса и Порты

    Чтобы понять, как работает Nmap, нужно вспомнить основы сетей.

    IP-адрес — это адрес дома на улице (например, 10.10.15.25). Он указывает, где* находится компьютер. Порт — это номер квартиры или конкретной двери в этом доме. Он указывает, какой сервис* (программа) принимает соединение.

    Всего на одном IP-адресе может быть доступно огромное количество портов. Их количество определяется формулой:

    где — общее количество доступных портов, — основание двоичной системы счисления, а — количество бит, отведенных под номер порта в заголовке пакета. Это означает, что номера портов варьируются от 0 до 65535.

    Некоторые порты являются стандартными (Well-known ports):

    * 21: FTP (передача файлов) * 22: SSH (удаленное управление, то, чем мы часто пользуемся) * 80: HTTP (веб-сайты) * 443: HTTPS (защищенные веб-сайты)

    Задача Nmap — «постучаться» в эти порты и узнать, какие из них открыты, и кто за ними «живет».

    Знакомство с Nmap

    Nmap (Network Mapper) — это мощная утилита с открытым исходным кодом для исследования сети и аудита безопасности. Она умеет:

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

    Самая простая команда выглядит так:

    Например, если вы запустили машину на TryHackMe и получили IP 10.10.10.10, команда будет:

    В ответ вы получите список портов со статусами:

    * Open (Открыт): Программа слушает порт и готова к соединению. Это наша главная цель. * Closed (Закрыт): Порт доступен, но на нем нет слушающей программы. * Filtered (Фильтруется): Nmap не может определить, открыт порт или нет, так как пакеты блокируются фаерволом (брандмауэром).

    Типы сканирования: Как стучаться вежливо и не очень

    Nmap может взаимодействовать с портами по-разному. Понимание этих различий критически важно для прохождения CTF и реального пентеста.

    !Сравнение полного TCP-соединения и скрытного SYN-сканирования

    1. TCP Connect Scan (-sT)

    Это самый базовый тип сканирования. Nmap выполняет полное «трехэтапное рукопожатие» (TCP 3-way handshake) с целевым портом.

  • Nmap посылает SYN.
  • Сервер отвечает SYN-ACK (если порт открыт).
  • Nmap посылает ACK и сразу закрывает соединение.
  • Плюсы: Не требует прав суперпользователя (root). Минусы: Очень «шумный» метод. Он оставляет явные следы в логах сервера, так как соединение было установлено полностью.

    2. TCP SYN Scan (-sS) — «Стелс» сканирование

    Это режим по умолчанию, если вы запускаете Nmap через sudo. Его часто называют «полуоткрытым» сканированием.

  • Nmap посылает SYN.
  • Сервер отвечает SYN-ACK.
  • Nmap не посылает ACK, а сразу отправляет RST (Reset), обрывая соединение.
  • Так как соединение не было установлено до конца, многие простые системы логирования не записывают этот факт. Это быстрее и незаметнее.

    Важно: Для этого типа сканирования требуются права root, так как Nmap приходится вручную формировать «сырые» сетевые пакеты.

    3. UDP Scan (-sU)

    Не все сервисы работают по протоколу TCP. DNS (53), SNMP (161) и DHCP используют UDP. Сканирование UDP значительно медленнее и сложнее, так как протокол UDP не подразумевает обязательного ответа от сервера.

    Получение детальной информации

    Просто знать, что порт 80 открыт — мало. Нам нужно знать, что именно там работает: Apache, Nginx или IIS? И какой версии? Старые версии часто содержат уязвимости.

    Определение версий сервисов (-sV)

    Флаг -sV (Service Version) заставляет Nmap не просто проверить порт, а пообщаться с сервисом и попытаться узнать его версию по баннерам и ответам.

    Определение операционной системы (-O)

    Флаг -O (OS Detection) анализирует особенности ответов сетевого стека (например, как именно формируются пакеты TTL и Window Size), чтобы угадать операционную систему цели (Windows, Linux, Android и т.д.).

    Агрессивное сканирование (-A)

    Если вам лень писать много флагов, используйте -A. Этот режим включает в себя:

    * Определение версий (-sV) * Определение ОС (-O) * Скриптовое сканирование (NSE) * Трассировку маршрута (Traceroute)

    > Используйте -A с осторожностью: это очень активное сканирование, которое генерирует много трафика и легко обнаруживается системами защиты.

    Nmap Scripting Engine (NSE)

    Одна из самых мощных функций Nmap — это движок скриптов. Это набор сценариев на языке Lua, которые могут делать всё: от расширенного сбора информации до автоматического взлома.

    Скрипты делятся на категории:

    * vuln — поиск известных уязвимостей. * auth — попытки подобрать пароли (брутфорс). * default — стандартный набор безопасных скриптов (запускается при -sC или -A).

    Пример запуска скриптов для поиска уязвимостей:

    Оптимизация и сохранение результатов

    Скорость сканирования

    Иногда сканирование идет слишком медленно. Вы можете управлять скоростью с помощью шаблонов тайминга от -T0 (параноидально медленно) до -T5 (безумно быстро).

    Золотой стандарт для CTF — -T4.

    Диапазон портов

    По умолчанию Nmap сканирует только 1000 самых популярных портов. Чтобы просканировать все 65535 портов, используйте флаг -p-.

    Сохранение отчета

    В процессе CTF вы часто будете возвращаться к результатам сканирования. Всегда сохраняйте вывод в файл. Лучший формат — -oA (Output All), который сохранит результаты сразу в трех форматах: нормальном (txt), XML и grepable.

    Практический алгоритм для CTF

    Когда вы начинаете решать задачу на TryHackMe, я рекомендую следующий алгоритм действий:

  • Быстрое сканирование: Проверяем основные порты, чтобы понять, с чем имеем дело.
  • Полное сканирование: Запускаем в фоне сканирование всех портов, чтобы не упустить нестандартные сервисы (например, SSH на порту 2222).
  • Детальное сканирование: Найдя открытые порты, узнаем о них всё.
  • Заключение

    Nmap — это глаза хакера. Без качественной разведки любая попытка атаки превращается в гадание на кофейной гуще. Мы научились находить открытые двери, определять, кто за ними стоит, и делать это разными способами.

    В следующей статье мы перейдем от разведки к активным действиям и рассмотрим основы веб-уязвимостей, так как именно веб-сайты (порт 80/443) чаще всего становятся точкой входа в систему.