ГЛАВА 1: МАЛЕНЬКИЙ ДРАКОН (2012–2016)
Шанхай, 23 ноября 2012 года. 03:30.
Комната была инкубатором. Тёплый, спёртый воздух пах остывшей лапшой из пенопластовых коробок, пылью, нагретым пластиком и отчётливым запахом горячего текстолита и лака от электроники, работающей на пределе. Центром этой маленькой вселенной, её солнцем и чёрной дырой одновременно, был компьютер. Не заводская сборка, а собранный вручную монстр, уродливый и асимметричный, с пучками проводов, стянутых пластиковыми хомутами, как вены. Три монитора разной диагонали и возраста отбрасывали на лицо пятнадцатилетнего Лю Вэя мертвенный свет. В этом свете его кожа казалась почти прозрачной, а под глазами она потемнела, будто её придавили изнутри.
Вокруг этого алтаря царил хаос подростка, давно забившего на реальный мир. Пирамиды из коробок лапши грозили обрушиться от любого неосторожного движения. Стопки старых технических журналов подпирали ножку шаткого стола. Сквозь гул системных блоков пробивался надрывный гул вентилятора блока питания, который Лю Вэй ощущал скорее через дешёвый пластик стола, чем ушами. Этот гул от перегруженного блока питания был фоновым шумом его цифрового существования. Он не замечал его сознательно, но отсутствие этого гула ощутил бы как внезапную, давящую пустоту, которая мгновенно вызвала бы приступ тревоги.
Его пальцы не стучали по клавиатуре. Они порхали. Лёгкие, точные касания, больше похожие на игру пианиста, чем на работу программиста. На центральном мониторе, в чёрной бездне терминала, бежали вверх зелёные строки. Это не было похоже на голливудский взлом – никакой трёхмерной графики, никаких кричащих надписей «ДОСТУП РАЗРЕШЁН». Это была кропотливая, почти медитативная работа. Три недели назад, копаясь в архивных репозиториях американской биотехнологической корпорации на GitHub, он нашёл то, что искал. Дыру. Не огромную брешь, а крошечную трещину в фундаменте – уязвимость в устаревшем API-интерфейсе для загрузки файлов, который администраторы забыли отключить. Реликт из начала двухтысячных, покрытый цифровой пылью.
Он не ломал дверь. Он нашёл ключ, который забыли под ковриком десять лет назад.
Сейчас он методично, шаг за шагом, расширял эту трещину. Загружал небольшой скрипт, замаскированный под системный пакет обновления, который должен был дать ему права локального пользователя. Это была самая тонкая часть работы. Любой современный файрвол или система обнаружения вторжений забила бы тревогу, но он делал ставку на человеческий фактор: на то, что никто не следит за активностью на давно списанном в утиль участке кода. Он был реставратором, вскрывающим краску по старой трещине.
Внутренний монолог Лю Вэя был лишён слов. Он состоял из команд, вероятностей и векторов атаки. Пакет пошёл. Ответ от сервера… код 200. Принято. Теперь запуск. Маскировка под cron.daily. Низкий приоритет. Пусть спит, пока система не сочтёт его своим. Он не думал, он вычислял. Мир за пределами мониторов перестал существовать. Не было ни бабушки, спящей в соседней комнате, ни школы, куда нужно было идти через четыре часа. Была только система и тонкая нить соединения между ними.
На боковом мониторе, где в реальном времени транслировался системный лог сервера, мелькнула новая строка. sshd: Accepted publickey for admin_jones from 10.0.1.5 port 22.
Пальцы замерли в миллиметре от клавиш. Он перестал дышать.
Администратор. Системный администратор компании зашёл на сервер. Сейчас. В три сорок семь утра по Шанхаю, что означало обеденный перерыв по калифорнийскому времени. Рутинная проверка. Ночной бэкап. Случайность. Но в его мире случайностей не бывало. Были только неучтённые переменные. Сердце, до этого бывшее фоновым процессом, вдруг дало сбой. По груди прошёл тугой, болезненный толчок, словно система ушла в аварийную перезагрузку.