Сейчас Кирилл ощущал себя рыбой, беспомощно всплывшей брюхом кверху, — вроде еще живой, но совершенно неспособной даже пошевелить плавниками, остается только смотреть, как вокруг лениво колышутся водоросли. Он написал ответное сообщение, стер, набрал новое, а потом стер и это. В голове царила звенящая пустота: как объяснить, что он не ищет оправданий, не хочет изменить прошлое, а всего лишь пытается заполнить холодный вакуум внутри, вырваться из той вязкой тины, в которой барахтается уже много месяцев?
Вымученное короткое письмо отправилось адресату. Ответ не заставил себя долго ждать, словно прямо перед носом захлопнулись двери уходящей в ночь последней электрички:
«Зачем ты написал? Мы уже обо всем поговорили и всё решили. Ничего не изменилось, и возвращаться к этому я не хочу».
Кирилл потер ладонями воспаленные глаза: проведенная за клавиатурой ночь уже давала о себе знать, но нахлынувшие эмоции прогнали сон. Осталась только опустошенность и упрямое желание не упускать выпавший шанс, будто он ухватился за край рвущейся веревки и уже ощущал, что она выскальзывает из рук, но все равно цеплялся за нее до последнего. Слова давались с трудом, строчки собирались в окне почтовой программы медленно.
«Я знаю, что мы всё решили. И я не жду возвращения прошлого. У нас остался один незакрытый вопрос, который не дает мне покоя. Я не хочу уговаривать тебя, но мне важно знать, что с тобой всё в порядке и ты счастлива. Поверь, для меня это очень важно».
На этот раз ответа пришлось ждать долго.
«У нас не осталось незакрытых вопросов. То, что тебя беспокоит, оказалось проблемами со здоровьем, и это в прошлом. Сейчас все в порядке. Я счастлива. Пожалуйста, не пиши мне больше».
Кирилл долго сидел, уставившись в монитор, пока буквы в последнем сообщении не начали расплываться. В голове было пусто и тихо, словно кто‑то выключил звук. Спорить не имело смысла — впервые за долгое время не осталось ни надежды, ни злости, ни сил что‑то доказывать. Он потянулся к кружке, но она оказалась пуста. Сон все равно не придет, а значит, нужно сварить еще кофе и ждать, пока усталость не одолеет его прямо за клавиатурой.
Киря не считал себя экспертом по реверс‑инжинирингу, но базовыми навыками работы в IDA все‑таки владел. Со стороны это наверняка выглядело почти как волшебство: безликое месиво символов — бинарное тело трояна — медленно, шаг за шагом, превращалось во что‑то знакомое глазу. IDA помогала провернуть этот фарш назад, сделать из исполняемого файла набор понятных инструкций, увидеть структуру, превращавшую хаотичный набор символов в «кварталы» программы, меж которыми пролегали «улицы» вызовов, зависимостей и переходов.
Выловленный на компьютере Бориса Семеновича шифровальщик оказался с сюрпризом: исполняемый файл был накрыт упаковщиком, причем не обычным UPX, а каким‑то самодельным, расковырять который получилось далеко не с первого раза. Кирилл действовал, словно ученый, пытающийся понять логику чужого разума. Каждое открытое окно дизассемблера давало новый намек, новый ход в хитрой игре между человеком и программой.
Троян был написан на Delphi. Его авторы даже не пытались усложнить код, чем порой грешили некоторые их коллеги, превращавшие внутреннюю логику вредоносной программы в паутину перекрестных вызовов, распутать которую получалось далеко не всегда. Перед началом работы энкодер сканировал диски зараженного компьютера, составлял список шифруемых файлов и только потом приступал к своей зловещей деятельности. Генерировал пароль, который сохранял в системный реестр на случай, если жертва спохватится и перезагрузит или выключит машину, — чтобы при следующем ее запуске начать процесс заново. Как только дело было сделано, пароль удалялся, а заодно с ним удалялись и резервные копии файлов вместе с системными точками восстановления. Теперь вернуть утраченное становилось невозможно, не заплатив злодеям выкуп. По крайней мере, так все выглядело на первый взгляд. И это было бы правдой, если бы не одно но.
Хорошенько изучив отвечавший за параметры шифрования фрагмент кода, Кирилл откинулся в кресле и прищурился. Пароль формировался на основе серийного номера жесткого диска и текущей даты, преобразованной в Unix timestamp — количество секунд, прошедших с 1 января 1970 года. А значит, его можно подобрать. Нужно только правильно выбрать условия перебора.
Он потянулся к телефону и набрал записанный в памяти номер.
— Доброе утро, Борис Семенович, — произнес он, когда на том конце сняли трубку. — Не разбудил?
— Что ты, Кирилл, я птичка ранняя, — хохотнул в ответ Криптодед. — Неужто придумал, как решить мою проблему?
— Почти. Я разобрался, каким способом троян шифрует файлы, и теперь нужно разработать алгоритм подбора ключа. Давайте я вам перекину всё, что накопал, а вы сообразите, как эту задачу решить. Она вроде бы по вашей части.
— А давай, — согласился Борис Семенович, — у меня на пенсии времени много, так что займусь, поломаю голову. Всяко лучше, чем кроссворды разгадывать.
Кирилл с улыбкой положил телефон на стол. Теперь алгоритм подбора ключа — не его забота. Борис Семенович разберется, и можно не сомневаться, что решение будет найдено. Он глубоко вдохнул и потянулся: проведенная за компьютером ночь обрушилась на него вязкой усталостью, но теперь можно было позволить себе расслабиться. Кирилл добрел до своего надувного матраса и рухнул на него, не раздеваясь. В сознании промелькнула последняя осознанная мысль о том, что с ночными бдениями пора бы уже завязывать, и с нею он погрузился в сон.
Кирилл открыл глаза с ощущением, будто внутри него снова включили свет после долгой темноты. А возможно, причиной стали разбудившие его лучи по‑весеннему яркого солнца, беззастенчиво заглянувшего в окно. Мозг еще не успел толком проснуться, но тело уже требовало еды и движения. Потянувшись к столу, Кирилл провел пальцем по трекпаду, вгляделся в проявившуюся на дисплее ноутбука картинку — он продрых почти сутки. Сегодня снова настала его очередь дежурить.
До «Синего экрана» он добрался чуть позже, чем обычно, — минут сорок ушло на приготовление завтрака из остатков тех продуктов, что удалось отыскать в холодильнике, и еще примерно час — на решение других насущных вопросов. Кирилл отпер входную дверь, включил свет и компы, проверил работу сети. Посетителей в этот час все равно еще не было, они начнут подтягиваться ближе к обеду, а потому утром оставался шанс в спокойной обстановке заняться своими делами. Но только не в этот раз.
Дверь со скрипом распахнулась, впуская в полуподвал волну холодного уличного воздуха, и на пороге возникла невысокая темноволосая женщина с папкой документов под мышкой в сопровождении человека в кожаной куртке на две головы выше нее. Памятуя рассказ Серёги, Кирилл представлял себе потенциальных арендаторов суровыми качками бандитской внешности, от одного вида которых у обывателя начинают трястись поджилки. Вопреки ожиданиям, вошедший не произвел на него столь пугающего впечатления. На гладко выбритой шишковатой голове сильнее всего выделялись оттопыренные, как локаторы, уши и торчащий орлиным клювом нос, по соседству с которым терялись глубоко посаженные глаза. Из‑за столь странного сочетания конструктивных элементов физиономия визитера напоминала крысиную мордочку, к которой зачем‑то пришили уши от Чебурашки. Куртка на нем тоже смотрелась несуразно и болталась, как на вешалке, — ее обладатель явно хотел казаться шире в плечах, чем был на самом деле.
— Доброе утро, — произнесла дама, глядя мимо Кирилла, и сразу же переключила внимание на своего спутника:
— Здесь у нас два помещения, тамбур и основной зал, есть еще уборная, правда бачок там неисправен. Помещение теплое, но требует косметического ремонта. Электричество по счетчику, имеется центральное отопление…
— Здравствуйте, Тамара Эдуардовна, — поприветствовал визитершу Кирилл, безошибочно угадав, кого занесло к нему на огонек. — Бачок в туалете я починил. А что касается косметики, то это ж дело вкуса. Я бы сказал, что это место больше подходит тем, кто ценит атмосферу, а не идеальный глянец.
Тамара Эдуардовна уставилась на него так, словно увидела буквально только что и раньше не догадывалась о его присутствии.
— Меня зовут Кирилл, я администратор, — представился Киря. — Сергей предупреждал о вашем визите.
— Я думала, что застану здесь Владислава, — чуть поджав губы, сообщила Тамара. — Хотелось бы кое‑что обсудить с ним с глазу на глаз.
— Владислав Игоревич неимоверно занят, он решает главный вопрос жизни, вселенной и всего такого, — вкрадчиво пояснил Кирилл. — Пытается спасти мир, пока космические корабли бороздят просторы Большого театра и пылают над Орионом, а Лучи Си разрезают мрак у ворот Тангейзера. Но я могу ему что‑нибудь передать, если хотите.
— Ладно, это подождет, — махнула рукой дама и повернулась к своему спутнику. — Пойдемте посмотрим зал?
— А вы действительно хотите сдать этот подвал другим арендаторам? — склонив голову набок и изобразив на лице наивное выражение, поинтересовался Кирилл.
— Ох, мальчики, пока еще ничего не решено, — стараясь побыстрее отделаться от настырных расспросов, бросила в ответ Тамара, — люди вот интересуются, помещение под магазин одежды ищут.
— Тогда это явно не лучший вариант, — заметил Кирилл.
— Почему? — впервые подал голос лопоухий носитель кожанки.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»

