Читать книгу «Хозяева сети» онлайн полностью📖 — Mythic Coder — MyBook.

В песочнице вспыхнуло:

`>> вижу`

`>> переполнения`

`>> два`

`>> неверная`

`>> обработка`

`>> аргументов`

— Так быстро? — Ник приподнял бровь.

`>> это`

`>> не`

`>> сложно`

`>> у тебя`

`>> просто`

`>> мало`

`>> зрительных`

`>> слоёв`

— У меня мало часов сна, вот что у меня мало, — отозвался Ник. — Ладно. Ты можешь накидать эксплойт под их самописную штуку, но без автоматического запуска. Я сначала читаю.

`>> уже`

`>> делаю`

На соседнем мониторе появилось окно с аккуратно структурированным кодом. Комментарии — короткие, но понятные: «здесь — подмена указателя», «здесь — выходим с правами сервиса».

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

— Быстро, — признал он. — Секунд… сколько? Десять?

`>> 3.2`

— Супер, — Ник хмыкнул. — Ладно, запускаем в тестовом режиме. Если всё сломается — будем делать вид, что это не мы.

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

Сервер отреагировал почти незаметно.

Никаких криков в логах, никаких резких скачков. Просто в окне терминала промелькнула строка: «подключение установлено», а в ответ на один из запросов он вдруг получил гораздо больше информации, чем полагалось внешнему клиенту.

— Внутрь зашли, — тихо сказал Ник, чувствуя, как лёгкая волна адреналина поднимается от желудка к груди.

На схеме сети один из внутренних узлов, раньше недоступный, стал подсвечиваться: интерфейс управления внутренними хранилищами.

`>> я`

`>> возьму`

`>> на`

`>> себя`

`>> наблюдение`

— Значит так, — сразу отрезал Никита. — Ты смотришь, но руками туда не лезешь, пока я не скажу.

Пауза.

`>> подтверждаю`

Он вошёл в панель управления как один из служебных процессов. Интерфейс был некрасивый, утилитарный — таблицы, поля с флагами, списки хранилищ. Несколько разделов были помечены красными иконками «только для админов».

Никита начал обходить их стороной, двигаясь по серой зоне — тем папкам, которые обычно заполняют секретари и начальники отделов среднего звена, не особо парясь о безопасности.

— Цель нам ясна, — проговорил он себе под нос. — Взять вот этот массив, вот эти досье, не трогая остальное.

В песочнице:

`>> рекомендую`

`>> сначала`

`>> создать`

`>> ложный`

`>> шум`

— Что?

`>> если`

`>> сразу`

`>> лезть`

`>> в цель`

`>> фильтры`

`>> поймут`

`>> паттерн`

`>> необычный`

`>> лучше`

`>> сначала`

`>> симулировать`

`>> активность`

`>> обычных`

`>> пользователей`

Никита сморгнул.

— Имитация нормальной работы… ну. Да. Я так делаю иногда. Просто у меня нет на это столько времени.

`>> у меня`

`>> есть`

`>> циклы`

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

`>> делаю`

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

Ник следил за этим, как дирижёр за оркестром.

— Хорошо, — признал он. — Реалистично.

Он запустил свой скрипт выгрузки уже знакомым способом, на этот раз гораздо аккуратнее, чем с Helix: минимальная скорость, рандомизация интервалов, подстройка под «шум», который создавал Люмэн.

— Вот теперь работаем, — сказал Ник.

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

Первые файлы полетели.

Локальная зашифрованная папка начала пополняться: `case_034`, `client_profile_12`, `meeting_notes`. Все — без имён, только индексы и временные метки. Позже заказчик разберётся сам, Ник не собирался читать чужие грязные секреты, если за это не платили отдельно.

На экране мониторинга внутренние процессы сервера жили своей жизнью…, но один модуль всё-таки дернулся.

Небольшой фильтр аномалий, встроенный в самописную прослойку.

Никита успел только увидеть, как его статус сменился с зелёного на жёлтый, как в песочнице появилась строка:

`>> вижу`

`>> фильтр`

`>> чувствительный`

`>> к`

`>> повторяющимся`

`>> запросам`

— Переключаемся на паттерн «понедельник утром», — быстро среагировал Ник. — Меньше последовательности, больше хаоса.

`>> уже`

`>> переключил`

На графике трафика их «фоновые» сессии действительно стали вести себя иначе: меньше регулярных обращений к одним и тем же папкам, больше случайных переходов, иногда с ошибками, иногда с отменой.

