Бо­рис Семено­вич оста­новил­ся в при­хожей и огля­дел­ся.



— Ремонт бы тебе сде­лать, — назида­тель­но про­изнес он, — алкаш этот, Рома, квар­тиру жуть как запус­тил. Так и помер в сви­нар­нике.

— Что, пря­мо тут и помер? — поин­тересо­вал­ся Кирилл.

— Нет, его в тот раз пос­ле оче­ред­ного запоя «бел­ка» навес­тила, зеленые человеч­ки в убор­ной завелись и хотели бед­нягу для иссле­дова­ний на Марс заб­рать. Видимо, изу­чали вли­яние паленой вод­ки на орга­низм пьюще­го сан­техни­ка. Так он, от них спа­саясь, в окно и вышел.

— Раз­бился?

— Да нет же. Какое раз­бился, вто­рой этаж. В боль­ницу увез­ли, перело­ман­ного. Там и умер.

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

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

— Зна­чит­ся, так, — прих­лопнул он ладонью тет­радный раз­ворот, — то, что клю­чик берет­ся не из воз­духа, это хорошо. Идея там прос­тая: дата как соль, серий­ный номер дис­ка как пер­сональ­ная мет­ка машины — скле­ил их, прог­нал через генера­тор и получил ключ. Вот это пер­вая заг­воз­дка. Если ключ зависит от текущей даты, то вер­нуть фай­лы, зашиф­рован­ные, ска­жем, три недели назад, мож­но — но тре­бует­ся знать, какое имен­но зна­чение исполь­зовал тро­ян. Не прос­то «март», а точ­ное вре­мя.

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

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

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

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

— Давай­те я тог­да рас­шифров­щик наб­росаю, — пред­ложил Кирилл, — сра­зу и про­верим, как ваш алго­ритм работа­ет.

— Годит­ся, — кив­нул сосед. — А я пой­ду на кух­ню, чай­ник пос­тавлю. Печенье у тебя най­дет­ся какое‑нибудь?

— Вче­раш­ний батон толь­ко.

— Тог­да я из дома сгу­щен­ки при­несу. Чего пус­той чай гонять?

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

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

— Думаю, не один я от это­го вируса пос­тра­дал, — про­изнес сосед, — мож­но и дру­гим людям помочь.

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

— Вот и подумай.

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

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

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

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

— Может, и так, — хмык­нул сосед, — но на вся­кий слу­чай ста­рай­ся лиш­ний раз не све­тить­ся в интерне­те. Никаких гром­ких рек­ламных объ­явле­ний, никаких боль­ших сумм и, глав­ное, никаких реаль­ных имен. Чем мень­ше народу зна­ет, кто имен­но этим занима­ется, тем доль­ше будет работать метод.

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

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

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

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

Жен­щина мол­ча пос­торони­лась, сме­рив гос­тя еще одним подоз­ритель­ным взгля­дом, — раз­говари­вать она, видимо, сегод­ня была не в нас­тро­ении.

— Здравс­твуй­те, — кив­нул ей Кирилл, перес­тупая порог.

— На тря­поч­ке вот тут разувай­ся, — засу­етил­ся подос­певший Серёга, — ботин­ки сра­зу в шкаф­чик уби­рай, у меня собака, сгры­зет. Про­ня, фу! Фу, я ска­зал! Свои! Мам, ну забери его!

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

Се­рёга про­пус­тил Кирил­ла в неболь­шую ком­натку с мяг­ким диваном, пись­мен­ным сто­лом и ста­рым пла­тяным шка­фом у сте­ны, выг­нал попытав­шегося было юркнуть сле­дом пса и поп­лотнее зак­рыл за спи­ной дверь. С той сто­роны донес­ся оби­жен­ный заливис­тый лай.

— Изви­ни, мама не любит пос­торон­них, — слов­но оправды­ваясь, приз­нался он.

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

— Валяй, жги, — сра­зу же перешел на деловой тон Серёга. — Есть какие‑нибудь идеи?

— Ска­жи мне, ты зна­ешь, что такое ZX Spectrum? — воп­росом на воп­рос отклик­нулся Кирилл.

Сер­гей на мгно­вение задумал­ся.

— Был вро­де такой компь­ютер древ­ний, — осто­рож­но под­бирая сло­ва, про­изнес он, — вось­мибит­ный еще, из девянос­тых. У быв­шего одноклас­сни­ка батя такие собирал ког­да‑то, он мне показы­вал: пос­мотри, мол, каким старь­ем пред­ки поль­зовались. А что?

— Ну вот смот­ри. Цену, которую эти секон­дхендщи­ки Тамаре пред­ложили, мы перебить не смо­жем, нет у нас лиш­них денег. Да и на шко­лоте мес­тной мно­го не зарабо­таешь. А вот если мы соберем у нас любите­лей ста­рого железа, которые и пос­тарше, и побога­че, да информа­цию об этом мероп­риятии по все­му городу рас­простра­ним, это будет уже сов­сем дру­гой рас­клад. Во‑пер­вых, мес­то ста­нет извес­тным, про­ход­ным, во‑вто­рых, денег при­несет чуть боль­ше, а если у нас появит­ся пос­тоян­ная тусов­ка серь­езных дяденек за трид­цать, выг­нать нас отту­да будет нем­ного слож­нее, прав­да? В общем, я пред­лагаю замутить в «Экра­не» фес­тиваль рет­рогей­мин­га.

— Со «Спек­тру­мами»? — удив­ленно хло­пая гла­зами, перес­про­сил Серёга.

— Со «Спек­тру­мами», «Ами­гами», «Ата­ри» и про­чими «Апо­геями» с «Мик­рошами». Мероп­риятие нуж­но неболь­шое, мно­го народу в наш под­вал все рав­но не помес­тится, но гром­кое.

— Да кто в нашу пердь поп­рется‑то? — недовер­чиво про­тянул Серёга. — Тут же окра­ина мира, конец цивили­зации. За Ковалё­во вон оби­таемая все­лен­ная вооб­ще закан­чива­ется, там обрыв и жопы сло­нов тор­чат, на которых зем­ная твердь поко­ится…

— Не дрей­фь, Серый, поп­рутся, если общес­твен­ность о пред­сто­ящем фес­тивале пра­виль­но про­информи­ровать. Это я беру на себя. Кста­ти, у тебя зна­комых жур­налис­тов слу­чай­но нет?

— Жур­налис­тов?.. — Сер­гей, все еще пре­бывав­ший в некото­рой рас­терян­ности от Кирино­го напора, взъ­еро­шил ладонью непос­лушную шевелю­ру. — Нет… Хотя подож­ди, я у мамы спро­шу. Ее сес­тра, тетя Рита, в какой‑то газете работа­ет.

— Серёжа! — донес­ся из коридо­ра тре­бова­тель­ный жен­ский голос — Ты на часы смот­ришь? Погуляй с Пронь­кой, а то он сей­час на полу надела­ет!

— Уже иду, мам! — крик­нул Сер­гей и повер­нулся к сво­ему гос­тю: — Пой­дем, я собаку выведу, по дороге еще побол­таем.

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

— Ой, чуть не забыла: пред­став­ляешь, я Юру вче­ра видела, — сооб­щила напос­ледок мама, зас­тавив Кирил­ла нап­рячь­ся.

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

— И что он? — нас­торожен­но поин­тересо­вал­ся Киря.

— Да ничего, Кирюш. По‑моему, он меня даже не узнал. Я в про­дук­товый с тетей Таней пош­ла, и вдруг она говорит: смот­ри, это твой, кажет­ся. Я гля­нула — и вправ­ду он. Гряз­ный весь, обросший какой‑то, в помой­ке копа­ется, на бом­жа стал похож. Бутыл­ку в мусоре нашел, допил и в мешок спря­тал, такой же гряз­ный, как он сам. Пос­мотрел в мою сто­рону и отвернул­ся. Я быс­трей‑быс­трей идти отту­да, пока он меня не окликнул…

— Ну и хорошо, что не окликнул, — выдох­нул с облегче­нием Кирилл.

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

Хлоп­нула дверь, и в клуб вва­лил­ся доволь­ный собою Ваня Зарубин.

— При­нес! — тор­жес­твен­но объ­явил он с порога.

— Чего при­нес? — перес­про­сил занятый сво­ими мыс­лями Кирилл, а потом вспом­нил, о чем они раз­говари­вали в прош­лый раз.

— Вин­честер при­нес, — Иван с гул­ким сту­ком выложил на стой­ку жес­ткий диск. — Блин, чуть не спа­лили. Но я вык­рутил­ся. Толь­ко его назад надо вер­нуть пос­корее, пока не хва­тились.

Внеш­него кор­пуса для вин­честе­ров с USB-интерфей­сом у Кирил­ла не име­лось, поэто­му он вод­рузил на стол запас­ной сис­темник с откру­чен­ной боковой крыш­кой, под­цепил к материн­ской пла­те шлей­фом при­несен­ный Ива­ном диск и вру­бил питание. Вре­доно­са он обна­ружил доволь­но быс­тро — он лежал в пап­ке System32, не осо­бо скры­ваясь. Поменяв рас­ширение на .ex_, что­бы прог­рамма слу­чай­но не запус­тилась, Кирилл ско­пиро­вал файл на флеш­ку, вер­нул вин­честер закон­ному вла­дель­цу и вот­кнул флеш­ку в свой ноут­бук.

Иван перег­нулся через стой­ку, изо всех сил ста­раясь заг­лянуть в экран, и при­нял­ся сопеть Кирил­лу в ухо чес­ночным духом — вид­но, сло­пал где‑то по дороге шавер­му.

PEiD сооб­щил, что про­га написа­на на «плю­сах» и не упа­кова­на. Кирилл заг­рузил файл в IDA, решив пос­мотреть, что у него внут­ри. В кар­мане про­тив­но зат­рень­кал телефон.

— Алло? — Кирилл при­жал труб­ку к уху, не отвле­каясь от работы.

— Кирыч, это Сер­гей, — услы­шал он радос­тный и бод­рый голос, — тет­ка нам жур­налис­та наш­ла, запиши‑ка телефон. Его Жора зовут…

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

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

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

В нес­коль­ких мес­тах он уви­дел мар­керы: broadcast_scan, replicate_copy, remote_trigger. Где‑то сре­ди дизас­сем­бли­рован­ного лис­тинга мель­кали стро­ки вро­де --lock-now-- и код, который ожи­дал внеш­ней коман­ды — воз­можность мас­сового вклю­чения бло­киров­ки по рас­писанию или по сиг­налу с кон­тро­лиру­юще­го сер­вера. Да и сам адрес это­го сер­вера не был жес­тко зап­рограм­мирован, не хра­нил­ся в явном или даже зашиф­рован­ном виде, он фор­мировал­ся динами­чес­ки, по какому‑то стран­ному алго­рит­му, логику которо­го Кирилл сей­час понять не мог.

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

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

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

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

    Подписаться

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