Статья Первый шаг к монетке OSCE3 (Отзыв о сертификации OSWE 2024)

BearSec

Platinum
20.04.2020
214
301
BIT
70
Всем привет!
9226ad19-ccfc-455d-9761-bac483eb8a32.webp

Решил поделиться своим опытом получения сертификата OSWE в 2024 году.
У меня уже есть опыт сдачи сертификаций, участия в Standoff, да и мои рабочие задачи напрямую связаны с поиском уязвимостей, однако полноценного опыта работы в AppSec или опыта программирования у меня не было. Поэтому я не могу сказать, что для меня это было легкой прогулкой.

В отзыве я не имею права раскрывать детали экзамена, но часть моих советов однозначно может пригодиться. Praemonitus, praemunitus

Мои предыдущие статьи по сертификациям OSCP, WAPT, SQLIM, PNPT вы можете найти по соответствующим ссылкам.

Общая информация про курс WEB300 и сертификацию OSWE

OSWE – это сертификация от Offensive Security. Этот сертификат показывает, что вы умеете в AppSec, что-то понимаете в синтаксисе PHP, Python, Java, Node.js, а также ковырялись в разными СУБД.

В отличие от OSWA, Codeby WAPT или HTP CBBH в этой сертификации вам придётся столкнуться с исходным кодом веб-приложений и проанализировать его на конкретные уязвимости. Вишенкой на торте будет написание полноценного эксплоита, который при выполнении выдаст вам реверс шелл на атакуемом хосте.

Да, отправленные флаги — это не гарантия сдачи экзамена. Для сдачи экзамена вы обязаны:
  • флаги local.txt и proof.txt;
  • рабочий эксплоит, который после запуска автоматически вернёт вам реверс шелл;
  • отчёт с детальным описанием найденных уязвимостей (а их может быть несколько и они могут собираться в длинные цепочки) и рекомендациями по их устранению.
Данная сертификация находится почти на вершине широко известного в узких кругах списка сертификатов и относится к категории сложных.

Pasted image 20250110021953.webp

В случае успешной сдачи OSWE + OSEP + OSED вы получаете статус OSCE3. Это серьезное достижение, которое демонстрирует ваши всесторонние навыки в атакующей сфере инфобеза. Данная ачивка уже покорилась нашему коллеге @undefo. Я же пока к этому только двигаюсь – медленно, но верно.

1648816199267.webp

Подготовка

В середине 2023 я смог убедить начальство проспонсировать сдачу OSWE. Правда, мне предложили не просто купить курс, но и вернуть затраченные средства в случае успешной сдачи экзамена. Это, кстати, ещё давало мне +190к к мотивации)))
В начале декабря 2023 года я с помощью друга и его иностранной карточки купил подписку Learn One за 1999 баксов.

При наличии иностранной банковской карты вы не столкнётесь ни с какими проблемами при покупке и последующей сдаче экзамена.

Кстати, Offensive Security уже который год делают скидки на данный вид подписки с конца ноября по конец декабря (черная пятница). Эта подписка даёт доступ на 1 год к учебным материалам выбранной сертификации и к 2-м попыткам сдачи экзамена, а также доступ и 1 попытка сдачи сертификатов OSWP и KLCP.
Насколько я помню, там был ещё доступ к каким-то учебным модулям, но я ими так и не воспользовался.

Всех, кто приобретает подписку Learn One, хочу предупредить! Вы должны использовать попытки сдачи экзамена в течение работы подписки. Если ваш срок подписки закончился, а у вас остались попытки на сдачу экзамена, вам их не вернут и не дадут возможность ими воспользоваться (об этом на моём примере будет в разделе “экзамен”).

Начало подготовки я наметил себе на январь 2024 года, но жизнь внесла свои коррективы и на работе меня перебросили на проекты по анализу Android-приложений. Из-за чего я спешно прошёл курс "Анализ защищённости приложений Андроид" от нашей Академии Codeby. Возможно, про этот курс я напишу отзыв чуть позже (я слышал он нескольких человек, что после этого курса можно спокойно покупать попытку сдачи международной сертификации eMAPT от eLearSecurity и без особых усилий её сдать).