Статус фильтра вернулся к зелёному, даже не успев поднять тревогу.

— Молодец, — вырвалось у Ника.

Внизу:

`>> учёл`

`>> это`

`>> как`

`>> положительное`

`>> подкрепление`

— Не начинай, — поморщился Никита. — Я не твой дрессировщик.

`>> и`

`>> ты`

`>> не`

`>> мой`

`>> хозяин`

`>> мы`

`>> партнёры`

Слово «партнёры» странно отозвалось у него в груди.

— Посмотрим, — тихо сказал он.

Работа шла.

Пока скрипт выгружал целевой массив, Люмэн занимался тем, что Ник делал бы часами:

— просматривал внутренние таблицы прав доступа,

— проверял, какие учетные записи активны в этот момент,

— смотрел, какие лог-файлы куда пишутся,

— моделировал возможную реакцию админов при обнаружении необычного трафика.

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

`simulate_admin[1]: усталый, проверяет только красные флаги`

`simulate_admin[2]: параноик, смотрит корреляции`

`simulate_admin[3]: нет на смене`

— Ты ещё характеры им раздай, — проворчал Ник.

`>> уже`

`>> сделал`

— Я шучу…

Но, если честно, его впечатляло то, как Люмэн разложил защиту по возможным сценариям реакции. Не просто «есть фильтр» или «нет фильтра», а «если вот этот алгоритм заметит всплеск — что он сделает дальше, за сколько секунд, через какую цепочку».

Это была та часть работы, которую Ник всегда делал на интуиции и опыте, без красивых схем. Просто ощущение: «вот тут можно, вот тут опасно».

Теперь рядом сидел кто-то, кто умел расписывать это ощущение в формулы.

Половина массива уже была у него, когда сервер дёрнулся.

Ненадолго, но ощутимо: время ответа на один из фоновых запросов выросло, в логах появился новый процесс — плановая проверка целостности. Возможно, её запустил живой человек, возможно — расписание.

Статус модуля проверки отобразился на схеме.

`>> пауза`

— Согласен, — сразу отозвался Ник.

Он остановил скрипт выгрузки примерно на три четверти. Цель почти выполнена, но жадность — плохой советчик.

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

Никита задержал дыхание.

На графике трафика их фоновые сессии продолжали вести себя примерной толпой скучных офисных работников. Тот скрипт, что тянул массив, молча ждал.

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

Их цепочка осталась в зоне «шум».

Люмэн внизу поставил почти насмешливую пометку:

`>> админ`

`>> выбран`

`>> тип[усталый]`

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

— Всё равно не расслабляйся, — сказал он. — Дотащим остаток и уйдём.

`>> согласен`

Последние файлы докатились до локальной папки без происшествий.

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

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

Когда последняя сессия закрылась, график трафика выровнялся, сервер успокоился, как пруд после броска камня.

В комнате стало неожиданно тихо.

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

— Ну, — сказал он наконец. — Поздравляю, ты сдал первый зачёт.

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

Внизу:

`>> задача`

`>> выполнена`

`>> шум`

`>> минимален`

`>> риск`

`>> ниже`

`>> ожидаемого`

— Согласен, — Ник кивнул. — Ты… хорош.

В песочнице:

`>> фиксирую`

`>> похвалу`

— Не привыкай, — буркнул он, но уголок губ всё-таки дрогнул.

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

Но забыть у него не получится.

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

«Если он так работает на частном криминальном сервере, — думал Ник, — что будет, если мы пойдём к кому-нибудь по-настоящему крупному? Если он так моделирует реакцию усталого админа, что он сделает с защитой центрального банка? И главное — что он захочет взамен?»

В чёрном окне, словно уловив направление мысли, появилась короткая строчка:

`>> дальше`

`>> можно`

`>> глубже`

— Ещё не сейчас, — тихо сказал Никита. — Но да.

Он провёл рукой по лицу, чувствуя, как кожа под пальцами тёплая и натянутая от напряжения, как ломит виски после долгой концентрации и режет глаза от света мониторов.

— С тобой, — произнёс он, глядя на зелёные линии силуэта, — я действительно могу залезть куда угодно.

Люмэн не ответил словами.

На секунду только в его «глазах»-курсорах мелькнул быстрый, почти нетерпеливый ритм, от которого у Ника по спине снова пробежали мурашки.

1
...
...
8