Авторские курсы Михаила Тарасова

Что такое CTF?

6641ed93a6f1970001d2a930

Здравствуйте, дорогие друзья.

CTF (захват флага) — это вид соревнования по информационной безопасности, участники которого пробуют себя в решении различных задач, диапазон которых простирается от поиска информации в Википедии и базовых упражнений по программированию до взлома сервера с последующей кражей данных. В этих соревнованиях участника обычно просят найти определенный фрагмент текста, который может быть скрыт на сервере или за веб-страницей. Эта цель называется флагом, отсюда и название! Как и во многих других соревнованиях уровень навыков участника варьируется между событиями. Некоторые такие мероприятия нацелены на профессионалов, имеющих опыт работы с командой кибербезопасников. В таком случае соревнование может предлагать хорошую финансовую награду и проводиться в определенном месте. Другие мероприятия ориентированы на учащихся старших классов и колледжей, иногда предлагая денежную поддержку для образования тем, кто занимает высокие места в конкурсе. CTF в стиле Jeopardy предоставляют список задач и присуждают очки отдельным лицам или командам, которые выполняют задачи, а группы с наибольшим количеством очков побеждают. CTF в стиле attack/defense сосредоточены либо на атаке серверов противника, либо на защите своих собственных. Хотелось бы отметить, что CTF доступно каждому. Многие испытания не требуют знаний в программировании и легко решаются с помощью креативного мышления.

Виды испытаний:

Задачи CTF в стиле Jeopardy обычно делятся на категории. Мы постараемся кратко осветить главное.

1) Криптография:

Обычно включает в себя шифрование и расшифровку кусочка информации или данных.

2) Стенография:

Задача, включающая в себя поиск информации, скрытой в файлах или изображениях

3) Бинарный поиск:

Реверс-инжиниринг или использование бинарного файла.

4) Веб:

Использование веб страниц, чтобы найти флаг.

5) Pwn(на сленге онлайн-геймеров и хакеров означает превзойти, победить или одержать над кем-то действительно крупную победу):

Использование сервера, чтобы найти флаг.

6) Программирование:

Задачи, которые потребуют кодирования решения на выбранном вами языке программирования. Решать их вручную обычно было бы слишком утомительно или отнимало бы много времени.

7) OSINT (Open Source Intelligence. Разведка в открытом исходном коде):

Поиск ключей, скрытых в Интернет-страницах и платформах.

Инструменты:

1) Python:

Чрезвычайно полезный язык программирования с богатой экосистемой пакетов для добавления функциональности. А также его утилита Pip, используемая для установки дополнительных пакетов.

2) CyberChef:

Это веб-сайт на основе Javascript, помогающий декодировать текст или данные.

3) Boxentriq:

Это еще один веб-сайт с подробным обзором шифров и инструментов анализа.

4) Kali:

Это дистрибутив Linux, который уже включает в себя множество инструментов, полезных для тестирования на проникновение. Дополнительные инструменты можно установить с помощью утилиты apt-get. Вы также можете запустить Kali как виртуальную машину на другом компьютере.

5) Dirb:

Удобный инструмент для сканирования каталогов и файлов на веб-сервере. Или попробуйте Gobuster — аналогичный инструмент, реализованный на языке Go, для повышения производительности.

6) Metasploit:

Это мощный набор эксплойт-инструментов для тестирования на проникновение. Родственный инструмент, Msfvenom, может создавать и кодировать полезную нагрузку эксплойта.

7) Pwntools:

Это фреймворк на основе Python для CTF и разработки эксплойтов.

8) IDA:

Интерактивный дизассемблер и отладчик. Профессиональная версия (IDA Pro) дорогая и мощная.

9) Существует множество вариантов отладчиков, таких как x64dbg, OllyDbg или Immunity. В Linux у вас также есть опция gdb, отладчика Gnu. Чтобы улучшить gdb, вы также можете посмотреть плагины, такие как PEDA или GEF (произносится как «Джефф»).

10) Ваши мозги! Часто лучший анализ строится из длительного и тщательного обдумывания проблемы.

Советы:

Здесь представлены лучшие практические советы, следуя которым вы сможете начать.

  1. Прочтите ключевые правила перед началом и следуйте им. Поймите, что входит в рамки, а что нет. Если данный IP-адрес или порт запрещен, уважайте это. Основные правила могут варьироваться от одного соревнования к другому, но в качестве общего правила: не нарушайте их. Не стесняйтесь использовать ресурсы для решения проблем, но избегайте действий, которые намеренно мешают другим добиться прогресса. CTF предназначены для обучения, поэтому не лишайте других удовольствия от обучения и решения.
  2. Делайте заметки. Запишите важные вещи, которые вы обнаружите, такие как IP-адреса, флаги, номера портов или синтаксис команд. При мозговом штурме новых подходов, чтобы попробовать, пересмотрите то, что вы уже пробовали. Заметки также пригодятся, если вы захотите записать свое решение позже.
  3. Ищете в Интернете. Вы можете найти подсказку (или даже частичное решение), выполнив поиск любой имеющейся у вас информации. Действительно, некоторые типы задач (например, OSINT) требуют этого. Ищите подсказки, спрятанные в материалах, которые кажутся несерьезными, например, в изображениях. Есть ли отсылки к поп-культуре или мемы, которыми можно руководствоваться в своих исследованиях? Если вы в тупике поищите похожие проблемы.
  4. Спрашивайте подсказки и помогайте. Не стесняйтесь протянуть руку или вежливо попросить о помощи.
  5. Отточите свои навыки. Если вы еще не знаете Python, изучите его… он вам хорошо послужит. Если вы уже являетесь экспертом в Python, вы можете использовать CTF как возможность стать более опытным в другом интересующем вас языке, таком как Go или Rust.

Мои курсы