Иног­да кажет­ся, что интернет — это огромный аква­риум, в котором пла­вают мил­лионы раз­ноцвет­ных рыб. Ты смот­ришь на них сквозь стек­ло монито­ра: вот одна свер­кает наряд­ной чешу­ей, дру­гая машет ярким хвос­том ава­тар­ки, третья лениво пус­кает пузырь­ки пус­тых слов. Но сто­ит при­жать ладонь к стек­лу, и ты понима­ешь: оно холод­ное и неп­роница­емое. Тянуть руку внутрь бес­смыс­ленно — рыбам все рав­но, кто любу­ется на них по ту сто­рону экра­на.

Сей­час Кирилл ощу­щал себя рыбой, бес­помощ­но всплыв­шей брю­хом квер­ху, — вро­де еще живой, но совер­шенно нес­пособ­ной даже пошеве­лить плав­никами, оста­ется толь­ко смот­реть, как вок­руг лениво колышут­ся водорос­ли. Он написал ответное сооб­щение, стер, наб­рал новое, а потом стер и это. В голове царила зве­нящая пус­тота: как объ­яснить, что он не ищет оправда­ний, не хочет изме­нить прош­лое, а все­го лишь пыта­ется запол­нить холод­ный ваку­ум внут­ри, выр­вать­ся из той вяз­кой тины, в которой барах­тает­ся уже мно­го месяцев?

Вы­мучен­ное корот­кое пись­мо отпра­вилось адре­сату. Ответ не зас­тавил себя дол­го ждать, слов­но пря­мо перед носом зах­лопну­лись две­ри ухо­дящей в ночь пос­ледней элек­трич­ки:

«Зачем ты написал? Мы уже обо всем погово­рили и всё решили. Ничего не изме­нилось, и воз­вра­щать­ся к это­му я не хочу».

Ки­рилл потер ладоня­ми вос­пален­ные гла­за: про­веден­ная за кла­виату­рой ночь уже давала о себе знать, но нах­лынув­шие эмо­ции прог­нали сон. Оста­лась толь­ко опус­тошен­ность и упря­мое желание не упус­кать выпав­ший шанс, буд­то он ухва­тил­ся за край рву­щей­ся верев­ки и уже ощу­щал, что она выс­каль­зыва­ет из рук, но все рав­но цеп­лялся за нее до пос­ледне­го. Сло­ва давались с тру­дом, строч­ки собира­лись в окне поч­товой прог­раммы мед­ленно.

«Я знаю, что мы всё решили. И я не жду воз­вра­щения прош­лого. У нас остался один незак­рытый воп­рос, который не дает мне покоя. Я не хочу уго­вари­вать тебя, но мне важ­но знать, что с тобой всё в поряд­ке и ты счас­тли­ва. Поверь, для меня это очень важ­но».

На этот раз отве­та приш­лось ждать дол­го.

«У нас не оста­лось незак­рытых воп­росов. То, что тебя бес­поко­ит, ока­залось проб­лемами со здо­ровь­ем, и это в прош­лом. Сей­час все в поряд­ке. Я счас­тли­ва. Пожалуй­ста, не пиши мне боль­ше».

Ки­рилл дол­го сидел, уста­вив­шись в монитор, пока бук­вы в пос­леднем сооб­щении не начали рас­плы­вать­ся. В голове было пус­то и тихо, слов­но кто‑то вык­лючил звук. Спо­рить не име­ло смыс­ла — впер­вые за дол­гое вре­мя не оста­лось ни надеж­ды, ни злос­ти, ни сил что‑то доказы­вать. Он потянул­ся к круж­ке, но она ока­залась пус­та. Сон все рав­но не при­дет, а зна­чит, нуж­но сва­рить еще кофе и ждать, пока уста­лость не одо­леет его пря­мо за кла­виату­рой.



Ки­ря не счи­тал себя экспер­том по реверс‑инжи­нирин­гу, но базовы­ми навыка­ми работы в IDA все‑таки вла­дел. Со сто­роны это навер­няка выг­лядело поч­ти как вол­шебс­тво: без­ликое месиво сим­волов — бинар­ное тело тро­яна — мед­ленно, шаг за шагом, прев­ращалось во что‑то зна­комое гла­зу. IDA помога­ла про­вер­нуть этот фарш назад, сде­лать из исполня­емо­го фай­ла набор понят­ных инс­трук­ций, уви­деть струк­туру, прев­ращав­шую хаотич­ный набор сим­волов в «квар­талы» прог­раммы, меж которы­ми про­лега­ли «ули­цы» вызовов, зависи­мос­тей и перехо­дов.

