Межсетевой экран не спасает от фишинга: делаю tower defense про защиту сети

Представьте обычный tower defense: противники идут по дорожкам, вы ставите вдоль них защиту. Только дорожки здесь соединяют роутер, рабочие ноутбуки, серверы и базы данных. А противник может прийти письмом, пролезть через поставщика ПО или просто позвонить директору. Куда в последнем случае ставить башню?
Я один делаю игру про это. Хочется, чтобы человек без IT-опыта после неё понимал, зачем нужны двухфакторная аутентификация, резервные копии и SIEM. И почему «у нас стоит антивирус» - это ещё не ответ на вопрос «мы защищены?».
Расскажу, как я переносил кибератаки на карту, где игровые условности помогают и что пришлось упростить. Готовую схему обороны выкладывать не буду: интереснее найти её самому.

Сеть как карта
Карта - обычный граф. Узлы: интернет, роутер, ноутбуки, серверы, базы, облако. Между ними каналы. Атаки идут по каналам и ищут подходящие цели. У каждой атаки есть вектор, то есть откуда она заходит, и типы узлов, которые ей нужны.
Мало увидеть, откуда лезет противник, надо ещё понять, за чем он пришёл. Атаки на веб-сервер и рабочий ноутбук идут по одной карте, но защищать эти узлы придётся по-разному.
Вот несколько примеров. В таблице указаны векторы из игры: в жизни у одной атаки может быть несколько путей проникновения.
Атака | Откуда приходит | Что ищет |
|---|---|---|
Фишинг | Письмо | Рабочие ПК, ПК админа |
SQL-инъекция | Сеть | Веб-сервер |
Заражённая флешка | Локально | ПК |
Инсайдер | Изнутри | Базы, хранилища, архив, облачные бакеты |
Дипфейк-звонок | Телефон | Руководитель |
Мне нравится, что внешний трафик и то, что происходит внутри компании, оказываются на одной схеме. Пока смотришь только на границу «интернет - наша сеть», легко решить, что за ней всё безопасно. А карта сама задаёт вопрос: что, если проблема уже внутри?

В игре 18 защитных модулей. Одни ставятся на каналы, другие на узлы: что-то работает с соединением, а что-то с конкретным компьютером или хранилищем. Правила вручную писать не нужно, модуль работает на весь узел или канал.
Ещё есть 11 политик. Они ни в кого не стреляют, но ослабляют определённые атаки. Так в игре появилось место для организационных решений. Часть безопасности просто не нарисуешь как пушку с радиусом.
Почему нельзя застроить всё одинаковыми башнями
Правило одно: у каждого модуля есть своё назначение, как и у реального средства защиты. Я не хотел, чтобы знакомые слова были просто вывесками на одинаковых пушках. Если переименовать модули в «огонь», «лёд» и «молнию», игра должна потерять смысл.
Пример. Обычный межсетевой экран не спасает от фишингового письма. Письмо приходит по разрешённому каналу, и то, что его пропустили, ничего не говорит о намерениях отправителя. Вопрос к защите тут простой: она ограничивает соединения или понимает, что по ним прислали?
С SQL-инъекцией похоже: вполне разрешённый запрос к сайту может нести вредоносный ввод. «Сервер доступен из сети» ещё не значит «запрос безопасный».
А инсайдер уже внутри. Идея «опасность приходит снаружи» тут перестаёт работать, и появляются другие вопросы: куда можно дотянуться из этой точки сети и что считать нормальным поведением сотрудника?
В игре есть справочник угроз, где всё объяснено простыми словами. Но прочитать описание мало, надо ещё решить, где на этой карте нужна защита и какая. Застроить всё знакомыми межсетевыми экранами не получится.
Шифровальщик и решение, которое придётся принять
Добравшись до узла, шифровальщик начинает шифровать данные на нём и заодно пытается перепрыгнуть дальше по сети. Одним сломанным компьютером дело может не ограничиться: по каналам он способен добраться до соседних узлов.
Если резервных копий нет, приходит записка с требованием выкупа. Дальше выбор за вами: заплатить, восстанавливать вручную или идти в полицию и CERT. Что будет после каждого варианта, рассказывать не буду.
Только что вы следили за атакой на карте, а теперь читаете требование выкупа. Нужно принять решение: что делать с зашифрованными данными? Справочник за вас не ответит.
В настоящем инциденте обстоятельств больше, чем может учесть игра. Я хочу, чтобы игрок задумался о бэкапах до того, как увидит записку. А вы бы заплатили?
Звонок, в который нечем стрелять
С дипфейк-звонком у tower defense проблема. Кто-то звонит голосом директора и просит срочно перевести деньги. Куда ставить защиту? Рядом с телефоном? На интернет-канал? И что она должна сбить?
Я специально не сделал башню против такого звонка. Ни экран, ни антивирус не проверяют, действительно ли директор просил перевести деньги. Можно хорошо защитить сеть и всё равно выполнить распоряжение мошенника.
В инциденте «Входящий звонок» игрок сам попадает в такой разговор. Здесь защита зависит от того, как в компании устроена работа. Какие именно меры помогают, оставлю выяснять игроку. Купить ещё один модуль в ответ на любую проблему не получится.

