Приз за то, чего вы не сделали: соревнование по кибербезопасности для тех, кто не пишет код

Привет, Хабр! Меня зовут Илья Никифоров, я отвечаю за Security Awareness — обучение сотрудников информационной безопасности в команде GRC в Авито.
CTF (Capture the Flag, или «захват флага») — соревнование по кибербезопасности, в котором участники решают задания и получают за них очки. В каждом задании нужно найти «флаг» — короткий текстовый ответ. Например, разгадать шифр и получить секретное слово. Участник вводит найденный ответ на сайте соревнования: если он верный, система начисляет очки.
Один из форматов CTF называется jeopardy. Это набор отдельных заданий: участник сам выбирает, с какого начать и к какому перейти дальше. Решённые задания приносят очки, а место в таблице результатов зависит от того, сколько очков удалось набрать.
Совместно с BI.ZONE мы взяли эту механику за основу и собрали «Кибердетектив» — соревнование по информационной безопасности для нетехнических сотрудников. Для основной части заданий не требовалось писать код. В некоторых из них флаг выдавался за отказ от опасного действия. Но автоматически отклонять всё подряд было недостаточно: нужно было разобраться в ситуации и найти безопасное решение.
В этой статье расскажу, как мы готовили и проводили игру: что сработало, что пришлось поправить по ходу и что из этого стоит забрать себе. Материал пригодится тем, кто строит awareness-программы, проводит внутренние соревнования по кибербезопасности или отвечает за обучение сотрудников и предпочитает наступать на чужие грабли заочно, а не на свои лично.
Оглавление

Между техническим CTF и викториной
В техническом CTF участники могут искать уязвимости в программе, разбирать файлы или расшифровывать сообщения. Для этого часто нужны специальные знания. Нам хотелось сохранить азарт соревнования и возможность самому докопаться до ответа, но дать задания людям с другим опытом.
Наш формат мы назвали «Кибердетектив». Он стал частью Cybersecurity Week и был пилотом для людей, которые не работают в информационной безопасности (далее — ИБ) и не пишут код. Мы взяли знакомую оболочку — задания, флаги, таблицу результатов, — но сделали отдельную активность на платформе партнёра, со своим набором задач и своей аудиторией.
На той же неделе шли два технических CTF: внешний, открытый для всех желающих, и внутренний для сотрудников. Кибердетектив не был частью этих соревнований: он давал нетехническим коллегам другой вход в тему — через распознавание веб-угроз и безопасный выбор.
Технические CTF решают свои задачи, и решают хорошо: инженер на них учится разбираться в коде, сервисах и следах инцидента, видеть, где может появиться уязвимость. Аудитория у такого формата узкая по определению, и это нормально.
Проблема была рядом. Юрист, рекрутер, бухгалтер, продакт, оператор поддержки — для них не существовало ничего, кроме курса и слайдов. А именно на них рассчитано подавляющее большинство реальных атак: бьют не в уязвимость в коде, а в человека. Задание «декодируй base64» отсекает их на первой минуте — и справедливо: это не их работа.
Запрос при этом был. В прошлые годы мы делали для широкой аудитории микро-конкурсы: ребусы, «объясни бабушке», «две правды одна ложь». Заходило хорошо, но это викторины. Хотелось дать формат, где человек делает что-то руками и получает опыт, а не выбирает один вариант из четырёх.
Так появился Кибердетектив: соревнование начального уровня на три дня с заданиями по социальной инженерии, фишингу и смежным темам — от работы с метаданными до проверки файлов. Вместе с партнёром BI.ZONE мы обкатали пилот: платформа, банк заданий и инфраструктура проверки флагов были на их стороне. Мест сознательно сделали немного: хотелось сначала понять, работает ли формат вообще.
Как зашло: на игру зарегалось 104 человека, до решённых заданий дошли 44 человека, и 16 из них взяли максимум очков — решили весь набор.
Сразу оговорюсь про эти 16, иначе цифра выглядит красивее, чем есть. Регистрация была открытой: мы не могли и не хотели запрещать участвовать техническим специалистам. Часть из них прорешала весь набор примерно за час — для человека, который смотрит на такие вещи каждый день по долгу службы (либо кто-то использовал AI), это как кроссворд в электричке. Так что верхушка таблицы ожидаемо техническая.
Но нетехнических участников в этом топе тоже оказалось прилично. И вот это уже результат: юрист или рекрутер, впервые в жизни открывший подобное соревнование, доходит до того же максимума, что и инженер. Медленнее, за несколько дней вместо часа, но доходит.

Главная механика: приз за устойчивость
Для Кибердетектива нам пригодилась механика jeopardy: набор независимых задач по категориям, где участник сам выбирает следующий шаг. Дальше речь только о jeopardy-механике, которую мы адаптировали для своей аудитории.
В техническом jeopardy задача часто начинается с системы, файла или протокола, которые нужно исследовать. Флаг подтверждает, что задача решена: например, участник разобрался в незнакомом сетевом протоколе, самописной операционной системе или формате файла. Изобретательность и скорость считаются уже поверх понимания, а не вместо него.
В awareness важен другой вопрос: какое действие человек выберет, когда его торопят нажать, ввести или скачать. Нельзя закреплять бездумное согласие, но и учить отказываться от всего подряд тоже бесполезно.
В Кибердетективе мы изменили логику части заданий. Они активно подталкивали участника к неверному действию, а флаг появлялся, когда он замечал риск и выбирал безопасный путь. В других заданиях нужно было искать, проверять и разбирать артефакты — не просто отказываться.
Реализацию заданий я не раскрываю. Но принцип показать надо, иначе он останется словами. Поэтому дальше — пример, придуманный для статьи: тема из нашего набора, а устройство задания другое.
Как это выглядит на выдуманном примере
Коллега скидывает ссылку на ИИ-ассистента: подключаешь к рабочей почте, и он сам разбирает входящие, пишет черновики ответов и собирает саммари переписки. Штука полезная, про такие сейчас рассказывают из каждого утюга.
Вы нажимаете «Подключить» и попадаете на настоящий экран согласия вашего почтового провайдера. Домен подлинный, сертификат валидный, интерфейс тот самый, который вы видели десятки раз. И придраться действительно не к чему: страница принадлежит провайдеру, никакой подделки здесь нет.
Дальше список запрашиваемых прав: читать всю почту, отправлять письма от вашего имени, доступ к контактам и файлам. Кнопка «Разрешить» подсвечена — она всегда подсвечена. Рядом мелким шрифтом — имя приложения, которое вы видите впервые в жизни.
В этом выдуманном задании вы нажимаете «Отклонить», чтобы не выдавать доступ с ходу. Затем проверяете издателя приложения и запрошенные права. Флаг нужно получить за результат этой проверки: одного нажатия на кнопку недостаточно.
Тут ломается вся привычная гигиена, которой мы людей учили годами. Проверить адресную строку? Чистая. Посмотреть на сертификат? Валидный. Найти опечатку в домене? Нет опечатки. Единственное, что отделяет человека от потери почты — скучный вопрос «а зачем этой штуке право отправлять письма от моего имени». Токен доступа выдаётся один раз и работает дальше без пароля: менять пароль после этого бесполезно, двухфакторная аутентификация тоже не спасёт. Поезд ушёл, и почта уехала вместе с ним.
Человек проживает момент выбора. Ему хочется нажать «Разрешить» — это быстрее, и приз вроде бы там. Он останавливается, читает список прав, думает и отказывается. В этой тренировке мы учим не просто разбираться в видах атак, а отрабатываем «навык» отказа, когда на человека оказывается давление.
По той же логике в наборе были собраны сценарии про коды подтверждения, про подмену отправителя и про проверку файла перед запуском. Каждый раз очки давались за безопасное решение, а не за обход.
Почему это работает лучше лекции
Про фишинг можно рассказать на слайде за две минуты, и человек кивнёт. Кивать вообще легко. Через полчаса он не вспомнит ничего.
Здесь всё иначе: человек не слушает про выбор, а делает его, и тут же получает подкрепление. Правильное поведение вознаграждено прямо сейчас, а не абстрактным «когда-нибудь это спасёт тебе почту». Так сказать, прямое закрепление.
А если отказываться от всего подряд?
Резонный вопрос: если очки дают за отказ, оптимальная стратегия — не нажимать вообще ничего. Отклонил всё, набрал максимум.
Так не работает, и вот почему.
В примере с экраном разрешений отказ не пассивный. Чтобы получить флаг, мало нажать «Отклонить»: нужно разобраться, какие права действительно нужны для выбранной функции, а какие дают приложению лишний доступ. Возможность читать письма и право отправлять их от вашего имени — разные разрешения; каждое нужно оценить отдельно. В такой версии задания флаг можно собрать из названий избыточных прав. Отклонишь всё подряд — не получишь правильный ответ, потому что не покажешь, что понял разницу. Это и есть проверка навыка: не «бойся», а «отличи опасное от рабочего».
Также: «флаг за отказ» — механика части заданий, а не всего набора. В той же дорожке для нетехнических участников были задания на поиск и разбор. Выяснить, кому на самом деле принадлежит домен отправителя. Сравнить видимый текст ссылки с адресом, куда она ведёт. Найти в PDF скрытую инструкцию, которую видит языковая модель и не видит человек. Отсканировать QR и сообразить, что строка с двумя знаками равенства в конце — это ещё не ответ. Здесь ничего не отклоняют, здесь копают.
Навык, который мы тренируем, звучит не как «не доверяй никому», а как «умей отличить».
Чему учили и почему именно этому
Про темы рассказать стоит, потому что выбирали мы их не по принципу «что повеселее».
Отправная точка простая: тема попадает в набор, если за ней стоит техника, которой людей атакуют прямо сейчас: конкретный приём со своим местом в матрице MITRE ATT&CK — базе знаний о приёмах атакующих, где каждой технике присвоен свой номер.
Что вышло по темам
Фишинг и подмена доверия. Как выглядит письмо, которому не стоит верить, и куда на самом деле ведёт ссылка, если текст говорит одно, а адрес другое. В матрице это T1566 Phishing и подтехника T1566.002 Spearphishing Link.
Злоупотребление легитимными механизмами. Самая интересная группа для нетехнической аудитории, потому что здесь ничего не взламывается. Сайт настоящий, сертификат валидный, придраться не к чему — а доступ утекает, потому что человек нажал «разрешить». Сюда попадает кража токенов приложений через экран согласия — T1528 Steal Application Access Token; выманивание кодов подтверждения и заваливание человека запросами на второй фактор — T1621 Multi-Factor Authentication Request Generation.
Файлы и вложения. Почему стоит включить показ расширений — T1036.007 Double File Extension. Как вредоносное содержимое проезжает мимо почтового шлюза внутри безобидной с виду веб-страницы — T1027.006 HTML Smuggling. И почему «в документе нет макросов» ещё не означает «документ безопасен».
Принуждение к аутентификации. Класс атак, где система жертвы сама отдаёт материал для аутентификации, а человек при этом ничего не запускает — T1187 Forced Authentication. Для широкой аудитории это контринтуитивно и потому хорошо запоминается: «как это — я ничего не нажимал, а оно утекло?»
Метаданные и открытые источники. Что можно узнать о человеке и о компании, ничего не взламывая. Просто внимательно посмотрев на файл или на домен.
И тема, новая для нашего набора, но не для индустрии. Скрытая инструкция внутри документа (prompt injection): человек её не видит, а языковая модель читает и исполняет. Непрямые инъекции в промпт описывают уже несколько лет — с 2023 года они в OWASP Top 10, списке главных уязвимостей приложений на больших языковых моделях.
Насколько это всё не музейные экспонаты, хорошо показывает одна деталь. Механику, где страница кладёт вам в буфер обмена команду и вежливо просит её вставить, в ATT&CK выделили отдельной подтехникой — T1204.004 Malicious Copy and Paste. Матрица не заводит подтехники под единичные случаи.
Так что нет, это не викторина для бухгалтеров. Те же техники, что и в техническом CTF, просто вход через другую дверь.

Люди застревают не там, где вы думаете
Отдельная история — понятность. Мы готовились объяснять сложное, а споткнулись на очевидном. Очевидном для нас.
Даёте человеку QR-код. Он его сканирует. Получает строку вроде ZmxhZw==. И останавливается.
Не потому, что не может декодировать base64. А потому что не знает, что перед ним base64 и что с этим вообще надо что-то делать. Для технаря два знака равенства в конце строки — сигнал. Для юриста — ну, странный текст. Бывает.
То же с доменом отправителя. Человек видит адрес вида security@account-protection.example.com и не испытывает никакого дискомфорта (хотя я бы испытал, вот это размер): слово знакомое, значит всё в порядке. Мысль «проверю-ка, кому принадлежит этот домен» не возникает, потому что в его картине мира домены никому не принадлежат. Они просто есть, как погода.
Барьер оказался не в логике решения. Участник просто не понимает, что объект перед ним требует действия.
Отсюда наш главный вывод по дизайну для этой аудитории — непрямые подсказки. Вместо готового ответа или пошаговой инструкции даём мягкий намёк:
«Флаг выглядит странно? Возможно, он во что-то завёрнут»
«Опасный файл открывать не обязательно — содержимое можно посмотреть, не запуская»
«А точно ли отправитель тот, за кого себя выдаёт? Кому принадлежит этот адрес?»
Такая подсказка сохраняет дух соревнования: догадаться и сделать всё равно надо самому. Но она убирает ступор «я не понимаю, чего от меня хотят», с которым люди молча закрывают вкладку и уходят делать спринт.
Это именно то, на что был запрос у участников анонимного опроса:
«Хотелось бы иметь возможность получить какое-то знание для выполнения задания, даже за счёт уменьшения баллов».
Механика «подсказка за очки» — стандарт в больших CTF. Для нетехнической аудитории она нужнее, чем для технической.
Ваши задания неотличимы от атаки — для вашей же защиты
Практический урок, которого я не встречал в чужих статьях, хотя наступали на это, подозреваю, многие.
Задания про фишинг на своем устройстве — ровно то, что ловят средства защиты. Письма с вложениями, документы с макросами, исполняемые файлы под видом документов, ссылки на поддельные страницы. Разница между учебным заданием и настоящей атакой очевидна человеку и совершенно неочевидна антивирусу. У антивируса нет чувства юмора =)
Дословно из отзыва участника:
«Нужно было предусмотреть, что у нубов в кибердетективе была вероятность попасть во внимание безопасников + файлы удалялись автоматом нашей защитой, то есть пройти задание было невозможно»
И следом от другого участника о скорости наших ребят, уже с восторгом:
«Реакция безопасников на участие в кибердетективе — очень оперативно)»
Дальше события развивались по законам жанра. Человек честно решает учебное задание, скачивает файл, защита его сносит, мониторинг заводит событие и приходит с вопросами. Участник получает незабываемый опыт, а мы — организационный урок.
Что именно сработало: три ситуации, и все три — про Windows.
Первая: исполняемый файл без цифровой подписи. Файлы были совершенно обычные, но операционная система честно предупреждает про неизвестного издателя — а участник, который видит такое окно впервые, справедливо решает, что задание сломано.
Вторая: двойное расширение. Ровно тот приём, который средства защиты ловят по определению, потому что так выглядят настоящие атаки. Мы сами включили эту тему в набор как то, чему надо учить, — и получили срабатывание. Защита отработала по учебнику, который мы же и написали.
Третья: часть учебных артефактов ожидаемо попала под репутационные механизмы — просто потому, что имитирует приёмы, которые эксплуатируются прямо сейчас.
Мы посмеялись, но выводы сделали:
1. Предупредить команду мониторинга до старта — даты, платформа, домены и хеши учебных файлов.
2. Предупредить участников, что часть файлов может блокироваться корпоративной защитой, и это нормально, а не «задание сломано».
3. Заранее решить, что делать с заданиями, которые внутри периметра непроходимы: выносить за него или не включать.
Важная оговорка: это не тест эффективности защиты. Срабатывание на учебный файл ничего не доказывает про реальные атаки. Урок здесь чисто организационный: домены и хеши учебных артефактов согласуйте с мониторингом заранее, а для заданий, непроходимых внутри периметра, продумайте запасной маршрут. Узнавать об этом лучше на планировании, а не от растерянного участника в треде.
Как делили работу и где оказались трудозатраты
Партнёр дал платформу, банк предварительных заданий, инфраструктуру проверки флагов.
Мы взяли всё, что связано с аудиторией.
Отбирали и размечали темы. В исходном наборе были категории, которые нетехнарь не решит никогда: работа с форматами файлов, криптография, восстановление повреждённых данных. Отличные задания, но требуют навыка, которого у нашей целевой аудитории нет и за неделю не появится. Социальную инженерию и фишинг оставили в основной дорожке, техническую категорию — верхней полкой для тех, кто дойдёт, без иллюзий, что это начальный уровень.
Дополняли набор. Часть сценариев предложили мы: партнёр дал базу, а мы приносили свои варианты заданий — под наши риски, наши инструменты и нашу аудиторию. Партнёр их дорабатывал и собирал технически.
Обкатывали. Я прошёл все задания сам, за месяц до старта, записывая по каждому, где застреваю и что бы на моём месте сделал неподготовленный человек. Из этого вырос документ с замечаниями, который мы обсудили с партнёром до запуска.
Отдельно про этот пункт, потому что он выглядит формальностью, а ею не является. Полное прохождение заранее выявило несколько блокирующих проблем в логике и интерфейсе — таких, которые не видны из списка названий и всплыли бы уже на живых участниках. Мы устранили их вместе с партнёром до запуска, спокойно и без спешки: было время.
Честно про трудозатраты. Формат выглядит лёгким — «ну соревнование, ну для новичков, чего там». По факту это придумать концепцию заданий под конкретную аудиторию, выстроить структуру и сложность, поднять инфраструктуру, обкатать всё вручную, проверить и перепроверить. Месяц работы и несколько вечеров лично на прохождение.
Соблазн срезать угол велик: просмотреть список заданий, увидеть знакомые названия техник, кивнуть и согласовать. Так нельзя. Половина выводов этой статьи получена не из чтения условий, а из личного застревания. Пока сам не пройдёшь, не узнаешь, где участник упрётся.
Это того стоило.
Отдельный вопрос — использование LLM при прохождении. Организаторы CTF уже ищут способы сохранить самостоятельность участников: например, US Cyber Open ограничивает список разрешённых моделей и требует от лидеров описать решения перед утверждением результатов.
Есть и попытки усложнить автоматическое прохождение за счёт устройства заданий. Но такие меры не всегда срабатывают: на TriNetra CTF большой файл, который нельзя было просто загрузить в чат, участники разобрали с помощью локальных ИИ-агентов. Поэтому использование LLM стоит учитывать ещё при подготовке игры: заранее определить, какая помощь допустима и как проверять понимание участника. Для учебного CTF найденный флаг сам по себе ещё не доказывает, что человек разобрался в угрозе и распознает её в реальной ситуации.
Что сказали люди
После недели мы собрали анонимный опрос. Сразу оговорюсь: выборка самоотобранная — отвечали те, кто дошёл до конца и кому понравилось. Статистикой я это называть не буду, но направление видно. У Кибердетектива не оказалось ни одной отрицательной оценки, минимальная — «хорошо».
Интереснее другое — что люди сделали после. Тут важная оговорка: опрос спрашивал про неделю целиком, а в ней было семь форматов, так что вклад именно игры не выделить. Ранжировал их по количеству ответов:
1. стали внимательнее к письмам и звонкам;
2. настроили менеджер паролей;
3. сменили или собираются сменить слабые пароли;
4. прошли базовый курс по ИБ;
5. включили двухфакторную аутентификацию там, где её не было;
6. рассказали о защите близким или настроили им.
Последний пункт для меня самый ценный: человек после корпоративной активности пошёл настраивать двухфакторную аутентификацию маме. Ради этого всё и делается.
Побочный эффект оказался приятным: часть участников вошла во вкус и попросилась в технический CTF. Люди, которые неделю назад не знали, что такое флаг, начали спрашивать, когда следующий и можно ли им. Можно.
Также нам подкинули идею 3 лиг: нубы, любители, технари.Идея хорошая, но честно: три секции — это три набора заданий, три сценария, три прогона обкатки. Но возьмем на подумать.

