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