Вы­лов­ленный на компь­юте­ре Бориса Семено­вича шиф­роваль­щик ока­зал­ся с сюр­при­зом: исполня­емый файл был нак­рыт упа­ков­щиком, при­чем не обыч­ным UPX, а каким‑то самодель­ным, рас­ковырять который получи­лось далеко не с пер­вого раза. Кирилл дей­ство­вал, слов­но уче­ный, пыта­ющий­ся понять логику чужого разума. Каж­дое откры­тое окно дизас­сем­бле­ра давало новый намек, новый ход в хит­рой игре меж­ду челове­ком и прог­раммой.

Тро­ян был написан на Delphi. Его авто­ры даже не пытались усложнить код, чем порой гре­шили некото­рые их кол­леги, прев­ращав­шие внут­реннюю логику вре­донос­ной прог­раммы в паути­ну перек­рес­тных вызовов, рас­путать которую получа­лось далеко не всег­да. Перед началом работы энко­дер ска­ниро­вал дис­ки заражен­ного компь­юте­ра, сос­тавлял спи­сок шиф­руемых фай­лов и толь­ко потом прис­тупал к сво­ей зло­вещей деятель­нос­ти. Генери­ровал пароль, который сох­ранял в сис­темный реестр на слу­чай, если жер­тва спох­ватит­ся и перезаг­рузит или вык­лючит машину, — что­бы при сле­дующем ее запус­ке начать про­цесс заново. Как толь­ко дело было сде­лано, пароль уда­лял­ся, а заод­но с ним уда­лялись и резер­вные копии фай­лов вмес­те с сис­темны­ми точ­ками вос­ста­нов­ления. Теперь вер­нуть утра­чен­ное ста­нови­лось невоз­можно, не зап­латив зло­деям выкуп. По край­ней мере, так все выг­лядело на пер­вый взгляд. И это было бы прав­дой, если бы не одно но.

Хо­рошень­ко изу­чив отве­чав­ший за парамет­ры шиф­рования фраг­мент кода, Кирилл отки­нул­ся в крес­ле и при­щурил­ся. Пароль фор­мировал­ся на осно­ве серий­ного номера жес­тко­го дис­ка и текущей даты, пре­обра­зован­ной в Unix timestamp — количес­тво секунд, про­шед­ших с 1 янва­ря 1970 года. А зна­чит, его мож­но подоб­рать. Нуж­но толь­ко пра­виль­но выб­рать усло­вия перебо­ра.

Он потянул­ся к телефо­ну и наб­рал записан­ный в памяти номер.

— Доб­рое утро, Борис Семено­вич, — про­изнес он, ког­да на том кон­це сня­ли труб­ку. — Не раз­будил?

— Что ты, Кирилл, я птич­ка ран­няя, — хохот­нул в ответ Крип­тодед. — Неуж­то при­думал, как решить мою проб­лему?

— Поч­ти. Я разоб­рался, каким спо­собом тро­ян шиф­рует фай­лы, и теперь нуж­но раз­работать алго­ритм под­бора клю­ча. Давай­те я вам переки­ну всё, что накопал, а вы сооб­разите, как эту задачу решить. Она вро­де бы по вашей час­ти.

— А давай, — сог­ласил­ся Борис Семено­вич, — у меня на пен­сии вре­мени мно­го, так что зай­мусь, поломаю голову. Вся­ко луч­ше, чем крос­свор­ды раз­гадывать.

Ки­рилл с улыб­кой положил телефон на стол. Теперь алго­ритм под­бора клю­ча — не его забота. Борис Семено­вич раз­берет­ся, и мож­но не сом­невать­ся, что решение будет най­дено. Он глу­боко вдох­нул и потянул­ся: про­веден­ная за компь­юте­ром ночь обру­шилась на него вяз­кой уста­лостью, но теперь мож­но было поз­волить себе рас­сла­бить­ся. Кирилл доб­рел до сво­его надув­ного мат­раса и рух­нул на него, не раз­дева­ясь. В соз­нании про­мель­кну­ла пос­ледняя осоз­нанная мысль о том, что с ноч­ными бде­ниями пора бы уже завязы­вать, и с нею он пог­рузил­ся в сон.


Ки­рилл открыл гла­за с ощу­щени­ем, буд­то внут­ри него сно­ва вклю­чили свет пос­ле дол­гой тем­ноты. А воз­можно, при­чиной ста­ли раз­будив­шие его лучи по‑весен­нему ярко­го сол­нца, без­застен­чиво заг­лянув­шего в окно. Мозг еще не успел тол­ком прос­нуть­ся, но тело уже тре­бова­ло еды и дви­жения. Потянув­шись к сто­лу, Кирилл про­вел паль­цем по трек­паду, вгля­дел­ся в про­явив­шуюся на дис­плее ноут­бука кар­тинку — он прод­рых поч­ти сут­ки. Сегод­ня сно­ва нас­тала его оче­редь дежурить.

