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