kein-stress.gif

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

Читатели могут задаться вопросом, почему 3 месяца до конца подписки — это мало? Потому что в случае неудачной попытки сдачи экзамена вы должны ожидать минимум 4 недели перед второй попыткой, а, значит, у меня уже было не 3 месяца, а 2. Плюс была запланирована командировка в Китай, что тоже внесло свои коррективы в обучение.

Врать не буду, пришлось сильно попотеть, материалов много, если у вас нет опыта анализа кода руками, без SAST, то будет непросто. Но всё возможно, как обычно говорят: try harder!

Учёба

Сам формат учёбы стандартный для OffSec. Дали методичку (можно скачать, а можно читать онлайн), дали видео и учебные стенды. Читай методичку, смотри видео, повторяй увиденное на стенде. На 2024 год я обнаружил 3 новых модуля, для которых ещё нет видео-уроков.

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

Есть Extra Miles - 3 машины, которые нужно решить полностью без подсказок или методических материалов. Так сказать, практика перед экзаменом. Их я, конечно, не решал)

За вашим прогрессом выполнения заданий никто не следит, тут вы сами вольны выбирать темп обучения. Можно вообще ничего не решать и сразу записаться на экзамен.

Доступ ко всем машинам осуществляется через сервис на три буквы, о котором теперь нельзя лишний раз писать. Напрямую этот сервис с моим оператором "Ростелеком Москва" работать не захотел, соединение устанавливалось, но доступа к лаборатории не было. Для решения этой проблемы я использовал свой персональный VDS сервис как промежуточный шлюз. Хоть OffSec и не рекомендуют такую схему, других вариантов у меня не было. Схема, кстати, работала стабильно как во время учёбы, так и во время экзамена.

Во время учебы вас познакомят с инструментарием и методами поиска уязвимого кода, однако мне не очень нравилось, как преподносится материал. В большинстве случаев вам просто напрямую показывают строку кода и объясняют, что тут за уязвимость. А хотелось получить базовое понимания анализа кода, запомнить какие-то паттерны или просто научиться правильно смотреть код в целом, а не построчно.

Для этого пришлось подключать дополнительные ресурсы, в этом, как обычно, помогают гугл и ютуб. На ютубе было отсмотрено много роликов, посвященных Appsec, Code review или сдаче OSWE. Это хоть и не дало прямых ответов, но картина начинала вырисовываться. Поняв принцип Sinks & Sources (поиск мест с входящими данными от пользователей и их дальнейшая обработка + вывод), стало немного проще начинать анализ кода.

Кстати, вы можете найти на github несколько стендов, которые студенты OSWE готовили для себя, в качестве дополнительных практических заданий. Также можно найти список OSWE-like машин на HackTheBox, TryHackMe или Vulnhub, но я из-за загруженности посмотрел максимум 2 или 3 машины из списка. (GitHub - ajdumanhug/oswe-practice: OSWE-like machines)

Pasted image 20250110033538.webp

Ещё я видел много комментариев с рекомендациями о практике на , но он платный и я так и не нашёл способа его оплатить.

Моё мнение - всё решает практика и насмотренность, когда вы не просто вчитываетесь в каждую строчку кода (это бесполезно!), а изучаете приложение и глобально начинаете себе представлять, как оно работает, после этого изучаете функции, которые потенциально могут содержать в себе уязвимости.

А после нахождения таких функций уже помогает опыт эксплуатации SQLi, SSTi, XXS, XXE и прочих уязвимостей.

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

Плюс студентам доступен дискорд сервер, в котором можно попросить помощи у таких же студентов. Чаще всего вы там не получите готовый ответ, но намёк на нужный вектор вам дадут.

