Во-первых, что такое соревнования CTF?

Capture the Flag (CTF) - это особый вид соревнований по информационной безопасности. Есть три общих типа CTF: Jeopardy, Attack-Defense и смешанные.

CTF в стиле Jeopardy содержат несколько вопросов (задач) в разных категориях. Например, Web, Forensic, Crypto, Binary или что-то еще. За каждую решенную задачу команда может набирать очки. Обычно больше очков за более сложные задачи. Следующая задача в цепочке может быть открыта только после того, как какая-то команда решит предыдущую задачу. По истечении игрового времени сумма очков показывает вам победителя CTF.

Защита от атак - еще один интересный вид соревнований. Здесь у каждой команды есть своя сеть (или только один хост) с уязвимыми сервисами. У вашей команды обычно есть время для исправления ваших сервисов и разработки эксплойтов. Итак, организаторы подключают участников конкурса, и варгейм начинается! Вы должны защищать свои службы для очков защиты и взламывать противников для очков атаки. Исторически это первый вид CTF, все знают о DEF CON CTF - что-то вроде Кубка мира из всех других соревнований.

Смешанные соревнования могут отличаться возможными форматами. Это может быть что-то вроде варгейма с особым временем для элементов, основанных на задачах.

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

1. Обратный инжиниринг: я настоятельно рекомендую вам получить копию IDA Pro. Доступна бесплатная версия, а также студенческая лицензия со скидкой. Попробуйте несколько упражнений с крэком. Напишите свой собственный код C, а затем измените скомпилированные версии. Повторите этот процесс, изменяя параметры компилятора и логику программы. Чем оператор «if» отличается от оператора «select» в вашем скомпилированном двоичном файле? Я предлагаю вам изначально сосредоточиться на одной архитектуре: x86, x86_64 или ARM. Прочтите руководство к процессору для того, что вы выберете. Книжные рекомендации включают:

›Практический обратный инжиниринг

›Реверсирование: секреты обратного инжиниринга

›Книга IDA Pro

2. Программирование в стиле ACM: выберите язык высокого уровня. Я рекомендую Python или Ruby. Что касается Python, прочтите «Погружение в Python» (бесплатно) и найдите любимый проект, в котором вы хотите участвовать. Стоит отметить, что Metasploit написан на Ruby. Классы информатики, посвященные алгоритмам и структурам данных, также будут иметь большое значение в этой категории. Посмотрите на прошлые задачи по программированию на CTF и других соревнованиях - сделайте их! Сосредоточьтесь на создании рабочего решения, а не на самом быстром или элегантном решении, особенно если вы только начинаете.

3. Уязвимости в Интернете. Существует множество технологий веб-программирования. Наиболее популярными в CTF являются PHP и SQL. Сайт php.net - отличный справочник по языку. Просто найдите любую интересующую вас функцию. После PHP следующий наиболее распространенный способ увидеть представленные веб-задачи - это скрипты Python или Ruby. Заметили совпадение навыков? Есть хорошая книга по веб-уязвимостям - The Web Application Hacker’s Handbook. Помимо этого, после изучения некоторых базовых методов вы также можете подумать о приобретении опыта в некоторых из наиболее популярных доступных бесплатных инструментов. Иногда они полезны и в соревнованиях CTF. По моему опыту, эта категория также часто пересекается с криптографией.

4. Бинарные упражнения: это мое личное любимое занятие. Я рекомендую вам пройти обратный инжиниринг, прежде чем приступать к бинарным упражнениям. Есть несколько распространенных типов уязвимостей, которые вы можете изучить изолированно: переполнение стека, переполнение кучи и ошибки форматной строки для начинающих. Во многом это тренирует ваш разум распознавать уязвимые модели. Анализ прошлых уязвимостей - отличный способ уловить эти закономерности. Вы также должны прочитать:

›Взлом: искусство эксплуатации

›Справочник Shellcoders

›Искусство оценки безопасности программного обеспечения

5. Криминалистика: я предлагаю вам научиться использовать шестнадцатеричный редактор 010 и не бояться делать абсурдные, дикие, случайные предположения относительно того, что может происходить в некоторых из этих проблем.

6. Криптография: попробуйте использовать базовую терминологию и концепции, чтобы, когда вы читаете о хешировании, взломе беспроводных сетей или взломе паролей и технологиях шифрования. Существует очень специализированный язык для криптографии и шифрования. Такие термины, как шифр, открытый текст, зашифрованный текст, пространство ключей, размер блока и коллизии, могут сделать изучение криптографии немного запутанным и ошеломляющим для новичка. Я буду использовать термин «столкновение», поскольку в простом английском языке нет другого слова, которое могло бы его заменить.



Книги:

›Прикладная криптография

›Практическая криптография

›Криптография I

Источник - GOOGLE.