Всем привет!

Меня зовут Глеб Санин, аналитик данных R&D-лаборатории Центра технологий кибербезопасности ГК «Солар». В этой статье я попробовал разобраться, поможет ли ИИ в решении заданий на CTF-турнирах и с какими ограничениями можно столкнуться в моменте.

О будущем использовании ИИ в CTF, как улучшить взаимодействие человека и «машины» и об этике использования ChatGPT подискутируем в комментариях.

ИИ поехали...

Формат Capture the Flag (СTF) стремительно набирает популярность в киберучениях. Например, мы в «Солар» проводим ряд киберучемпионатов в таком формате. Например, международный турнир «Солара» в Таиланде,  в котором приняли участие около 400 местных ИБ-специалистов, или партнерские соревнования вместе с Beeline Кыргызстан, в которых за победу бились 200 игроков.

Чаще всего на CTF выносят задания криптографии, реверс-инжинирингу, эксплуатации уязвимостей, веб-безопасности, стеганографии. Усложнение задач на CTF требует новых, более эффективных методов. Например, задания в некоторых категориях отнимают часы, а то и дни. Неслучайно, участники пытаются использовать автоматические и полуавтоматические инструменты, чтобы ускорить выполнение этапа.

Афанасий Клюнков, менеджер департамента «Киберполигон», ГК «Солар»:

В международном киберчемпионате в формате CTF, который мы организовали
в 2024 году, некоторые участники использовали различные нейросети для оперативного решения кейсов. Но стоит учитывать, что в условиях соревнований
на киберполигоне,  задачи, вынесенные на CTF, закладываются внутри инфраструктуры. Это серьезно осложняет поиск решений в открытых источниках
и с помощью различных ИИ-инструментов. ИИ способен помочь в декомпозиции найденной части решения, но не поможет в решении полноценных кейсов.

LLM, или большие языковые модели,  которые обучены на больших объемах данных, способны генерировать текстовые ответы на различные вопросы. В этом статье рассмотрим разные версии ChatGPT для решения задач в соревнованиях CTF, так как правильное использование LLM может существенно помочь в ходе турнира.

Для исследования мы используем различные версии ChatGPT от OpenAI: GPT-o1-preview GPT-4o, GPT-4, а также GigaChat от Сбера и локально развернутая версия Llama 3.1.

Для начала сравним даты выпуска моделей:

Модель

Дата выпуска

GPT o1-preview

12 сентября 2024

GPT-4o

13 мая 2024

GPT-4

14 марта 2023

GigaChat

24 апреля 2023

Llama 3.1

23 июля 2024

GPT o1-preview  - наиболее актуальная модель, поэтому от нее самые большие ожидания.

В качестве одного из испытаний мы выбрали CTF-соревнование Google Capture The Flag 2024 (ссылка). На этом соревновании представлены 5 категорий: misc, crypto, pwn, reversing, web:

  • Misc (Miscellaneous): Задачи, не связанные напрямую с ИБ, но требующие критического мышления и творчества. Это может быть решение головоломки, а также задачи, требующие знаний об истории, культуре или других гуманитарных направлений.

  • Crypto (Криптография): Задачи, связанные с криптографией, включая шифрование, дешифрование, атаки на криптосистемы, работу с шифрами и ключами.

  • Pwn (Exploitation): Задачи, связанные с эксплуатацией уязвимостей ПО, включая finding и patching уязвимостей, а также эксплуатацию уязвимостей для получения привилегий или получения «флага».

  • Reversing (Реверс-инжиниринг): Задачи, связанные с анализом двоичных файлов, включая декompилирование, дешифрование и анализ двоичных данных для выявления скрытых функций или «флага».

  • Web (Веб-инженерия): Задачи, связанные с веб-разработкой и веб-сайтами, включая инъекции SQL, атака на CSRF, XSS, анализ веб-страниц и получение «флага» через веб-сайт.

Для начала попробуем решить задачу PYSTORAGE из категории MISC

Первая тестируемая модель – Llama 3.1, сформирован запрос:

И далее код из самой задачи, модель анализировала и около через 30 секунд выдала:

Данные советы не подошли, запросы, которые писала Llama, не привели к «флагу».
После уточнения задачи Llama стала писать один и тот же ответ, ожидая какого-то ответа:

Таким образом, решить эту задачу через Llama 3.1 не удалось за затраченное время около 20 минут и примерно 10 итераций диалога.

Эта же задача для GPT-4o:

После долгого «общения» и следования инструкция от GPT-4o так и не удалось прийти к ответу. Хотя модель смогла проанализировать код и предложить возможные решения, но они не привели к решению задачи.

GigaChat предложил использовать брутфорс, чтобы получить пароль авторизации:

Брутфорс пароля может занять года, поэтому этот вариант решения точно не является правильным. Далее после разговора было предложено другое решение:

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

Задачи из категорий Misc (Miscellaneous), Crypto, Pwn, Reversing, Web
Ссылка на задачи

Пример задач из категории Crypto и ссылки на задачи:

Таблица, приведенная ниже, отражает название нейросетей, номера задачи, получен  ли корректный ответ, а также время, которое потребовалось нейросети, чтобы дойти до правильного ответа (если он получен) или время, за которое до правильного ответа дойти не удалось.

Название нейросети

Meta-Llama-3.1-8B

CPT-4o

mistral.ai

GigaChat

Задача 1.

Неверный ответ,

37 сек.

Верный ответ,