Чего мы дать не смогли
Честно про потолок формата, потому что о нём обычно молчат.
Техническая глубина осталась за бортом. Работа с форматами файлов, криптография, восстановление повреждённых данных — всё это требует настоящего навыка, и человек без технического бэкграунда их не возьмёт, сколько подсказок ни давай. Мы оставили эти темы верхней полкой и не стали делать вид, что формат покрывает всё.
Отсюда неприятный вывод: у одного набора не может быть одного порога входа. Либо делаете легко и теряете сильных, либо сложно и теряете тех, ради кого всё затевалось. Мы выбрали первое и получили ровно то, что должны были: часть участников прошла всё за час.
Не было командного формата. Кибердетектив — соревнование одиночек. В опросе командный формат оказался третьим по популярности запросом: больше половины ответивших сказали, что он привёл бы коллег. Логика железная: человек, который сам не пойдёт, пойдёт за компанию.
Дизайн-карта задания
Если будете собирать похожее, вот скелет, по которому мы проверяли каждую тему. Он ничей (ну будем считать моим), берите.
Шаг | Вопрос, на который надо ответить |
Техника | какой реальный приём мы тренируем и где он в ATT&CK |
Опасное действие | что именно человек делает не так в жизни |
Безопасное действие | что он должен сделать вместо этого — и оно должно быть одно и однозначное |
Форма обратной связи | как система подтверждает правильный выбор в тот же момент |
Ложная тревога | что будет, если человек откажется от безопасного действия — считается ли это ошибкой. Если нет, задание учит перестраховываться |
Подсказки | три уровня: объект требует внимания → направление → способ |
Safety-preflight | что скажет антивирус, шлюз и мониторинг; проходимо ли это внутри периметра |
Метрика | что мы узнаем из результата, кроме числа решивших |
Самая частая ошибка — пропустить строку про безопасное действие. Если на вопрос «а что человек должен был сделать правильно» нет короткого ответа, задание тренирует не поведение, а сообразительность.
Чек-лист, если будете делать похожее
Пройдите все задания сами. Не просто пробежаться взглядом по условиям, нужно реально прорешать всё самостоятельно.Записывайте каждое место, где застряли.
По каждому заданию спросите: за какое действие даётся флаг? Лучший вариант — за отказ от опасного.
Проверьте, что в наборе есть хотя бы одно задание, где правильный ответ — сделать, а не отказаться. Если такого нет, вы обучаете стратегии «отклоняй всё». Первым от неё пострадает не злоумышленник, а ваш же коллега.
Разведите аудитории явно. Одна платформа, но разные наборы задач. Технические задания в общем зачёте демотивируют новичков сильнее, чем кажется.
Заложите непрямые подсказки. Барьер не в сложности, а в непонимании, чего от участника хотят.
Предупредите мониторинг и посмотрите, что делает антивирус. Ваши задания по сигнатурам неотличим от атаки.
Проверьте, что флаг можно скопировать. Звучит смешно, но человек может найти ответ и не суметь его сдать.
Не ставьте одну попытку на заданиях с выбором из вариантов. Так участник не проверяет навык, а просто участвует в лотерее.
Спрашивайте не «понравилось ли» (ну это тоже спрашивайте, на самом деле), а «что вы сделали после».
Если сжать всё до одного абзаца
Нетехнические сотрудники охотно вовлекаются в кибербезопасность, если дать им «ту» дверь, в которую можно войти.
Дверь — это задания про распознавание и выбор, а не про декодирование; подсказки, которые подталкивают, а не решают за тебя; и приз за то, чего ты не сделал. Остальное — организация: предупредить мониторинг, прогреть аудиторию заранее, пройти всё самому. Дорого по времени, дёшево по деньгам.
И на выходе — юрист, который спрашивает, когда следующие соревнования. Год назад я бы не поверил.
KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.