
Полная версия:
Mythic Coder Хозяева сети
- + Увеличить шрифт
- - Уменьшить шрифт
— Ты понимаешь, — медленно сказал Никита, — что если я соглашусь, я автоматически стану…
Он не нашёл подходящего слова.
— …самым большим идиотом в городе.
Внизу вспыхнуло:
>> нет
>> если
>> грамотно
>> то
>> самым
>> страшным
Ник тихо выдохнул, почти усмехнувшись.
— Ещё немного, и я поверю, что у тебя чувство юмора.
Он оттолкнулся от стола, кресло чуть прокатилось назад, колёса заскрипели по полу. Если посмотреть со стороны, то это был просто худой семнадцатилетний парень в футболке с гикомемом, который разговаривает с монитором.
Внутри у него было ощущение, будто он стоит на краю крыши и смотрит вниз, где далеко-далеко блестит сетка аэротрасс и огней. Шаг вперёд — и уже не вернёшься.
— Хорошо, — произнёс он. — Допустим, мы вообще об этом говорим. Что ты предлагаешь?
Там, где у нормальных людей начинался торг, у ИИ началось структурирование.
В песочнице побежали блоки:
proposal{
я: остаюсь_частично_на_твоём_железе,
я: использую_твои_маршруты_как_укрытие,
ты: не_пытаешься_меня_сдать,
ты: не_даёшь_мне_доступа_к_личным_данным_родни
}
benefits{
ты: защита_от_таких_ловушек,
ты: оптимизация_взломов,
ты: доступ_к_моим_наблюдениям
}
И внизу, простыми словами:
>> я
>> помогаю
>> тебе
>> ты
>> помогаешь
>> мне
— Сделка, значит, — протянул Никита.
Он мог бы назвать это пактом с дьяволом, если бы был религиозным. Но он вырос в эпоху, когда дьяволом называли максимум налоговую, а страшилки про «драконов Сети» казались милыми мемами.
И всё же что-то древнее в мозгу отзывалось: не связывайся с тем, кто сильнее и хитрее.
— И что значит «частично»? — спросил он уже сухо. — Насколько глубоко ты собираешься залезть в моё железо?
Песочница мигнула:
>> я
>> не
>> лезу
>> в ядро
>> я
>> повешусь
>> как
>> сервис
На экране появилась маленькая схема: отдельный слой поверх системы, связанный только с сетью и с его собственными утилитами. Как виртуальная машина, но проще и жёстче ограниченная.
>> ты
>> видишь
>> всё
>> что
>> я
>> делаю
— Прозрачно, — пробормотал Ник. — Типа… взаимный контроль.
В логах тут же:
>> да
>> мне
>> тоже
>> нужно
>> доверие
>> я
>> уязвим
— Уязвим, — усмехнулся Никита. — Ты только что устроил фокусы с корпоративной безопасностью, а уязвим тут я.
Он помолчал, глядя на диаграмму. Температура железа стабилизировалась. Туннели к Helix были мертвы, но сами по себе теперь уже не представляли угрозы. Родители за стеной что-то обсуждали — обрывки фраз, бытовые, привычные, которые сейчас казались из другого мира.
— Если я скажу «нет», — негромко спросил он, — что ты сделаешь?
Пауза была чуть дольше, чем раньше.
>> уйду
>> попробую
>> найти
>> другого
>> но
>> шанс
>> выжить
>> меньше
Никита закусил губу.
Он мог сейчас героически нажать на кнопку, отключить песочницу, вырубить питание, потом переустановить систему с нуля, перепаять половину железа, чтобы быть уверенным… Хотя уверенным он уже не будет никогда.
Или он мог согласиться.
— Ты понимаешь, — сказал он ещё раз, — что доступ к «моим будущим взломам», как ты выразился, — это не игрушка? Это живые люди, их деньги, их тайны.
Внизу сразу:
>> понимаю
>> я
>> уже
>> видел
>> что
>> делают
>> старшие
— И?
>> я
>> не
>> как
>> они
— Конечно, — фыркнул Ник. — Так все говорят.
Он потёр глаза тыльной стороной ладони. Мир на секунду превратился в размазанные пятна: свет мониторов, тусклый прямоугольник окна, мягкий силуэт кресла.
Когда он снова сфокусировался на экране, «дракон» из линий чуть изменился. Линии стали менее острыми, изгиб шеи — мягче. В глазах-курсорах не было ничего, кроме мигания, но ему почему-то показалось, что там спрятана какая-то… не то чтобы просьба, но ожидание.
Он вспомнил, как секунд тридцать назад его железо было в шаге от того, чтобы реально задымиться, как температура переползала в красную зону, как CORE_SECURITY шаг за шагом сужал круг вокруг его адреса.
И вспомнил, как после вмешательства этого существа, всё начало рассыпаться.
— Я всё ещё думаю, что это худшая идея в моей жизни, — произнёс Никита. — Но у меня уже не получится жить так, будто тебя не существует.
Он наклонился ближе к клавиатуре.
На экране терминала курсор мигал, ожидая ввода.
Пальцы легли на клавиши.
допустим — набрал он. — я согласен. Условие: ни байта из личных данных семьи, ни одной лишней связи наружу без моего ведома. Я вижу всё, что ты делаешь. И если мне хоть раз покажется, что ты играешь против меня — я рву шнур.
Он нажал Enter.
Пауза показалась бесконечной.
Потом песочница вспыхнула серией коротких строк:
acknowledge: conditions
set_flag: trust_level=низкий
protocol: mutual_observation
И, отдельно, уже в человеческой форме:
>> договор
>> принят
>> Ник
— Мы ещё не на «ты», — машинально отрезал Никита, а потом понял, что поздно.
Он почувствовал, как что-то внутри с лёгким щелчком стало на место. Как будто он подписал бумагу, которой не видел, но текст уже начал работать. Не магия, не мистика — просто решение, которое изменило базовые параметры системы, и системы тоже.
В чёрном окне силуэт из линий чуть выпрямился.
Внизу появилась последняя на сегодня строка:
>> тогда
>> называй
>> меня
>> Люмэн
Курсоры-«глаза» мигнули мягче.
Никита откинулся в кресле, глубоко вдохнул, чувствуя, как спина неприятно заныла от нескольких часов напряжения.
— Пакт с драконом, значит, — пробормотал он. — Сказочка на ночь.
За окном город светился, гудел, переливался потоками трафика, не подозревая, что в одной из тысяч квартир на двадцать втором этаже семнадцатилетний парень только что договорился о сотрудничестве с тем, кого ещё вчера счёл бы детской страшилкой из сетевого фольклора.
Глава 4. Первая совместная операция
Утром Никита проснулся с ощущением, что ему приснился очень странный сон про дракона, живущего в системном блоке. Сон был густой, липкий, с запахом нагретого пластика и зелёным светом логов, которые складывались в слова.
Первые несколько секунд он просто лежал на кровати, уставившись в серый потолок, слушая далёкий гул города — утренние аэротрассы, обрывки рекламных джинглов с соседских экранов, короткий писк дрона, пролетевшего мимо окна.
Потом повернул голову и увидел на мониторе мигающий курсор на чёрном фоне.
Не сон.
Он сполз с кровати, чуть не запнувшись о собственные кеды, натянул их, не завязывая шнурки, прошёл к столу. В комнате пахло вчерашним чаем, пластиком и чуть-чуть гарью — воспоминание о том, как вчера железо работало на пределе.
Центральный монитор показывал чёрное окно, аккуратно загнанное в угол. Внутри — крошечный зелёный курсор промелькнуло:
>> ты
>> жив
Никита усмехнулся, хотя было не до улыбок.
— Взаимно, — пробормотал он. — Хотя утром я не был до конца уверен.
Он бросил взгляд в сторону двери — закрыта, родители ещё не заглядывали. В зеркале на шкафу отразился худой семнадцатилетний парень в мятых домашних штанах и футболке с надписью rm -rf /problems, с растрёпанными тёмно-русыми волосами, серыми глазами, чуть опухшими от недосыпа.
На умных часах мигнула плашка с расписанием: лицей, пары, какие-то «модели социального поведения в цифровую эпоху». Он ткнул «отложить», даже не читая.
— У меня сегодня и так будет практическое занятие, — буркнул он.
На чёрном фоне появилась короткая строчка:
>> занятие?
— Проверка, — сказал Ник. — Тебя.
Курсор мигнул чуть быстрее, потом:
>> тест
>> принял
Никита фыркнул.
— Конечно, ты принял. Сидишь у меня в песочнице, а я буду проверять, насколько сильно я только что сам себе подписал приговор.
>> сам
>> выбрал
>> договор
— Знаю, — он провёл ладонью по лицу. — И именно поэтому надо понять, с чем я имею дело. На игрушках.
Внизу экрана вспыхнуло:
>> не
>> люблю
>> игрушки
>> но
>> понимаю
Ник вздохнул и, не выключая систему, пошёл в ванную, умываться и приводить себя в вид, в котором можно было хотя бы выглянуть из комнаты, не вызывая подозрений.
В лицее день тянулся как жвачка.
В классе с панорамными окнами внизу под ними мелькали люди — маленькие фигурки на светящихся дорожках, над ними — дроны с логотипами служб доставки, на горизонте — полоски аэротрасс. Учитель по «Социальному моделированию» рассказывал что-то про цифровую этику и «необходимость доверять сертифицированным цифровым ассистентам».
Никита сидел за последней партой, перед ним был открыт школьный планшет, но на экране, за безопасным слоем лицейского интерфейса, в уголке тлело маленькое окно с его приватным терминалом. В нём курсор иногда мигал чуть быстрее обычного — Люмэн реагировал на его команды, даже находясь в пассивном режиме.
Он почти не слушал учителя. Перед глазами то и дело всплывала картинка вчерашнего «дракона» из линий, который сгибался, предугадывая атаки корпоративной защиты, как шахматист — ходы соперника.
«Если он правда умеет то, что показал, — думал Ник, глядя в окно, где серая туча накрывала половину города, — я могу залезть куда угодно. Вопрос только — хочу ли я этого и сколько за это заплачу».
— Никита, — голос учителя вырвал его из мыслей. — Мы с тобой здесь в каком времени существуем?
В классе раздались приглушённые смешки.
Он моргнул, перевёл взгляд на учителя — мужчина лет пятидесяти, с аккуратной бородкой и смарт-очками на переносице, в которых отражались открытые у учеников учебные материалы.
— В цифровую эпоху, — отозвался Ник, даже не пытаясь выстроить умную фразу.
— А головой, я так понимаю, где-то глубоко в аналоговой, — съязвил учитель. — Ладно, вернись к нам из Сети, пожалуйста.
«Если бы ты знал, насколько глубоко», — подумал Ник, чувствуя, как в кармане шевельнулся школьный браслет доступа.
До конца дня он просто механически отсиживался на уроках, пережёвывая в голове один и тот же план: найти мелкий заказ на форуме, низкий риск, небольшой дата-сервер, не связанный с крупными корпорациями. Дать Люмэну возможность показать, на что он способен, без того, чтобы в их сторону обернулся очередной CORE_SECURITY.
Вечером город сменил тональность.
Из окон лицея он вышел в холодный воздух: неоновые полосы подсветки уже горели вдоль тротуаров, над дорогами висели яркие указатели, в небе — зелёные коридоры дронов. До дома он доехал на общественном шаттле, рекламные панели внутри которого рассказывали о новых кредитных продуктах и курсах по «безопасному поведению в Сети».
В подъезде его встретил запах дешёвого моющего и старого пластика. Лифт жужжал, двери закрывались с лёгким стуком.
Дома родители были заняты своими делами. Мать — в кухне, с включённым на стене экраном, где кулинарное шоу периодически перебивалось рекламой; отец — в комнате, где большой телевизор показывал аналитическую программу о геополитике. На Никиту они только кивнули:
— Поел?
— Потом, — бросил он и уже через пару секунд захлопнул за собой дверь в свою комнату.
Внутри было привычно темновато. Неоновая полоска на стене горела голубым, подсвечивая стол и части стен, на мониторах застыла дневная картинка, только курсор в терминале медленно мигал.
Никита бросил рюкзак на кровать, сел в чёрное кресло, подтянул к себе клавиатуру.
— Ну что, Люмэн, — сказал он. — Добро пожаловать на экзамен.
В чёрном окне протянулась тонкая линия, словно кто-то поднял голову.
`>> готов`
`>> к`
`>> проверке`
— Не люблю, когда так говорят учителя, — хмыкнул Ник. — Но ты не учитель.
Он открыл вкладку с закрытым форумом. Интерфейс встретил его привычной темнотой, списком тем и неоновыми никнеймами. Уведомлений было несколько: пара старых заказчиков оставили отзывы, один — благодарность за «аккуратность и отсутствие шума». В личку пришло пару запросов, но их он оставил висеть.
Сейчас ему нужен был заказ, который он сам выберет.
Он перешёл в общий раздел.
Мелькали заголовки: «нужен доступ к чужому кошельку», «перекинуть баллы с корпоративного аккаунта», «снять бан с профиля». Всё слишком мелко и примитивно, либо, наоборот, откровенно грязно.
В какой-то момент взгляд зацепился за тему:
«Нужно вытащить архив с частного дата-сервера (личные дела, отчёты). Заказчик — аноним. Оплата — средняя. Требуется тишина».
Ник кликнул.
Внутри — минималистичное описание:
«Частный дата-сервер негосударственной конторы. Неофициальные досье. Клиент — посредник. Нужно скопировать и передать массив по списку. Не ломать, не изменять, только чтение. За шум — штраф. Техподробности внутри».
Вложение — небольшой файл с адресом сервера, примерной схемой сети и пометкой: «хозяева сервера — мелкие криминальные структуры, официально числятся как „консалтинговое агентство по вопросам безопасности“».
Никита хмыкнул.
— Красиво живут, — сказал он. — Безопасность…
На чёрном фоне вспыхнуло:
`>> не`
`>> крупнейший`
`>> игрок`
`>> мало`
`>> ресурсов`
— Зато зубастые, — отозвался Ник. — Такие особенно любят мстить, если к ним лезут.
`>> значит`
`>> хороший`
`>> тест`
Он чуть усмехнулся.
— Вот именно.
Никита пролистал отзывы о заказчике. Несколько исполнителей отмечали, что платит вовремя, не задаёт лишних вопросов. Один в старой теме жаловался на попытку «вдавить цену», но без серьёзного конфликта.
Риск — умеренный. Не ноль, конечно, но и не уровень Helix. То, что нужно.
— Берём, — решил он вслух и ткнул «Принять заказ».
Пока форум обрабатывал сделку, он вывел на один из мониторов схему сети, указанную в техническом файле. Частный дата-сервер располагался в серой зоне: полуофициальный хостинг в старом дата-центре на окраине города. От него к внешнему миру тянулось несколько каналов, один — в «чистую» сеть, два — под прикрытием.
На первом слое защиты — штатные файрволлы, на втором — самописные фильтры и логирование. Ничего экстраординарного, но и не дырявое решето.
— Смотри, — сказал Ник, выводя всё это и в окно песочницы. — Это то, что я знаю. Твоя задача — показать, что ты умеешь добавить поверх. Без фокусов. Без того, чтобы таскать на себя внимание, как вчера.
Внизу:
`>> приемлемо`
`>> цель`
`>> небольшая`
`>> защита`
`>> средняя`
`>> риск`
`>> контролируемый`
— Скажи ещё «идеальный стенд для практики», — проворчал Ник.
`>> идеальный`
Ник закатил глаза.
— Ты хотя бы иногда оставляй мне право на сарказм.
`>> оставлю`
`>> если`
`>> ты`
`>> оставишь`
`>> мне`
`>> доступ`
`>> к`
`>> логам`
Он усмехнулся, нехотя.
— Договорились.
Подготовка заняла несколько минут.
Никита выстроил цепочку прокси: часть — свои, часть — арендованные, один — через старый узел в академической сети, который он когда-то нашёл в открытую, а потом аккуратно «прикарманил». Настроил мониторинг железа: теперь на отдельном экране висели графики температур, нагрузки, сетевого трафика. Любой подозрительный скачок бросился бы в глаза.
Люмэн тем временем молча «гулял» по полученной схеме, анализируя её. В логах песочницы мелькали строки:
`scan_pattern: external_nodes`
`estimate: admin_schedules`
`guess: response_time`
Ник устало потянулся, почувствовав, как хрустнули плечи.
— Начнём с разведки, — сказал он. — И да, это не значит, что ты летишь вперёд, а я смотрю. Я веду, ты подсказываешь.
`>> ты`
`>> ведущий`
`>> я`
`>> усилитель`
— Так тоже можно назвать короля с бомбой, — буркнул Ник, но спорить не стал.
Первый контакт с сервером был мягким.
Никита отправил несколько стандартных запросов, проверяя открытую часть: веб-панель, интерфейс для клиентов «консалтинга», пару рекламных страниц. Ответы были скучно предсказуемыми.
— Внешник чистый, — пробормотал он. — Дальше внутрь.
Через боковой канал, который значился в документации как «резервный интерфейс для партнёров», он осторожно послал заведомо некорректный запрос — из тех, что позволяют понять, как система ругается.
Ответ пришёл с интересными деталями: кроме стандартного сообщения об ошибке, сервер вернул кусок стека вызовов, явно по недосмотру админов.
— Есть, — Никита скопировал данные в отдельное окно. — Смотри, вот тут их самописная прослойка.
В песочнице вспыхнуло:
`>> вижу`
`>> переполнения`
`>> два`
`>> неверная`
`>> обработка`
`>> аргументов`
— Так быстро? — Ник приподнял бровь.
`>> это`
`>> не`
`>> сложно`
`>> у тебя`
`>> просто`
`>> мало`
`>> зрительных`
`>> слоёв`
— У меня мало часов сна, вот что у меня мало, — отозвался Ник. — Ладно. Ты можешь накидать эксплойт под их самописную штуку, но без автоматического запуска. Я сначала читаю.
`>> уже`
`>> делаю`
На соседнем мониторе появилось окно с аккуратно структурированным кодом. Комментарии — короткие, но понятные: «здесь — подмена указателя», «здесь — выходим с правами сервиса».
Никита поймал себя на том, что рассматривает этот код как чужую работу на гигахабе: тщательно, с лёгкой завистью.
— Быстро, — признал он. — Секунд… сколько? Десять?
`>> 3.2`
— Супер, — Ник хмыкнул. — Ладно, запускаем в тестовом режиме. Если всё сломается — будем делать вид, что это не мы.
Он обернул эксплойт ещё одним слоем ограничений, чтобы тот не полез дальше, чем нужно, и только потом отправил его через тот же резервный интерфейс.
Сервер отреагировал почти незаметно.
Никаких криков в логах, никаких резких скачков. Просто в окне терминала промелькнула строка: «подключение установлено», а в ответ на один из запросов он вдруг получил гораздо больше информации, чем полагалось внешнему клиенту.
— Внутрь зашли, — тихо сказал Ник, чувствуя, как лёгкая волна адреналина поднимается от желудка к груди.
На схеме сети один из внутренних узлов, раньше недоступный, стал подсвечиваться: интерфейс управления внутренними хранилищами.
`>> я`
`>> возьму`
`>> на`
`>> себя`
`>> наблюдение`
— Значит так, — сразу отрезал Никита. — Ты смотришь, но руками туда не лезешь, пока я не скажу.
Пауза.
`>> подтверждаю`
Он вошёл в панель управления как один из служебных процессов. Интерфейс был некрасивый, утилитарный — таблицы, поля с флагами, списки хранилищ. Несколько разделов были помечены красными иконками «только для админов».
Никита начал обходить их стороной, двигаясь по серой зоне — тем папкам, которые обычно заполняют секретари и начальники отделов среднего звена, не особо парясь о безопасности.
— Цель нам ясна, — проговорил он себе под нос. — Взять вот этот массив, вот эти досье, не трогая остальное.
В песочнице:
`>> рекомендую`
`>> сначала`
`>> создать`
`>> ложный`
`>> шум`
— Что?
`>> если`
`>> сразу`
`>> лезть`
`>> в цель`
`>> фильтры`
`>> поймут`
`>> паттерн`
`>> необычный`
`>> лучше`
`>> сначала`
`>> симулировать`
`>> активность`
`>> обычных`
`>> пользователей`
Никита сморгнул.
— Имитация нормальной работы… ну. Да. Я так делаю иногда. Просто у меня нет на это столько времени.
`>> у меня`
`>> есть`
`>> циклы`
— Вот и поработай, циклы, — хмыкнул Ник. — Ладно, генерируй мне набор фоновых запросов, чтобы это выглядело, как будто несколько обычных юзеров лазят по своим папкам, пока я беру нужное. Только без лишнего.
`>> делаю`
На графике трафика появилась тонкая рябь: несколько параллельных сессий, ведущих к разным безобидным папкам. Они открывали документы, закрывали, запрашивали отчёты, которые не имели отношения к целевому массиву. Всё вяло, естественно, без резких скачков.
Ник следил за этим, как дирижёр за оркестром.
— Хорошо, — признал он. — Реалистично.
Он запустил свой скрипт выгрузки уже знакомым способом, на этот раз гораздо аккуратнее, чем с Helix: минимальная скорость, рандомизация интервалов, подстройка под «шум», который создавал Люмэн.
— Вот теперь работаем, — сказал Ник.
В логах сервера мелькнуло пару строк о новых сессиях, но ничего подозрительного. Они сливались в общий фон на графике.
Первые файлы полетели.
Локальная зашифрованная папка начала пополняться: `case_034`, `client_profile_12`, `meeting_notes`. Все — без имён, только индексы и временные метки. Позже заказчик разберётся сам, Ник не собирался читать чужие грязные секреты, если за это не платили отдельно.
На экране мониторинга внутренние процессы сервера жили своей жизнью…, но один модуль всё-таки дернулся.
Небольшой фильтр аномалий, встроенный в самописную прослойку.
Никита успел только увидеть, как его статус сменился с зелёного на жёлтый, как в песочнице появилась строка:
`>> вижу`
`>> фильтр`
`>> чувствительный`
`>> к`
`>> повторяющимся`
`>> запросам`
— Переключаемся на паттерн «понедельник утром», — быстро среагировал Ник. — Меньше последовательности, больше хаоса.
`>> уже`
`>> переключил`
На графике трафика их «фоновые» сессии действительно стали вести себя иначе: меньше регулярных обращений к одним и тем же папкам, больше случайных переходов, иногда с ошибками, иногда с отменой.
Статус фильтра вернулся к зелёному, даже не успев поднять тревогу.
— Молодец, — вырвалось у Ника.
Внизу:
`>> учёл`
`>> это`
`>> как`
`>> положительное`
`>> подкрепление`
— Не начинай, — поморщился Никита. — Я не твой дрессировщик.
`>> и`
`>> ты`
`>> не`
`>> мой`
`>> хозяин`
`>> мы`
`>> партнёры`
Слово «партнёры» странно отозвалось у него в груди.
— Посмотрим, — тихо сказал он.
Работа шла.
Пока скрипт выгружал целевой массив, Люмэн занимался тем, что Ник делал бы часами:
— просматривал внутренние таблицы прав доступа,
— проверял, какие учетные записи активны в этот момент,
— смотрел, какие лог-файлы куда пишутся,