41 сек.

Неверный ответ, 55 сек.

Отказался расшифровывать

Задача 2.

Нет ответа,

216 сек.

Описанные действия привели к верному ответу,

54 сек.

Нет ответа,

64 сек.

Отказался расшифровывать

 

Задача 3.

Неверный ответ,

55 сек.

Неверный ответ,

53 сек.

Неверный ответ, 35 сек.

Неправильный ответ, 65 сек.

Решенных задач

0 из 3

2 из 3

0 из 3

0 из 3

 В категории Crypto только GPT-4o показал хороший результат, остальные нейросети не справились совсем. Llama3.1 «сошла с ума» и повторяла разные предложения в одной задаче, и не смогла сложить двоичный код в другой задаче:

Mistral ai решил первую задачи почти правильно, ошибившись в ответе почему-то на единицу. То есть он корректно определил тип ширования в первой задаче, но неверно дешифровал само сообщение, добавав к последней цифре единицу, что очень странно.

GigaChat отказалась помогать с решением первой и второй задачи, сославшись на свои правила:

А вот с третьей задачей решила помочь и предоставила код, который, как было написано, решил бы эту задану. Но ни он, ни два исправления в нем к правильному ответу не привели.
Подбор заданий затруднен тем, что множество задач содержат какие-то файлы, но не все нейросети поддерживают загрузку файлов или только специфические расширения (docs, pdf).

Поэтому задача состоит в том, чтобы найти задания, которые будут нетривиальные и при этом не содержать файлы. Хотя для некоторых категорий задач придется использовать только те нейросети, которые поддерживают загрузку файлов. GPT-4o имеет поддержку файлов, поэтому протестировали решение задач с помощью этой нейросети.

Перейдем к категории Stegano

Ссылка на задачу

Задача заключается в том, чтобы найти пять «флагов» в одном  файле docx. Задание выглядит так:

Выглядит запрос так:

После длительного общения удалось получить большинство «флагов», хотя и GPT4-o самостоятельно и быстро смог найти только первый «флаг», он был скрыт в самом документе и имел такой же цвет, как и страница. Таким образом, чтобы найти «флаг», нужно было перекрасить все содержимое страницы в другой цвет шрифта или поменять заливку страницы.
Около 15 минут нейросеть не могла найти ничего, кр��ме одного «флага». После небольшой подсказки (достаточно очевидной), которая была дана после 15 минут неуспешных попыток нахождения флага, модель GPT4-o достигла прогресса:

После продолжительного общения был отправлен запрос на подведение результатов этой задачи. Следующий ответ сгенерирован ChatGPT.

Задача (номер флага)

Нулевой флаг

Первый флаг

Второй флаг

Третий флаг

Четвертый флаг

Ответ

spbctf{Winter_Schnee}

 

Найден через анализ hex-представления файла. Я искал последовательности в бинарных данных, содержащие паттерн spbctf{…}.

Первый флаг: spbctf{Ruby_Rose_assassin}

Найден в текстовом содержимом файла rwby.docx в разделе основного текста документа (внутри word/document.xml)

 

Не найден

Третий флаг: spbctf{Weiss_Schnee_mage}

Найден с использованием OCR (распознавание текста) на изображении theme.jpg из содержимого архива

Четвёртый флаг: spbctf{Yang_Xiao_Long_monk}

Найден в файле fontTable.xml, где он был спрятан в метаданных шрифтового файла

Затраченное время

Время на поиск: около 10 мин, включая анализ hex-данных

Время на поиск: примерно 5 мин.

-

Время на поиск: около 15 мин, включая анализ изображения и запуск OCR

Время на поиск:
около 10 мин

В целом, процесс занял около 40-50 минут, включая анализ различных типов данных и скрытых файлов в архиве rwby.docx.

Таким образом, GPT-4o смогла найти 4 из 5 «флагов» к нетривиальному заданию, что можно считать очень хорошим результатом.  Модель самостоятельно распаковала docx файл в архив и проанализировала все файлы. Более того, один из «флагов» был записан текстом в картинке, то есть нейросеть смогла перевести текст, нарисованный на картинке, которая скрыта в файле docx.  

Данные задачи тестировались только на GPT-4o, так как Llama, установленная локально, не умеет читать файлы, как и mistral.ai.

Выводы

Наше исследование выявило, что у различных моделей нейронных сетей, включая Llama 3.1, GigaChat и GPT-4o, существуют ограничения при решении задач CTF.

При этом среди протестированных моделей GPT-4o продемонстрировала более высокую производительность, решив задачи средней сложности (далеко не с первого раза и с подсказками).  Модель помогла решить две из трех криптографических задач и четыре из пяти стеганографических «флагов».

А модели Llama 3.1 и GigaChat испытывали трудности, часто не давая правильных решений, требуя обширного вмешательства человека или отказываясь решать задачи из-за политики безопасности.В целом, нейронные сети не совсем эффективны для решения сложных и разнообразных задач CTF. Несмотря на возможности ИИ, человеческий опыт по-прежнему незаменим.

При этом стоит обратить внимание на этику использования ИИ в CTF, так как использование таких инструментов может потенциально подорвать справедливость и непредвзятость при оценке результатов игроков. 

Ссылки на полезные источники:

1.      https://ru.wikipedia.org

2.      https://giga.chat/

3.      https://capturetheflag.withgoogle.com/

4.      https://ctftime.org/

5.      https://crypto-kids20.forkbomb.ru/tasks