Атака, которая сначала ничего не ломает
В квантовой главе появляется «собери сейчас - расшифруй потом». Идея из реального мира: зашифрованные данные перехватывают сегодня в расчёте прочитать их потом, когда появится достаточно мощный квантовый компьютер.
Это не значит, что любой современный шифр уже можно вскрыть. Расчёт на то, что перехваченные данные сохранят ценность к тому времени, когда их удастся расшифровать.
В игре получается непривычная угроза: сначала она почти ничего не ломает. Последствия приходят позже, а защищаться надо заранее. Глядя на сеть сейчас, не скажешь, всё ли с ней будет хорошо потом.
Обычно в tower defense следишь за результатом каждого выстрела. А тут приходится задуматься: если урона не видно, значит ли это, что всё в порядке? Подробности оставлю в игре.

Иногда надо оторваться от карты
Между атаками всплывают небольшие задачи: найти фишинговое письмо, заметить странную строку в журнале, решить, какие обновления ставить первыми, проверить пароли и настройки, понять, настоящий ли звонок. Тут надо читать и думать самому.
В игре 17 решений, от которых зависят деньги, репутация и безопасность. Ответы оставлю за кадром, чтобы при встрече с инцидентом вы решали сами, а не вспоминали статью.

На карте видны связи и движение атак, но не прочитаешь письмо или запись в журнале. Для этого и нужны мини-задачи: открыть, посмотреть, что в них подозрительного, и принять решение. Потом можно вернуться к сети целиком.
Что пришлось упростить
Самая заметная условность - у атаки есть прочность и скорость. У SQL-инъекции в жизни нет полоски здоровья. В игре по ней видно, как защита справляется с атакой, пока та движется к цели.
Второе упрощение - настройка. Модуль действует на узел или канал целиком, правила игрок не пишет. Нужно решить, куда и что поставить. Сама настройка, которая в жизни требует немало работы, остаётся за кадром.
Третье - бюджет вместо людей и времени. В жизни мало выделить деньги: нужны специалисты, внедрение и поддержка. Игра сводит всё это к деньгам, поэтому по ней нельзя прикидывать, во что обойдётся защита настоящей компании.
С такими упрощениями можно разобраться, откуда приходит атака, что ищет и какая защита против неё работает. Но знакомые названия сами по себе не делают игру точной моделью настоящей сети.
Немного о разработке
Сначала я сделал прототип как веб-игру, потом перенёс всё на Unity. При переносе сравнивал поведение новой версии со старой: проверял, одинаково ли работает игровая логика.
Игра выйдет для Windows и Linux, работает на Steam Deck. Языки: русский, английский, немецкий и упрощённый китайский. В Steam есть облачные сохранения, 31 достижение и еженедельные таблицы лидеров.
В кампании есть своё дело, стартап, дата-центр, облачная корпорация и квантовая эра. О продолжении скажу только одно: финал - не конец истории.
Игра выходит в Steam 17 ноября: страница в Steam.
А какую атаку из вашей практики стоило бы добавить в такую игру, чтобы она ставила перед игроком интересный вопрос?
KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.