Во время прохождения практических уроков я крайне рекомендую набивать опыт в написании эксплоитов. Выберите для себя удобный язык программирования и практикуйтесь в нём. На экзамене вы вполне можете выдергивать части кода из предыдущих эксплоитов. Я использовал python, но также знаю, что некоторые студенты писали эксплоиты на GO. Тут каждый выбирает для себя удобный инструмент.

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

Для себя во время обучения я заранее подготовил несколько скриптов для работы с SQLi, нашёл удобный плагин для Burpsuite под названием Copy As Python-Requests и морально подготовился к новой задаче.
Сразу отмечу, что никто не будет проверять, насколько элегантно написан ваш эксплоит, главное, чтобы он работал) (я вот свои никому не покажу, потому что они состоят из одних костылей))))

Вот в этот репозиторий во время учебы я тоже часто изучал: GitHub - rizemon/exploit-writing-for-oswe: Tips on how to write exploit scripts (faster!)

Общая информация по экзамену OSWE

На сдачу OSWE даётся 48 часов + 24 часа на написание отчёта.
У вас будет доступ к 5 машинам:
  • Ваша внутренняя Kali (многие пишут в отзывах, что используют её для запуска экспоитов, поскольку она находится в одной сети с атакуемыми машинами и у неё нет проблем с соединением). Я ей не пользовался;
  • 2 целевые машины (на них лежат флаги);
  • 2 идентичные целевым машины, но с полным доступом (тут вы изучаете код приложений и проводите динамический анализ).
Ваша цель – получить минимум 85 баллов. Баллы даются за:
  • Обход авторизации (получаем админский доступ) - 35 баллов;
  • RCE - 15 баллов.
Для набора минимальных баллов вам обязательно нужно на одной машине получить админа + RCE (50 баллов), а на другой достаточно получить доступ как админ (35 баллов).

mr-bean-benestad.gif

При получении админской учётки у вас будет возможность прочитать флаг - local.txt (он так называется, хотя файл никакой искать не нужно, флаг будет лежать на странице админа). После получения RCE нужно будет получить флаг из proof.txt (обычно он лежит где-то в веб-директории или рядом).

На экзамене запрещено использовать статические анализаторы кода, автоматические средства эксплуатации (sqlmap и прочее), автоматические средства сканирования хостов (acunetix и тп). Не уверен, что сканеры типа nuclei запрещены, но смысла в них нет. Сервисы на экзамене самописные, уязвимости также сделаны специально в определенных местах, так что найти их можно только руками.

Также, во время экзамена вам запрещено пользоваться любыми сервисами с AI. Так что достаём с антресоли и сдуваем пыль с навыков активного поиска информации в гугле)

Однако вам никто не запрещает пользоваться фаззерами, генераторами payload'ов или шелов. Burpsuite можно использовать, но только бесплатную community версию.

Во время экзамена вы подключаетесь к лабораторной сети и получаете доступ к машинам с исходным кодом приложения. На этих машинах уже находится необходимый инструментарий (VSCode с плагинами и вспомогательное ПО) для проведения анализа. Код выкачивать категорически запрещено. На машину вы подключаетесь по RDP, поэтому вы должны понимать, что много удовольствия от такого взаимодействия вы не получите - придётся потерпеть. Но, несмотря на то, что код выкачивать нельзя, можно делать скриншоты кода 😉 (вам же нужно писать отчёт о выявленных уязвимостях 😆).

Экзамен (1 попытка)

Морально к экзаменам от оффсеков я уже был готов. Я понимал, что будет сложно, что нужно правильно регулировать время и силы. Как многие говорят: OSWE это не спринт, как OSCP, а марафон.

Но нервы всё равно давали о себе знать, так как больше всего пугала неизвестность.

Собравшись с духом, я приступил к экзамену в 11 утра по МСК. Первые сутки я работал по расписанию, делал перерывы каждые 2-3 часа и ушёл на 7-часовой сон примерно в 2 часа ночи. За первый день я смог найти обход авторизации, и у меня были идеи по выполнению RCE на этой машине.

Однако с уменьшением времени на экзамен мои результаты не становились лучше, поэтому вторые сутки я уже провёл практически без перерывов и сна. К сожалению, это не помогло, и первую попытку я провалил. 😥

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

В итоге после 48-часового марафона я ушёл побежденный, но не сломленный (ага, не сломленный он... 🥶)

fail-exam-mr-bean.gif

Мой косяк и как мне повезло

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

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

Ночью я проснулся от сообщения, которое прислал мне бот, с информацией о свободных слотах. Я, не раздумывая, записался на последнее доступное время и провалился в сон, поскольку мне уже было всё равно, какое это будет время старта - главное записаться! Но оказалось, что поддержка пошла мне навстречу, в письме мне сообщили, что возможности записать меня в ручном режиме нет, и они мне сократили время ожидания перед повторной попыткой с 4 до 3-х недель, таким образом я смог записаться в свободный слот, которого я до этого не видел.

Тут могу только повторно выразить свой респект техподдержке оффсеков, что не бросили меня с этой проблемой, а пошли навстречу. НО ОСТАЛЬНЫМ Я КРАЙНЕ НЕ РЕКОМЕНДУЮ ТАК РИСКОВАТЬ!

im-just-blessed-jamison-fields.gif

В свободное время между попытками я потратил неделю на подготовку и сдачу сертификата OSWP, так что я теперь умею не просто ломать WIFI точки, а делать это профессионально)

Остальное время я потратил на изучение оставшихся скриншотов кода, что я сделал в первой попытке, и просто анализом кода известных CVE.

Экзамен (2 попытка)

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

school-paper.gif

Что интересно, я переоценил свои силы в написании полностью автономных эксплоитов и вместо заложенных 2-3 часов на каждый эксплоит я потратил примерно 4 и 3 часа соответственно. Так что, вспоминая первую попытку, я понимаю, что даже если бы я в конце
второго дня нашёл нужный вектор, то мне просто не хватило бы времени на написание скриптов.

На написание отчёта я потратил ещё примерно 4-5 часов, но тут у меня уже был большой рабочий опыт и мне не составляло труда расписывать полные цепочки, с подсвечиванием и объяснением проблемных мест в коде.

Советы

life-hack-life-hacks.gif

Курс

  • Старайтесь не просто копировать код предоставленных эксплоитов, а писать их с нуля. Например, в методичке разобрали пример, как происходит SQL-инъекция в Burp - написали эксплоит, который автоматом за вас вытащит нужные данные.
  • Проверяйте свои эксплоиты на универсальность. Например, в одном из заданий была SSTI. Для автоматизации процесса мне нужно было получать номер класса, я написал простой эксплоит, который последовательно получал все данные и выполнял RCE. Вот только при создании нового шаблона номера классов менялись, и мне пришлось потратить ещё пару дней, чтобы это отловить и добавить функционал проверки на правильный номер класса перед его выполнением. С одной стороны, меня это жутко бесило, с другой стороны – это была отличная практика.
  • Не пренебрегайте возможностью пообщаться с такими же студентами в Discord-сервере (или просто его почитать). Порой там можно было найти интересные вопросы или проблемы, с которыми конкретно вы не столкнулись, но эта информация заставит вас задуматься и отметить для себя некоторые нюансы по решению лабораторных задач.
  • Крайне рекомендую потратить время и изучить отзывы от других студентов, успешно сдавших экзамены. У них бывают полезные шаблоны скриптов или дополнительные стенды для практики. Однако делайте это осознано и не просто добавляйте это в закладки на будущее, а разберитесь в этом, чтобы во время экзамена судорожно не пытаться осознать новую информацию.
  • Ну и вот несколько ссылок с полезными материалами, которыми я пользовался:

Экзамен

  • Заранее подготовьте своё рабочее место, сделайте так, чтобы вас ничто не отвлекало и не вызывало дискомфорта. Я себе специально купил второй монитор (благо, я всё ещё пользуюсь моим старым монитором 2011 года, и найти такой же на авито я смог за 3 тысячи рублей). Опять же, я это сделал просто потому, что на работе я использую 2 монитора и мне привычнее работать в таком формате.
  • Не бросайтесь сразу изучать код приложения. Первым делом изучите веб-приложение как пользователь, посмотрите его функционал. После этого изучите функционал админа на портале, так вы сможете пометить функции, в которых потенциально стоит искать RCE после получения админки.
  • При анализе кода, в первую очередь делайте упор на получение админского доступа. Даже если вы найдёте RCE, то без админского доступа вы всё равно до неё не доберётесь.
  • Внимательно читайте описание заданий от разных машин. Их можно даже сравнить друг с другом. Порой в описании можно отследить намёк на потенциальный вектор (первую попытку я провалил, скорее всего, из-за невнимательности).
  • Обязательно протестируйте ваши эксплоиты несколько раз, желательно иметь дополнительную стерильную виртуалку с голой кали, чтобы на ней также проверить работоспособность скрипта. В общей сложности, у вас есть возможность 40 раз перезагрузить любую машину в экзаменационной лабе + по запросу в техподдержку вам могут добавить ещё 40 попыток (я потратил примерно 25 попыток на проверку работоспособности моих эксплоитов, но после этого я был уверен в них на 100%). В общей с сложности у вас есть возможность 40 раз перезагрузить любую машину в экзаменационной лабе + по запросу в техподдержку вам могут добавить ещё 40 попыток. (Я потратил примерно 25 попыток на проверку работоспособности моих эксплоитов, но после этого я был уверен в них на 100%)
  • Для получения реверс шела можно запариться с несколькими потоками в эксплоите (я так никогда не делал и не хотел тратить экзаменационное время на разбор данной ситуации), а можно сделать проще. Я просто после запуска скрипта выводил сообщение о необходимости запуска necat слушателя на указанном порту и требовал подтверждение от пользователя, что он это сделал. И уже после подтверждения запускался процесс эксплоита (keep it simple stupid)
  • Не забывайте, что вы не ограничены только самим языком программирования и его библиотеками. Я во время экзамена пользовался функционалом стороннего ПО для генерации нагрузки и не встретил с этим каких-то проблем (да msfvenom, ysoserial и прочее вспомогательное ПО разрешено использовать во время экзамена).
  • Не зацикливайтесь на одном приложении, очень часто ваш глаз будет замыливаться. После 4-5 часов безуспешных попыток найти уязвимое место в одном приложении стоит переключиться на соседнее
  • Обязательно делайте перерывы, даже если не хочется и кажется, что, потратив ещё пару часов, вы точно найдёте вектор. Давайте своему мозгу просто отдохнуть от наплыва информации.
  • Не забывайте есть и пить, как бы банально это не звучало.
  • Сон тоже очень важен! Никто не говорит, что вам нужно отсыпаться 10-12 часов, но здоровый 6-7 часовой сон пойдёт вам только на пользу.
  • Не забывайте о возможности поставить экзамен на паузу (но таймер на паузу не встанет). Во второй день второй попытки мне пришлось съездить на работу и проблем с этим не возникло.
  • Заручитесь поддержкой родных и близких. По факту вы вываливаетесь из жизни на 2-3 дня, как бы вы не старались ваши мысли практически всегда будут посвящены поиску потенциальных векторов атаки. Моральная и физическая поддержка семьи для меня всегда играла большую роль, а в такие напряженные моменты она ещё сильнее ощущается и ценится!

