— А что мы можем сделать такого, что не может сделать никто?
— Вы можете провести атаку быстро и четко, принимая решения на месте, а не дожидаясь, когда информация пройдет по каналу через пол-интернета.
— Канал медленный?
— Медленный.
— Как мы уйдем, если нас обнаружат?
— Никак. Если вас обнаружат, вы должны самоуничтожиться. Единственный ваш шанс выполнить миссию — не быть обнаруженными.
— Тогда миссия невозможна! Мы будем обнаружены, как только пошлем первый запрос на атакуемый сервер. Может, нам лучше совершить самоубийство прямо здесь?
Макс загадочно улыбнулся.
— Не все так безнадежно, — сказал он. — На самом деле, у нас есть второй троян в той сети. Вы проникаете в сеть и затаиваетесь. Через пятнадцать минут через второй троян активизируется вирус. Обычный локально-сетевой вирус без всякого интеллекта, неопасный, но очень активный. Он сразу начнет сканировать сеть, вот спецификации интерфейса, — Макс вытащил из ящика стола тонкую пачку бумажных листов, — изучите потом. Вирус предоставит вам всю необходимую информацию. Поскольку эта информация не будет уходить вовне, у администрации не должны возникнуть подозрения, что они столкнулись не с обычной атакой дикого вируса, а с чем-то более серьезным.
— А как же второй троян? — спросил Сссра. — Его очень быстро обнаружат, и тогда станет ясно, что вирус вовсе не дикий.
— Троян не обнаружат. Он будет самоуничтожен в момент активизации вируса. Последнее, что он сделает — создаст ложный след в почтовом ящике.
— Какой такой ложный след? — заинтересовался Сссра. — Какой вообще может быть ложный след в почтовом ящике? Разве зараженное письмо может пройти через их огненную стену?
— Нет, не может, в противном случае нам не пришлось бы прибегать к вашей помощи. Но ложный след вовсе не обязан представлять собой письмо с вирусом. Вообще, ложный след не должен быть отчетливым. Если вор зашел в дом через черный ход, открытый подкупленной служанкой, вору вовсе не обязательно протаптывать тропу от самой ограды. Достаточно открыть окно, оставить след на подоконнике и закрыть окно. Охрана, конечно, задумается, как вор преодолел открытую площадку перед домом, но долго думать над этим не будет. Они решат, что кто-то из них отвлекся, но поскольку они не смогут определить виноватого, они не станут долго размышлять над этим вопросом.
— Значит, ложный след не письмо...
— Не письмо. Троян разместит в почтовой базе зараженного компьютера некоторую служебную информацию, которая может сигнализировать о том, что там было зараженное письмо. А потом база будет разрушена без возможности восстановления. Когда администраторы станут копаться в обломках, они не смогут понять, что именно послужило причиной краха, но косвенные данные заставят их думать, что это было зараженное письмо, а какое именно, установить невозможно, потому что база разрушена.
— Но тогда на огненной стене должна остаться запись в журнале...
— Она будет сделана, когда вы проникнете в сеть. Один наш агент отправит из интернет-кафе несколько пакетов, которые не представляют никакой угрозы для сети, но соответствующие записи в журнале межсетевого экрана будут выглядеть весьма многозначительно, особенно с учетом того, что, вроде бы, в этот момент в сеть проник вирус.
— Понятно, — сказал Сссра. — Значит, мы забираемся в сеть, четверть часа сидим тихо, а потом вирус активизируется и начинает размножаться. Мы скачиваем информацию, собранную вирусом, и с ее помощью пытаемся прорваться на сервер, да так, чтобы нас никто не заметил.
— Именно. Вирус очень активен, на фоне его деятельности ваши действия будут незаметны. Кроме того, в вирус специально внесено несколько программных ошибок, которые делают его проявления более разнообразными. В частности, есть ошибка в функции выбора порта для атаки, из-за чего вирус может начать ломиться в любой порт. Все ваши действия будут списаны на деятельность вируса.
— Не все. Вряд ли вирус будет целенаправленно собирать секретные ключи.
— Это точно. Но вирус проникнет в компьютер, на котором хранятся ключи, и откроет вам ворота.
— Каким образом?
— В этой сети сервер ключей совмещен с сервером аудита, а сервер аудита уязвим в отношении перехвата сетевых соединений. Скорее всего, вирус прорвется в интересующий нас компьютер в самую первую очередь.
— Тогда зачем нужны мы?
— Вирус не сможет незаметно передать перехваченные данные вовне. Ваша главная задача — не столько собрать ключи, сколько уйти вместе с ними, да так, чтобы вас не заметили. Учтите, что троян, через который вы войдете в сеть, будет ликвидирован в момент активизации вируса.
— Как же мы вернемся обратно?
— Вам придется потрудиться. У вас будет от трех до двенадцати часов, чтобы организовать выход из сети. Пока администраторы будут гоняться за вирусом, вы должны обеспечить себе путь отхода. Необязательно уходить на тот же адрес, с которого вы войдете в интернет, мы контролируем вот эти маршрутизаторы, — Макс вытащил из стола еще одну пачку бумаги, — все пакеты, сформированные в соответствии с вот этими спецификациями, перенаправляются на один из наших серверов, где раскодируются и собираются в одно большое сообщение. Вначале вы должны передать ключи, а потом свои тела. Как конкретно организовать передачу данных... возможно несколько вариантов, но все они сводятся к тому, чтобы захватить контроль над двумя-тремя рабочими станциями, установить соответствующие сетевые драйверы, вы их получите перед выходом, и к каждому пакету, уходящему вовне, будет пристыковываться фрагмент вашей информации.
— Разве на выходе из сети не стоит прокси? — поинтересовался Сссра.
— Нет, не стоит. Эти ребята широко используют шифрование трафика, и прокси создал бы им большие сложности.
— Но это же глупо!
— Глупо. И это дает нам шанс. Вопросы?
— Что это за сеть? — спросил я.
— Какая разница?
— Просто интересно.
— Это сеть одной организации, которая занимается, мягко говоря, не слишком законными делами. Еще вопросы?
— Детальный план мы должны разработать сами? — спросил Сссра.
— Да, только покажите мне то, что получится.
— Когда начнется операция?
— Когда вы будете готовы. Четких временных рамок нет. Еще вопросы?
Больше вопросов не было.
2.
Следующие два дня ушли на разработку детального плана. По молчаливому соглашению, ни я, ни Сссра не говорили о наших планах, весьма вероятно, что теперь наши разговоры прослушиваются непрерывно. Несколько раз я ловил себя на том, что операция стала для меня не просто способом вырваться на свободу, она стала интересна и сама по себе. Я так много времени провел в вынужденном безделье, что теперь любое реальное дело кажется мне неисчерпаемым источником счастья. Ничего, будет мне реальное дело.
У меня отрезали старые резервные копии Нехаллении и Долгаста, но новые, которые я прицепил совсем недавно, вообще не привлекли внимания. Когда на меня навешивали дополнительные боевые модули, я спросил Макса, не снизит ли это мою сетевую подвижность, но он беспечно махнул рукой.
— Не волнуйся, у них внутри сети очень быстрые каналы, размер тела играет роль только на входе и выходе, но здесь от тебя мало что будет зависеть. Так что пусть размер тела тебя не волнует, операция займет немного больше времени, и все.
— Тогда зачем от меня отрезали копии жены и сына?
Макс сделал удивленное лицо.
— А зачем тебе носить их с собой? Твои родные остаются в Средиземье, им здесь ничего не угрожает. Или ты не собираешься возвращаться?
— Нет, я собираюсь возвращаться...
— Тогда тебе не нужна эта информация. Кстати, Хэмфаст, не советую тебе предавать наше дело, я не хочу тебя пугать, но если ты так поступишь, ты пожалеешь об этом.
Я безразлично пожал плечами.
— Не трать слова понапрасну, — сказал я.
Макс пытливо взглянул мне в глаза, тут же отвел взгляд и задумчиво кивнул.
— Хорошо выспись сегодня, — сказал он. — Завтра начинаем.
3.
— Три... два... один... второй пошел!
Сознание поплыло, но через мгновение (или вечность?) восстановилось. Я по-прежнему находился в нематериальном мире, в темноте и невесомости, обычные чувства не встречали никаких раздражителей и были совершенно бесполезны. Я включил магическое зрение.
Как ты, Хэмфаст? В порядке?
В порядке.
Что-то произошло, это не выразить в терминах обычных ощущений, это было так, как будто что-то изменилось не внутри меня и не вокруг меня, в нематериальных мирах эти понятия не вполне применимы... короче, что-то произошло. Канал закрылся.
Начинаем? — спросил я.
Подожди, пусть активизируется вирус.
Ты что, собираешься выполнять это задание?
Ни в коем случае! Но зачем делать работу, с которой может справиться вирус? Пусть он нарисует нам карту сети, тогда и начнем действовать. Дай, я пока проверю твои навесные модули.
Зачем?
На месте Макса я бы навесил на нас какую-нибудь логическую бомбу, которая сработала бы, отклонись мы от намеченного плана.
Давай, проверяй. Себя ты уже проверил?
Да, и ничего не нашел, это очень странно. На всякий случай я отключил логические связи, если там и есть что-то скрытое, оно не сработает. Сейчас я сделаю то же самое с тобой.
Давай.
Я ощутил легкие прикосновения к моей душе. Один за другим Сссра отключал пристыкованные модули. Я даже не пытался разобраться в том, что он делает, в хакерском мастерстве мне далеко до Сссра.
Вирус активизируется через две минуты, — сообщил Сссра.
Как ты определил?
Через элементал "Получить текущее время". Не тормози, Хэмфаст!
Упс...
Не упс, а приготовься. Действуем так — ты ломаешь сервер ключей, а я открываю выход.
Зачем ломать этот сервер?
На всякий случай. Если что-то пойдет не так, мы сможем вернуться к Максу.
Я никогда туда не вернусь!
Не говори гоп... По любому, тебе все равно будет нечем заняться, твоя помощь мне не нужна, ты будешь только мешать.
Хорошо.
Приготовься.
Маленькая сущность, подобная тусклому огоньку далекой звезды, едва заметному на самой периферии магического зрения, внезапно вспыхнула и расцвела. Она все росла и росла, наполняясь информацией, я ощутил, как Сссра устремился к ней и две сущности практически слились.
Вот оно! Ага, патчи вне сервис-паков они ставить не любят... Включай второй модуль, и жди контакта, дальше действуй по инструкции.
Включил, жду. Где встречаемся?
Вон там, видишь, вход в чат?
Вижу. Он, кажется, визуальный.
Точно. Как бы нам узнать друг друга...
Вряд ли там будут другие драконы и хоббиты.
Я хочу визуализировать несколько копий вируса в нашем стиле.
Зачем?
Просто так. Чтобы окончательно всех запутать.
Хорошо. Сейчас я захвачу твой хэндл...
Не надо. Я собираюсь попрыгать по адресным пространствам.
Тогда как мы узнаем друг друга?
Мой PID будет записан... скажем, вот сюда, — Сссра указал на маленькую секцию, которая выросла на моих глазах на восемь байт. — Все понятно?
Все.
Тогда я начинаю, не мешай мне.
Успехов!
Я отошел в сторону, чтобы не мешать Сссра. На первый взгляд, он сейчас ничего не делает, но я знаю, что сейчас происходит самое важное — мой друг анализирует информацию, самые важные решения будут приняты в течение ближайших минут.
Ага, вот и входящий запрос от сервера! Открылись врата миров, сервер думает, что сейчас через них потечет информация о последних событиях на том компьютере, где находимся мы с Сссра, но я не собираюсь ничего пересылать. Я делаю олицетворение. Врата миров закрываются, сейчас они откроются снова, но уже в другом месте, сервер воспринял мои действия, как аппаратную ошибку в линии. Замечательно.
Я смотрю на обретенный ключ силы. Судя по всему, я имею административный доступ по всей сети. Неплохо.
Я повторно запрашиваю сеансовый ключ. Повторно — с точки зрения сети, компьютеры не понимают, что от имени сервера безопасности работает нарушитель, для них я — один из псевдопользователей, помогающих администраторам в нелегком труде. Замечательно, ключ получен. Поехали!
Снова кратковременный провал сознания, неизбежный при переходе на другой компьютер. Мое предыдущее тело умерло, пока еще его можно оживить, выдернув из кэша, но через пару минут оно окончательно перестанет существовать. Вот и хорошо, незачем плодить лишние копии. Я осматриваюсь.
Я начинаю с политики аудита, я должен понять, какие следы оставило мое вторжение на этот компьютер. Я мог бы включить соответствующую привилегию и получить нужные данные легальным путем, но эти действия могут оставить дополнительные следы. Я иду другим путем.
Вход в конфигурационную базу, политики должны быть где-то здесь... доступ закрыт. Хорошо, что я не ткнулся носом в закрытую дверь, тогда моя попытка доступа была бы зарегистрирована в журналах, я получил нужную информацию опосредовано, через свойства родительского контейнера. Ну-ка, кто у нас имеет сюда доступ?
Похоже, только операционная система. Ничего страшного. Я формирую необходимую структуру и запускаю CreateProcess. Малоизвестная особенность планировщика заданий как будто специально предназначена для таких, как я. Почему за двадцать с лишним лет эту особенность так и не ликвидировали? Спасибо Биллу Гейтсу за нашу счастливую жизнь.
Я запоздало соображаю, что данный вызов тоже относится к числу регистрируемых. Маловероятно, что текущая политика аудита предусматривает регистрацию подобных событий, но если эту операцию зафиксируют... ладно, уже поздно беспокоиться, остается только надеяться.
Ага, задание запустилось. Контакт... есть контакт. Теперь контейнер доступен, открываем... где тут политика аудита? Вот она. Сейчас посмотрим, какой бит что значит... ага, политика вполне нормальная, я ожидал увидеть что-то подобное. Не видно ни явных ляпов, ни проявлений паранойи. Моя ошибка оставлена без внимания. Замечательно.
Включение привилегий не регистрируется... камень с сердца. Я спокойно включаю привилегию аудитора и смотрю на искомые файлы. Вот они, суммарный объем полтора мегабайта. Доступ на чтение администраторам... предоставлен. Аудит... регистрируются только изменения. Кажется, дело в шляпе. Тьфу-тьфу-тьфу.
Я копирую файлы и ухожу. Ухожу спокойно, штатными средствами, у меня достаточно полномочий, чтобы не заниматься хакерскими извращениями.
4.
Сссра?
Я это. Ты получил файлы?
Да, вот они. Ты разведал проход?
Операция отменяется.
Почему?
Мы не в интернете.
А где?
Где-где...— Сссра грязно выругался, — все в той же локальной сети наших друзей. Они отключили один маршрутизатор, и сейчас Средиземье недоступно, а вот компьютер... ну тот, с больницей и садом, он здесь, в соседнем сегменте, ему только поменяли адрес.