Подготовка к чему‑то важному занимает порой больше времени, чем само это событие. Кирилл стоял у зеркала, разглядывая свое отражение с глубокомысленным выражением на лице, как будто серебристое стекло вот‑вот должно было сообщить ему о чем‑то важном. Отражение молчало. Ноутбук со свежеустановленной системой терпеливо дожидался в комнате: к задуманной 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, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее