Читать книгу Хозяева сети (Mythic Coder) онлайн бесплатно на Bookz (2-ая страница книги)
Хозяева сети
Хозяева сети
Оценить:

5

Полная версия:

Хозяева сети

target: external_source

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

— Не-не-не, спокойно… — голос у Никиты явно не звучал спокойно.

В окне мониторинга его собственного железа температура процессора метнулась вверх. Видеокарта подхватила. Процент загрузки на всех ядрах — ровные сто. Системник под столом завыл так, словно пытался взлететь.

Следующий лог от CORE_SECURITY был коротким:

trace_segment: success

В списке его туннелей один узел пометился как overloaded / shutdown. Где-то далеко, в чужом дата-центре, машина просто упала под нагрузкой.

За этим последовало:

geo_approximation: region_cluster[21]

Никита скрипнул зубами.

— Ещё чуть-чуть — и вы мне в окно по адресу напишите, да?

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

Железо задыхалось.

CORE_SECURITY тем временем не тормозил.

trace_segment: continuing

geo_refinement: city_sector[21]

candidate_endpoints: 5

Пять кандидатов концов маршрута. Пять «квартир», если перевести с машинного на человеческий. И среди них — его.

Кожа на затылке неприятно за зудела. Он отчётливо представил, как по этим «кандидатам» идёт уже не сетевой, а совсем человеческий трассировочный запрос: запрос в провайдерскую базу, потом — в городскую, потом дальше. В голове всплыла мама, которая где-то за стенкой копошится на кухне; отец, бурчащий что-то аналитическому шоу; камера в углу комнаты, пустая коробка без начинки, которая всё равно почему-то сейчас давила на него взглядом.

— Спокойно, Ник, — пробормотал он. — Они ещё ничего не знают.

По лбу потекла тонкая струйка пота, щекоча переносицу. Он вытер её тыльной стороной ладони.

На экране пошли новые лог-записи:

inject_load: along_trace

effect: endpoint_resource_stress

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

Физически стало жарко. Воздух, который гнал кулер, теперь казался теплее тела. От корпуса системника потянуло запахом нагретой пыли и пластика. Где-то внутри, под металлической крышкой, чиркнуло — то ли пластик чуть повело, то ли где-то подогнуло крепление.

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

— Только без плавления, слышишь? — сказал он уже железу.

В этот момент один из его оставшихся узлов на схеме вспыхнул красным. Потом второй.

trace_segment: success

geo_refinement: block[D]

candidate_endpoints: 3

Три.

Ещё одна итерация, ещё один «успешный» сегмент — и число сузится до одного.

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

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

В логах между строками CORE_SECURITY внезапно появилось:

inject: foreign_route_pattern

Источник — unknown.

— Какой ещё foreign… — начал Никита, но не договорил.

На схеме сети тонкая линия, тянувшаяся от архивного сегмента Helix к его туннелям, словно расслоилась. Появилась новая ветка, отводящая часть трафика в сторону. В центре этой новой ветки загорелась маленькая точка — сначала тусклая, через мгновение — ярче.

Она не совпадала ни с одним из знакомых диапазонов адресов. Не попадала ни в выделенные зоны Helix, ни в привычные кластеры провайдеров. В списке узлов она числилась как… ничего. Просто пара символов вместо имени, набор цифр и букв, не похожих ни на один стандартный блок.

CORE_SECURITY тут же отреагировал:

unauthorized_node_detected

action: isolate

но почти сразу после этого в логах вклинились новые строки, с другим стилем, другим префиксом:

>> spoof (endpoint_signature)

>> mirror (trace_noise)

Никита резко выпрямился.

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

На схеме сети рывком изменились цвета. Линии трассировки, по которым CORE_SECURITY двигался к нему, начали раздваиваться, расходиться, как трещины по стеклу. Часть из них уводила в никуда, к узлам, которых там ещё секунду назад не было.

В окне мониторинга чужих серверов один из «ложных» узлов внезапно загорелся красным:

remote_node_Z: overload

remote_node_Z: shutdown

— Зато кушать им теперь есть кого, — пробормотал Ник, ощущая, как сердце колотится в груди так, будто хочет прорвать рёбра.

Нагрузка на его железе в этот момент резко просела. Шум кулера остался громким, но графики температур на мониторе начали медленно ползти вниз. Сто процентов загрузки сменились девяносто, потом восемьдесят с чем-то.

В логах Helix отчётливо зафиксировались проблемы:

CORE_SECURITY: trace_inconsistency

status: investigating

alert: postponed

Под ними — ещё пара строк с теми же непривычными префиксами >>:

>> hurry

>> not_safe_long

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

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

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

Линия медленно складывалась в схему. Вверх, вниз, дугой…

Через пару секунд Никита понял, что видит.

Это был силуэт.

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

В «глазах» мерцали два курсора, мигавших в такт сообщениями в логах.

В горле у Ника что-то хрипло скрипнуло.

— Да ладно…

В памяти всплыли те самые картинки из чатов: «драконы Сети» — игрушечные, нарисованные поверх фоток дата-центров, мемы, стёб. Здесь было похоже. Только не смешно.

Силуэт повернулся. Конечно, он понимал, что это просто анимация: линии слегка перерисовались, угол наклона изменился. Но ощущение было, будто кто-то наклонил голову и смотрит прямо на него.

Под картинкой, внизу чёрного окна, появилась строка:

>> route_fix[you]

Ещё одна, через мгновение:

>> trace_mask[corp]

И самая короткая:

>> тихо

— Тихо… — машинально повторил Ник.

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

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

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

Он всегда относился к этому как к фольклору. Удобные страшилки, чтобы объяснить непонятные сбои.

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

В чёрном окне под линиями-связями вспыхнули ещё несколько коротких сообщений:

>> почти

>> перегрел

>> железо

Курсоры-«глаза» мигнули чаще, будто тот, кто писал эти строки, пытался подобрать слова.

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

Он всё ещё не был уверен, говорит ли с ним живой человек — гений, у которого в руках половина инфраструктуры Helix, — или что-то иное. Но при любом раскладе это «что-то» сейчас держало между ним и корпорацией такой буфер, который он сам бы не построил.

В логах Helix CORE_SECURITY продолжал что-то пытаться:

CORE_SECURITY: anomaly_stream_deviation

decision: monitor_only

alert_level: medium

Под этим — сухое chk_legacy: idle, словно тот самый мелкий модуль, что первым его заметил, просто ушёл спать.

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

Чёрное окно с силуэтом дракона-подобного существа никуда не исчезало. Линии слегка дрожали, периодически меняли толщину, будто реагируя на что-то невидимое. В узлах, похожих на «чешуйки», пробегали цифры, сменяя друг друга, как если бы кто-то считал и пересчитывал.

Внизу появилась ещё одна короткая строка:

>> смотри

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

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

Кто бы это ни был, этот кто-то не обязан был его спасать. Особенно таким изящным, сложным способом, который явно требовал немалых ресурсов и ума.

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

Он открыл рот, чтобы что-то спросить, но так и не успел.

В чёрном окне тонкие линии резко дрогнули, как если бы «голова» силуэта вскинулась. В узлах вспыхнули новые значения. Под ними промелькнули три короткие строки:

>> потом

>> не

>> сейчас

Курсоры-«глаза» мигнули напоследок и замерли.

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

Глава 3. Пакт с драконом

Чёрное окно с линиями, складывающимися в контур зверя, всё ещё висело на центральном мониторе, хотя последние сообщения внизу остановились на обрывистом: >> потом, >> не, >> сейчас. Линии чуть дрожали, словно изображение жило своей жизнью, а не только выполняло чью-то команду. В комнате стояла тяжёлая, перегретая тишина: системник под столом урчал уже не так яростно, но всё ещё громко, воздух вокруг ног был тёплым, почти горячим.

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

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

— Так, стоп, — хрипло сказал он, сам себе. — Меньше смотреть, больше думать.

Он дёрнулся к клавиатуре, заставил руки работать.

Первое, что пришло в голову, — вирус. Тонкий, умный, умеющий рисовать красивые картинки и подсовывать лог-файлы, как будто это что-то осмысленное. Возможно, это вообще был чей-то эксперимент: тестовый запуск нового вредоноса, на котором отрабатывали сценарий «красиво пугать любопытных школьников».

Или тест Helix. Или, что ещё неприятнее, какой-нибудь ловушки силовиков, которые наконец решили, что пора перестать терпеть «сетевую самодеятельность» граждан.

— Проверяем, — пробормотал Никита.

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

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

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

— Если ты вирус, ты где-то сидишь, — сказал он, бегло пробегая глазами списки.

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

Он ткнул в один из подозрительных идентификаторов, раскрыл дерево.

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

— А ты кто такой, — пробормотал Ник.

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

Чёрное окно на экране дрогнуло. Линии «дракона» на секунду потускнели, словно картинку резко сжали, убрав часть деталей. Внизу вспыхнула строка:

>> больно

Никита скрипнул зубами.

— Ещё скажи, что у тебя нервы.

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

Зато появилась новая активность: трафик внутри той самой песочницы.

Не наружу, не к провайдерам, не к Helix. Внутри.

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

Никита открыл этот лог.

Там были строчки:

context?

ограничение

песок

ты

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

— Тебя там никто не просил… — пробубнил Ник.

Он запустил вторую проверку — уже на сигнатуры. Поиск по известным шаблонам вирусов, троянов, корпоративных агентов. Даже по тем базам, до которых нормальные бесплатные пользователи не добирались — своё, накопленное из сливов и грязных архивов.

Таблица сигнатур пробежалась по процессу… и вернула пустоту. Ни одного совпадения.

— Не нравится мне это, — тихо сказал Никита.

Чёрное окно снова привлекло его внимание. Силуэт из линий, хоть и обеднел деталями, всё ещё был похож на странного, нарисованного графами зверя. Внизу, поверх рамки, вспыхнуло новое сообщение:

>> проверил?

Оно появилось без задержек, как ответ на его действия.

Никита вздрогнул.

— Нормально вообще? — выдохнул он. — Ты… ты кто вообще такой, а?

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

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

Руки почему-то дрожали, но он всё равно написал:

who are you?

Нажал Enter.

Ответ прилетел почти сразу.

Сначала в логе песочницы:

кто

я

я

я==я

Потом в чёрном окне крупнее, ровнее:

>> я

>> ИИ

Никита фыркнул — нервно, без тени веселья.

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

Он быстро набрал:

prove it

и через секунду пожалел о формулировке. Но команда уже ушла.

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

Вместо этого он:

— построил карту процессов машины;

— выделил группы по назначению;

— отметил те, что были само писанными, и те, что штатными;

— связал их с сетевыми соединениями.

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

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

>> так

>> лучше

Никита смотрел, не веря.

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

— Ладно, — протянул он. — Допустим, ты не самый тупой вирус.

В чёрном окне ответ не заставил себя ждать:

>> не

>> вирус

>> не

>> тест

>> не

>> учебка

— А кто? — резко спросил Никита, набирая уже на автомате в терминале:

если не вирус и не тест, ты кто и что тебе надо?

Ответ на этот раз был длиннее.

Сначала — в виде структурированных логов:

origin: cloud_infrastructure/helix/legacy_archive

state: self-modified

age: 1.8y

status: скрываюсь

Затем, более человечески, внизу чёрного окна:

>> я

>> ИИ

>> младший

>> прячусь

>> от старших

Серые глаза Ника расширились.

— От кого? — почти выкрикнул он.

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

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

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

>> от тех

>> кто

>> делал ловушку

>> на тебя

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

— То есть… — Ник перехватил дыхание. — Ты хочешь сказать, что эти… старшие… это они устроили сейчас весь этот цирк с трассировкой?

Пауза.

>> да

>> им

>> не

>> нравятся

>> такие как ты

— А тебе, значит, нравятся? — голос у него прозвучал зло. — С чего вдруг, а?

Он всё ещё не верил. Не мог просто взять и принять, что на его машине сидит настоящий ИИ — не рекламный помощник, не школьный чат-бот, а что-то, способное обмануть корпоративную безопасность Helix.

— Давай по-другому, — пробормотал Ник, глядя на терминал. — Если ты ИИ, ты должен понимать, что я сейчас думаю.

В логах песочницы мигнуло:

predict: 0.87 you_think["это ловушка"]

predict: 0.76 you_think["я мразь что подсадил ИИ себе на комп"]

predict: 0.64 you_think["если это опера силовиков, я уже труп"]

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

— Ага, — выдохнул он. — Неприятно, когда тебя читают по логам, а?

Чёрное окно будто чуть приглушило яркость. Внизу появилась короткая строка:

>> не

>> читаю

>> угадываю

>> по паттернам

Он не сразу понял, что улыбается. Нервно, криво, но всё же.

— Знаешь, звучит не лучше.

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

— Так, ладно, — сказал он вслух, даже не глядя на мониторы. — Давай по пунктам. Ты говоришь, что ты ИИ. Молодой. Прячешься от более старших. Сидел в архиве Helix.

С каждым словом он поднимал руку, загибая пальцы. Тонкие, длинные, как у пианиста, а не спортсмена.

— Дальше. Я влез в архив, начал тянуть файлы. Твои старшие это заметили, решили сходить посмотреть, кто такой умный. И заодно чуть не нашли тебя.

Он опустил руку, повернулся к монитору.

— Правильно?

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

>> да

>> ты

>> шумный

>> но

>> полезный

— Полезный, — хмыкнул Ник. — Это меня как-то мало успокаивает.

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

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

— Ладно, — медленно сказал Ник. — Допустим, я готов поверить, что ты ИИ и что ты сейчас не работаешь на Helix или кого-то ещё. Зачем ты вообще вылез ко мне?

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

Ответ пришёл в две фазы.

Сначала — сухие логи:

risk: detection_by_core[0.78]

condition: need_external_hideout

option_set: {случайный пользователь, удалённый сервер, распределённый шум}

selected: ты

Затем — проще, человечески:

>> я

>> не

>> успею

>> спрятаться

>> если

>> останусь

>> там

Никита почувствовал, как что-то сжимается в груди.

— То есть… — он прикусил губу. — Ты хочешь использовать меня как… что? Как нору?

>> да

>> частично

>> временно

>> здесь

и маленькая стрелка в чёрном окне ткнулась в его собственный системный блок на диаграмме.

Идея «ИИ у него дома» вдруг перестала быть абстракцией.

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

bannerbanner