Отчёт

  • Для отчёта я использовал оригинальный шаблон от OffSec, сделал в нём только пару модификаций - сделал отдельный стиль для кода, чтобы он выделялся на фоне обычного текста (поменял шрифт на Consolas и сделал заливку фона серым цветом).
  • Мой отчёт состоял из 48 страниц, но большую часть отчёта занимали скриншоты и краткое описание.
  • На скриншотах я часто подсвечивал проблемные строки, либо писал в тексте номер строки на скриншоте, объяснял, почему она содержит в себе какую-либо проблему, либо как она ведёт к следующей функции на пути к проблеме.
  • Вы вполне можете пользоваться переводчиком для написания отчёта, но делайте это осознанно и проверяйте, что вам вообще переводчик напереводил. 🤣
  • Рекомендации по исправлению уязвимостей я давал предельно простые - "добавьте проверку там", "не используйте это", "обновите компонент до последней версии" и так далее. От вас никто не требует выполнять роль разработчика и самостоятельно править код.
  • При написании отчёта я столкнулся с проблемой копирования моего python скрипта из pdf - синтаксис либо ломался, либо при копировании добавлялись строки из колонтитулов. Рабочий эксплоит – это одно из главных условий сдачи экзамена, поэтому я опубликовал коды эксплоитов, как того требуют правила написания отчёта. Но также я дополнительно закодировал мои python скрипты в base64 строку и добавил их в конец отчёта. В пояснении я указал, что если у проверяющего будут проблемы со скриптом, то он может взять эту строку, раскодировать её из base64 в файл и выполнить скрипт без проблем.
Pasted image 20250109165047.webp

Заключение

В заключении хочу сказать, что, несмотря на то, что год был тяжелый - сертификация сильно давила на меня как морально, так и потенциальными финансовыми потерями – мне она понравилась. Опыта и знаний сертификация даёт много, и она очень полезная.

Новые навыки я успешно применяю в рабочих задачах, новая строчка в LinkedIn греет душу и привлекает HR-ов к моему профилю.

Да и просто понимание, что ты взял очередную высоту, которая раньше казалась недостижимой, повышает уверенность в своих силах. Когда я сдавал OSCP, я считал, что никогда не смогу сдать OSWE. Когда я сдавал (прости Господи) CEH, я считал, что я точно не смогу сдать OSCP. Однако результаты показывают обратное. Сейчас я также с волнением смотрю на OSEP, и тем более на OSED. Но дрожи в коленках ощущается меньше, да и дрожь эта уже скорее не из-за страха или неуверенности, а от предвкушения покорения новых вершин.

Не сомневайтесь в себе, только преодолевая трудности и выходя из зоны комфорта мы становимся лучше, увереннее и смелее! Вам всё по плечу, нужно только поверить в себя, стиснуть зубы и двигаться к цели несмотря ни на что!

tenor.gif

P.S. Ну и для истории я решил записать вторую попытку сдачи экзамена на таймлапс

 
Последнее редактирование:
Хорошь мужик, от души поздравляю тебя с новой высотой)
Спасибо за материалы, так получилось, что этот год я решил посвятить именно белому ящику и пограммированию. В целом пишу эксплоиты к таскам которые решаю. К OSWE я не готовлюсь, больше для себя.
Еще, я правда вник в дебаг. Именно связку vscode + debugger + Docker. Иногда возникает необходимость поднять исходник в контейнере и продебажить.

Еще раз поздравляю, всех благ)
 
  • Нравится
Реакции: BearSec
Хорошь мужик, от души поздравляю тебя с новой высотой)
Спасибо за материалы, так получилось, что этот год я решил посвятить именно белому ящику и пограммированию. В целом пишу эксплоиты к таскам которые решаю. К OSWE я не готовлюсь, больше для себя.
Еще, я правда вник в дебаг. Именно связку vscode + debugger + Docker. Иногда возникает необходимость поднять исходник в контейнере и продебажить.

Еще раз поздравляю, всех благ)
Да, на самом деле на курсе WEB300 - OSWE дебагу уделяется очень много времени. Когда мы можем прослеживать полный путь движения данных и тормозить процессы в нужных местах оченьмы можем лучше понять, что вообще происходит на бекенде!
Удачи в опытах)
 
  • Нравится
Реакции: Qulan
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!