Это десятая гла­ва прик­лючен­ческо‑фан­тасти­чес­кой исто­рии «Ха­керы.RU», которую мы пуб­лику­ем по одной гла­ве спе­циаль­но для под­писчи­ков «Хакера». Если ты еще не чита­ешь, начинай с пер­вой!

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

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

«Пог­нали!» — написал в чате NullByte, и работа закипе­ла.

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

Тем вре­менем в чате ста­ла копить­ся информа­ция, которую понем­ногу сбра­сыва­ли туда все учас­тни­ки про­цес­са: IP-адре­са, тех­ничес­кие под­домены, дос­тупные пор­ты, дан­ные из про­ана­лизи­рован­ных HTTP-заголов­ков. Пока ничего инте­рес­ного Кирилл там не уви­дел: сер­веры TerraCore выг­лядели точ­но бас­тионы кре­пос­ти, спо­соб­ные выдер­жать даже дли­тель­ную оса­ду. Но он прек­расно знал, что неп­риступ­ных кре­пос­тей не быва­ет. Если ата­кующим не удас­тся вска­раб­кать­ся на сте­ну или взло­мать запоры на воротах, всег­да мож­но попытать­ся сде­лать под­коп.

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

«Глу­хо, как в тан­ке, — про­ком­менти­ровал без­надеж­ную ситу­ацию NullByte, — у кого есть идеи, брат­ва?»

«Я как раз изу­чаю ману­алы «Тер­ры», — написа­ла в общий чат Алла, — кажет­ся, нащупа­ла кое‑что инте­рес­ное». И тут же отпра­вила ссыл­ку в лич­ном сооб­щении Кирил­лу: «Kicks, взгля­ни‑ка!»

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

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

Дви­жок, на котором работал форум, ока­зал­ся стан­дар­тным, с откры­тым исходным кодом, а вот модуль авто­риза­ции пар­ни из TerraCore прик­рутили к нему самопис­ный, судя по все­му, каким‑то обра­зом свя­зав его с внут­ренней под­систе­мой уче­та поль­зовате­лей или кон­трол­лером домена. При­том в нед­рах это­го самого модуля оста­лись «хвос­ты» от стан­дар­тно­го ком­понен­та — часть кода была заком­менти­рова­на, часть уби­рать не ста­ли, потому что она все рав­но не работа­ла. Так, по край­ней мере, счи­тали в TerraCore. Стан­дар­тную стра­ницу регис­тра­ции нового юзе­ра тоже убра­ли, вмес­то нее выкати­ли самодель­ную фор­му, с помощью которой будущий поль­зователь мог ввес­ти све­дения о себе и отпра­вить модера­торам заяв­ку. Кирилл запол­нил эту фор­му и обна­ружил, что вся­кий раз она переда­вала на сер­вер вмес­те с дру­гими дан­ными скры­тое поле password со зна­чени­ем «%#DEFAULT#%!».

Ки­ря задумал­ся. Логика под­ска­зыва­ла ему, что, если заяв­ки на регис­тра­цию обра­баты­вают­ся вруч­ную, сер­вер дол­жен впус­тить поль­зовате­ля с одоб­ренной модера­тора­ми учет­кой и вот этим вот стан­дар­тным паролем, который юзер потом поменя­ет самос­тоятель­но. А если он не захочет или поп­росту забудет это сде­лать? Зна­чит, в нед­рах базы дан­ных обя­затель­но дол­жны при­сутс­тво­вать уже одоб­ренные учет­ные записи с таким паролем. Для про­вер­ки сво­ей гипоте­зы Кирилл запус­тил скрипт, который при­нял­ся авто­мати­чес­ки фор­мировать зап­росы на дос­туп к сай­ту, переби­рая трех­буквен­ные име­на поль­зовате­лей в сочета­нии с уже извес­тным ему кодовым сло­вом и пери­оди­чес­ки меняя прок­си‑сер­вер, ког­да оче­ред­ной IP-адрес попадал в бан‑лист из‑за слиш­ком час­тых и неудач­ных попыток вхо­да. При­мер­но через десять минут Киря получил сооб­щение об успе­хе сво­ей затеи. Это была пусть малень­кая, но победа!

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

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

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

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

Од­нако и этой при­виле­гии ока­залось недос­таточ­но для его целей: в свя­тая свя­тых, в репози­тории, где хра­нил­ся исходный код раз­рабаты­ваемых TerraCore прог­рамм, его по‑преж­нему не пус­кали. Что ж, если тебе не никак уда­ется вой­ти в дверь, всег­да мож­но попытать­ся влезть через окно. Форум поз­волял сбро­сить забытый пароль — для это­го на поч­ту забыв­чивого поль­зовате­ля отправ­лялась «вол­шебная ссыл­ка», которой он дол­жен был вос­поль­зовать­ся. Дос­тупа к поч­товым ящи­кам у Кирил­ла не было, зато, будучи модера­тором, он мог видеть все слу­жеб­ные пись­ма, авто­мати­чес­ки отправ­лявши­еся форум­ным движ­ком. В том чис­ле и сек­ретные ссыл­ки. Бла­года­ря этой замеча­тель­ной воз­можнос­ти через пару минут он сбро­сил пароль для учет­ной записи одно­го из раз­работ­чиков TerraCore, авто­мати­чес­ки получив пра­ва на управле­ние все­ми внут­ренни­ми фун­кци­ями сай­та. Заод­но он попытал­ся вой­ти с новым паролем на внут­ренний сер­вер ком­пании, ссыл­ку на который отыс­кал сре­ди перепис­ки сот­рудни­ков, и у него получи­лось: учет­ные записи раз­ных сер­висов TerraCore ока­зались вза­имос­вязаны. Кирилл получил дос­туп к хра­нили­щу кода, внут­ренне­му баг‑тре­керу, сер­веру сбор­ки и файл‑сер­веру, где хра­нились бета‑вер­сии раз­рабаты­ваемо­го аме­рикан­цами соф­та.

«Есть про­бив! — радос­тно написал он в чат. — NullByte, что тут слить‑то надо?»

«Качай всё, там раз­берем­ся», — отве­тил его пар­тнер.

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

«Там слиш­ком до фига все­го :(, — отпра­вил он в чат грус­тный смай­лик. — NullByte, я сей­час выш­лю нес­коль­ко админ­ских уче­ток, под­клю­чай­тесь».

«При­нято, — начал рас­поряжать­ся NullByte. — Kicks, качай тог­да репози­торий с исходни­ками, Paranoic пусть сдам­пит баг‑тре­кер, ShelLMa — слей все фай­лы на билд‑сер­вере».

«Потом еще логи потереть надо будет», — напом­нил Кирилл.

«Я зай­мусь», — завери­ла сорат­ников Трик­си.

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

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

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

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

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

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

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

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

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

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

    Подписаться

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