До «Синего экра­на» он доб­рался чуть поз­же, чем обыч­но, — минут сорок ушло на при­готов­ление зав­тра­ка из остатков тех про­дук­тов, что уда­лось отыс­кать в холодиль­нике, и еще при­мер­но час — на решение дру­гих насущ­ных воп­росов. Кирилл отпер вход­ную дверь, вклю­чил свет и ком­пы, про­верил работу сети. Посети­телей в этот час все рав­но еще не было, они нач­нут под­тягивать­ся бли­же к обе­ду, а потому утром оста­вал­ся шанс в спо­кой­ной обста­нов­ке занять­ся сво­ими делами. Но толь­ко не в этот раз.

Дверь со скри­пом рас­пахну­лась, впус­кая в полупод­вал вол­ну холод­ного улич­ного воз­духа, и на пороге воз­никла невысо­кая тем­новоло­сая жен­щина с пап­кой докумен­тов под мыш­кой в соп­ровож­дении челове­ка в кожаной кур­тке на две головы выше нее. Памятуя рас­сказ Серёги, Кирилл пред­став­лял себе потен­циаль­ных арен­даторов суровы­ми кач­ками бан­дит­ской внеш­ности, от одно­го вида которых у обы­вате­ля начина­ют тряс­тись под­жилки. Воп­реки ожи­дани­ям, вошед­ший не про­извел на него столь пуга­юще­го впе­чат­ления. На глад­ко выб­ритой шиш­коватой голове силь­нее все­го выделя­лись отто­пырен­ные, как локато­ры, уши и тор­чащий орли­ным клю­вом нос, по соседс­тву с которым терялись глу­боко посажен­ные гла­за. Из‑за столь стран­ного сочета­ния конс­трук­тивных эле­мен­тов физи­оно­мия визите­ра напоми­нала кры­синую мор­дочку, к которой зачем‑то при­шили уши от Чебураш­ки. Кур­тка на нем тоже смот­релась несураз­но и бол­талась, как на вешал­ке, — ее обла­датель явно хотел казать­ся шире в пле­чах, чем был на самом деле.

— Доб­рое утро, — про­изнесла дама, гля­дя мимо Кирил­ла, и сра­зу же перек­лючила вни­мание на сво­его спут­ника:

— Здесь у нас два помеще­ния, там­бур и основной зал, есть еще убор­ная, прав­да бачок там неис­пра­вен. Помеще­ние теп­лое, но тре­бует кос­метичес­кого ремон­та. Элек­три­чес­тво по счет­чику, име­ется цен­траль­ное отоп­ление…

— Здравс­твуй­те, Тамара Эду­ардовна, — поп­риветс­тво­вал визитер­шу Кирилл, безоши­боч­но уга­дав, кого занес­ло к нему на ого­нек. — Бачок в туале­те я починил. А что каса­ется кос­метики, то это ж дело вку­са. Я бы ска­зал, что это мес­то боль­ше под­ходит тем, кто ценит атмосфе­ру, а не иде­аль­ный гля­нец.

Та­мара Эду­ардовна уста­вилась на него так, слов­но уви­дела бук­валь­но толь­ко что и рань­ше не догады­валась о его при­сутс­твии.

— Меня зовут Кирилл, я адми­нис­тра­тор, — пред­ста­вил­ся Киря. — Сер­гей пре­дуп­реждал о вашем визите.

— Я думала, что зас­тану здесь Вла­дис­лава, — чуть под­жав губы, сооб­щила Тамара. — Хотелось бы кое‑что обсу­дить с ним с гла­зу на глаз.

— Вла­дис­лав Иго­ревич неимо­вер­но занят, он реша­ет глав­ный воп­рос жиз­ни, все­лен­ной и все­го такого, — вкрад­чиво пояс­нил Кирилл. — Пыта­ется спас­ти мир, пока кос­мичес­кие кораб­ли бороз­дят прос­торы Боль­шого теат­ра и пыла­ют над Ори­оном, а Лучи Си раз­реза­ют мрак у ворот Тан­гей­зера. Но я могу ему что‑нибудь передать, если хотите.

— Лад­но, это подож­дет, — мах­нула рукой дама и повер­нулась к сво­ему спут­нику. — Пой­дем­те пос­мотрим зал?

— А вы дей­стви­тель­но хотите сдать этот под­вал дру­гим арен­даторам? — скло­нив голову набок и изоб­разив на лице наив­ное выраже­ние, поин­тересо­вал­ся Кирилл.

— Ох, маль­чики, пока еще ничего не решено, — ста­раясь побыс­трее отде­лать­ся от нас­тырных расс­про­сов, бро­сила в ответ Тамара, — люди вот инте­ресу­ются, помеще­ние под магазин одеж­ды ищут.

— Тог­да это явно не луч­ший вари­ант, — заметил Кирилл.

— Почему? — впер­вые подал голос лопо­ухий носитель кожан­ки.

Продолжение доступно только участникам

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    1 Комментарий
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии