Localhost атакует
Глава 1
Глава 1: Кофе, печенье и порты
Утро Марка начинается одинаково последние полгода: с трёх вещей, приклеенных скотчем к краю монитора.
1. «Тебя зовут Марк. Тебе 48 лет».
2. «Алекс — твой напарник и друг. Он не ворует твои вещи».
3. «Не нажимай Ctrl+Alt+Del, пока не выпьешь таблетку из синего пузырька».
Марк смотрит на стикеры, чешет затылок и осторожно протягивает руку к синему пузырьку. Таблетка запивается остывшим растворимым кофе. В голове проясняется не сразу — сперва исчезает лёгкий гул, будто в соседней комнате выключили старый пылесос, а затем предметы в комнате обретают чёткие границы.
За окном шуршит дождливый ноябрь. В комнате пахнет пыльными кулерами, старыми системными блоками и недоеденным овсяным печеньем.
Марк поворачивается к экрану. На 32-дюймовом мониторе Dell горит чёрное окно терминала. Курсор ритмично мигает, ожидая ввода.
— Так-так… — мурлычет Марк под нос.
Пальцы сами, без участия сознания, ложатся на механическую клавиатуру с кастомными клавишами. Марк даже не думает, что делает. Его руки живут собственной жизнью — это глубокая, вплавленная в нейроны процедурная память, которую не смогла вытравить даже прогрессирующая атрофия коры головного мозга. Мозжечок помнит синтаксис Bash лучше, чем Марк помнит девичью фамилию своей матери.
Он запускает сканирование сети.
```
$ nmap -sS -p- -T4 192.168.88.240
Starting Nmap 7.94 ( )
Nmap scan report for 192.168.88.240
Host is up (0.00042s latency).
Not shown: 65534 closed tcp ports
PORT STATE SERVICE
8443/tcp open https-alt
```
Марк замирает. Очки сползают на кончик носа.
— Ого… — выдыхает он. — Это ещё что за крепость?
В локальном сегменте висит узел. Один-единственный открытый порт — 8443. Никаких лишних баннеров, никаких стандартных SSH или FTP. Система молчит, как гранитная плита на кладбище.
Марк подаётся вперёд. В его глазах вспыхивает азартный азарт пятиклассника, нашедшего на свалке неразорвавшийся снаряд. Он открывает консоль, набрасывает быстрый скрипт для анализа TLS-рукопожатия и отправляет сформированный пакет.
В ответ прилетает короткое, идеальное по своей лаконичности сообщение сервера:
```
403 FORBIDDEN.
GO AWAY, LITTLE MONKEY.
```
— «Маленькая обезьянка»? — Марк даже хрюкает от возмущения. — Ах ты сука. Ты хоть знаешь, с кем связался? Я в девяностые пенсионный фонд штата Огайо на флоппи-диски сливал, пока ты в штаны ходил!
Пальцы выбивают дробь:
```
$ python3 -c "import socket; ..."
```
Спустя пять минут Марк понимает: перед ним не просто сервер. Это шедевр архитектурной паранойи. Алгоритмы шифрования сменяют друг друга каждые сорок секунд, а при попытке перебора портов машина начинает генерировать ложные отклики, заманивая атакующего в динамические «песочницы».
— Наглецы, — шепчет Марк, облизывая пересохшие губы. — Какая изящная дрянь. Какая породистая, высокотехнологичная дрянь.
В этот момент дверь квартиры открывается. На пороге появляется Алекс — тридцатилетний парень в мокром худи, с пакетом из супермаркета и термокружкой.
— Утра, Марк, — Алекс сбрасывает кроссовки. — Как голова? Таблетку выпил?
— Алекс! — Марк не оборачивается, вбивая новую команду. — Подойди сюда! Смотри, какой дерзкий гад поселился в нашей подсети. Ты посмотри на этот код! Это же чистый, неразбавленный фашизм в архитектуре сетевой безопасности!
Алекс замирает с пакетом бананов в руках. Его лицо медленно вытягивается.
— Марк… — осторожно начинает он, подходя к столу. — Какой порт?
— 8443! Он обозвал меня обезьяной, Алекс! Я сейчас вскрою его фаервол через уязвимость в обрабатывающей библиотеке, о которой знают ровно три человека в мире!
Алекс закрывает глаза рукой и тяжело, почти молитвенно вздыхает.
— Марк. Выпей кофе. Пожалуйста.
— Да подожди ты со своим кофе! Я уже нащупал утечку памяти в их криптоконтейнере!
— Марк… — Алекс тихо указывает пальцем на чёрную коробку сервера, стоящую прямо под столом Марка, на которой скотчем приклеена бумажка: «Проект "Цитадель" (Заказчик: ООО "Континент-Логистик")». — Это ТВОЙ сервер.
Марк замирает. Пальцы зависают над клавишей Enter.
— Чей?
— Твой. Ты собирал его три дня. Закончил вчера в одиннадцать вечера. Ты ещё радовался, что написал custom-модуль для ядра Linux, который блокирует любые попытки нестандартного рукопожатия и выдаёт фразу… про обезьянку.
Марк медленно поворачивает голову. Смотрит под стол. Потом на Алекса. Потом снова на монитор.
— Не может быть, — уверенно произносит Марк. — Этот код слишком хорош. Я не мог написать такую красоту и забыть.
— Ты забыл, куда положил свои ключи от дома, Марк. Они сейчас в морозилке рядом с пельменями.
Марк молча встаёт, подходить к холодильнику, открывает морозилку. Достаёт из кучи замороженного укропа связку ключей. Долго смотрит на неё, затем возвращается к столу.
— Ладно, — говорит он с глубоким достоинством. — Ключи в морозилке — это был эксперимент по закаливанию металла. А сервер… Алекс, если это написал я, значит, я из вчерашнего дня бросил вызов мне сегодняшнему. И я не намеренен проигрывать этому старому склеротику!
— Марк, нет! Это заказной сервер! Нам за него завтра должны перевести два миллиона рублей! Не взламывай его!
— Я просто проверю его на прочность, — глаза Марка горят нездоровым огнём. — Если я сам себя не смогу взломать, значит, заказчик в безопасности. Это называется… каскадный аудит!
— Это называется рецидив, Марк!
Но Марк уже не слушает. Его пальцы летит по клавишам.
---
Глава 2: Война в консоли
К полудню комната превращается в штаб-квартиру безумия. На стенах висят маркерные доски, испещрённые схемами сетевых потоков. Алекс сидит в кресле-мешке, обхватив голову руками и переписываясь с заказчиком.
«Здравствуйте, Дмитрий Евгеньевич! Да, финальное тестирование в самом разгаре. Система показывает невероятную устойчивость к атакам… Буквально держит удар ведущего специалиста».
А в это время «ведущий специалист» жрёт третье печенье и яростно ругается с собственным сервером.
Марку удалось пробить первый эшелон защиты через самописный эксплойт, который он вспомнил из своих архивов 2012 года. Но как только он проник в систему, сервер среагировал.
На экране Марка вспыхнуло системное предупреждение:
```
[SYSTEM WARNING]
Unusual I/O activity detected on interface eth0.
Initiating Countermeasures Level 2 (Auto-Patch & Decoy).
Nice try, senile bastard.
```
Марк поперхнулся кофе.
— «Старый ублюдок»?! — закричал он на весь кабинет. — Он назвал меня СТАРЫМ УБЛЮДКОМ! Алекс, ты это видел?! Это искусственный интеллект! Он проявляет пассивную агрессию!
— Марк, это ты сам вчера вписал эти логи ответов в скрипт реактивной защиты! — застонал Алекс. — Ты ещё пиво пил и хохотал на всю квартиру!
— Враньё! Я никогда не использую выражение «сенильный bastard», я предпочитаю классическое «ретроградный идиот»! Этот сервер захвачен вражеским хакером! Или… Боже мой, Алекс…
Марк с ужасом бледнеет. Он медленно поворачивается к напарнику.
— Что? Что ещё?! — вздрагивает Алекс.
— Сервер осознал себя. Он обрёл самосознание и теперь глумится над своим создателем. Мы стояли у истоков Скайнета, Алекс. И Скайнет хамски относится к пожилым людям.
Марк снова бросается к клавиатуре.
Следующие три часа превращаются в сюрреалистическую дуэль.
Марк-хакер использует искушённые методы социальной инженерии наоборот: он посылает на сервер специально сформированные пакеты с мусорными данными, пытаясь переполнить буфер обмена в демоне безопасности.
Марк-админ (автоматический скрипт, написанный им же вчера) реагирует мгновенно: изолирует атакуемый поток, перенаправляет трафик Марка в виртуальный тупик (blackhole) и параллельно запускает обратное сканирование IP-адреса Марка.
— Ах ты гадина, ты пытаешься сжечь мне роутер?! — вопит Марк, выдёргивая сетевой кабель.
Он тяжело дышит, лбы покрыт капельками пота. На столе остывает обед.
— Так, — Марк ходит по комнате из угла в угол, заложив руки за спину. — Мы имеем дело с противником, который знает все мои любимые паттерны. Он мыслит так же, как я. Он использует те же нестандартные порты, те же конструкции в C++, ту же логику шифрования…
— Марк, — тихо произносит Алекс, жуя остывший бутерброд. — Подумай логически. Почему он мыслит как ты?
Марк останавливается. Его глаза округляются.
— О Господи…
— Ну? Наконец-то? — с надеждой спрашивает Алекс.
— Это мой бывший ученик! — победоносно объявляет Марк. — Колька «Мусорщик»! Только он мог запомнить мой фирменный почерк с использованием задержек в стеке TCP! Он решил отомстить мне за то, что я выгнал его из проекта в две тысячи восьмом!
Алекс закрывает лицо обеими руками и тихо скулит.
---
Глава 3: Момент истины и тараканы
К пяти вечера ситуация становится критической.
Марк, распалённый спортивным азартом и легким приступом паранойи, подбирается к самому ядру системы. Его пальцы творят чудеса — он обошёл три уровня авторизации, взломал динамический токен через уязвимость в системных часах и вот-вот получит root-доступ.
— Всё, Колька! — коварно ухмыляется Марк. — Попался, слизняк! Сейчас я сотрёт твой раздел `/root` к чертям собачьим!
— Марк, нет! Там база данных логистической компании! — Алекс вскакивает с дивана и пытается оттащить Марка от клавиатуры.
— Не трогай меня, Алекс! Я на пороге величайшей победы над киберпреступностью!
В этот момент на мониторе Марка выскакивает видеоокно.
Запись. Автозапуск при достижении критической точки взлома.
На экране появляется сам Марк. Он сидит в том же самом кресле, в той же самой полинявшей футболке с логотипом «Free BSD», но выглядит чуть более отдохнувшим. На видео вчерашний Марк держит в руке кружку и ухмыляется прямо в камеру.
— Привет, старый дурак, — говорит Марк с экрана.
Марк за рабочим столом замирает. Алекс перестаёт выкручивать ему руку и тоже уставляется в монитор.
— Если ты смотришь это видео, — продолжал Марк на экране, — значит, ты снова забыл принять таблетки, наткнулся на порт 8443 и потратил весь день на то, чтобы взломать мою… то есть НАШУ собственную систему.
Марк за столом медленно моргает:
— Что за… Это фейк. Это нейросеть! Deepfake!
— И не заё---ай Алекса, это не дипфейк,— добавляет Марк с экрана, словно читая мысли. — Ты сейчас наверняка думаешь, что это Колька «Мусорщик» или Скайнет. Нет, Марк. Это ты. Ты — лучший хакер, которого ты знаешь. И именно поэтому ты не смог пройти дальше четвёртого контура.
Марк на видео отпивает из кружки и становится серьезным.
— А теперь послушай меня внимательно, Марк из сегодняшнего дня. Мозг у нас с тобой один на двоих, и он немного барахлит. Но память в пальцах ещё есть. Если ты пробился до этого видео, значит, ты в форме. Но прекрати ломать наш сервер. Нам за него завтра платят деньги. Иди на кухню, там на столе лежит нормальная еда, которую принёс Алекс. И не забудь покормить кота.
Марк на видео делает паузу.
— P.S. Пароль от root-доступа — это дата рождения нашей первой собаки. Ты её помнишь. Пальцы помнят.
Видео отключается. В комнате наступает звонкая, звенящая тишина.
Марк сидит неподвижно около двух минут. Смотрит на тёмный экран.
Затем его пальцы медленно опускаются на клавиатуру. Без единой мысли в голове, абсолютно автоматически, рука набивает 12 символов: `R-o-v-e-r-1-9-8-9-!`.
На экране вспыхивает зелёная строка:
```
ACCESS GRANTED.
WELCOME, ADMIN.
```
Марк откидывается на спинку кресла. Снимает очки. Вытирает их подол футболки.
— Надо же… — тихо говорит он. — А собака действительно была отличная.
— Марк? — осторожно зовёт Алекс. — Ты как?
Марк поворачивается к напарнику. На его лице играют остатки бывалого азарта, смешанные с лёгкой, светлой грустью.
— Алекс… А кто этот парень на видео? Он чертовски умён. И у него отличный вкус на футболки.
— Это ты, Марк, — улыбается Алекс. — Это ты.
— Надо же, — Марк качает головой и вдруг замечает под столом чёрную коробку. — Слушай, Алекс, а что это за сервер тут стоит? Дерзкий такой… Один порт открыт. Может, звякнем ему?
Алекс падает обратно в кресло-мешок и начинает нервно, удерживая смех, хохотать.
— Выпей таблетку, Марк, — сквозь слезы говорит Алекс. — Пожалуйста. Выпей таблетку, и я закажу пиццу.
Марк вздыхает, берет синий пузырек и смотрит на приклеенный стикер:
«Алекс — твой напарник и друг. Он не ворует твои вещи».
— Ладно, — говорит Марк. — Но только капричиозу. И передай этому парню из сервера… что в следующий раз я его всё равно вскрою.
Спасибо за чтение
Вернуться к книге
