Стороны этого невзаправдашнего противостояния назывались примерно как в военной игре «Зарница», с которой Кирилл познакомился еще в школьные годы в летнем лагере, куда отправляла его на месяц‑другой мама: «красные» и «синие». Красная команда — те, кто нападает. Те, кто думает, как враг, читает документацию между строк и верит, что любой, даже самый высокий забор построили люди, изрядно уставшие к концу смены. Фирма‑заказчик, в роли которой сегодня выступала «Артс Инжиниринг», настояла на том, чтобы Кирилл со своими помощниками занимался темными делами у них в офисе, под присмотром штатных сотрудников, — хорошо хоть разрешили взять с собой личный ноутбук со всем настроенным инструментарием.
Синяя команда — защитники. В нее входили Фреш, Трикси и еще один незнакомый парень, представившийся Игорем. Их отселили в соседнее помещение, но Лео все равно с озабоченным видом бегал туда‑сюда, периодически заглядывая Кириллу в монитор, чем жутко действовал ему на нервы. Получалось, что сейчас Кирилл играл против своего бывшего работодателя и, ко всему прочему, против избранника своей бывшей девушки. А значит, облажаться было никак нельзя, этого он себе уж точно не простит.
Он сделал глоток энергетика. Вкус напоминал расплавленных мармеладных мишек, смешанных с керосином, — топливо для мозга, которому сегодня предстояло работать на форсаже. Иван, после длительных согласований все‑таки допущенный к процессу в качестве практиканта‑наблюдателя, сопел Кириллу в ухо, стараясь не пропустить ни единой детали, — ему было настолько интересно происходящее, что он даже вел себя на удивление прилично и скромно, а не в своей обычной гопнической манере. Серёге отводилась роль творца документации и отчетов, поэтому он тщательно фиксировал все события в блокноте, время от времени вполголоса спрашивая пояснения. Без дела осталась разве что Маша, которая, послонявшись по офису, сама вызвалась бегать в расположенную в соседнем доме пиццерию и к стоящей в смежной комнате кофе‑машине, пополняя по мере необходимости запасы продовольствия.
— Ну что, когда начнем? — Ваня ерзал на стуле, словно сидел на густонаселенном муравейнике, настолько ему не терпелось приступить к делу.
— Да вот прямо сейчас, — откликнулся Кирилл, запуская сканер портов. — Займемся работой, пока наши уважаемые коллеги изволят пить кофе.
Список потенциальных целей им любезно предоставил заказчик, отдельно упомянув в договоре, куда лезть категорически нельзя, и избавив их тем самым от необходимости проводить предварительную разведку инфраструктуры. Тем не менее Кирилл все равно решил на всякий случай поискать другие потенциальные точки входа: чем больше ты знаешь о сети, в которую собираешься вломиться, тем лучше.
— А вот это уже интересно, — задумчиво произнес он, и Иван придвинулся ближе, чтобы ничего не пропустить.
Обычно сканер стучался во все шестьдесят пять с половиной тысяч портов атакуемого узла, показывая только те, что в настоящий момент открыты и готовы принимать запросы. Порт — это как окошко в приемной большого государственного учреждения: «по этому вопросу обращаться вот сюда». Не зная правильного номера, заглядывать во все окна подряд попросту бесполезно — не ответят, да и в неправильном окне тоже не помогут, потому что каждое отвечает только за свой ограниченный круг задач. Составив список активных портов, хакер мог перейти к следующему этапу: попытаться выяснить по характерным сигнатурам, какие программы и каких версий работают на этих портах. Каждое серверное приложение имеет свои верные признаки, уникальные, будто отпечатки пальцев, нужно лишь уметь различать их. Они и назывались так же — «фингерпринты». Полученная информация позволит пощупать эти сервисы на предмет уязвимостей, список которых давно известен. В распоряжении каждого сетевого взломщика имеется целый арсенал «отмычек», открывающих доступ к серверу, если где‑то что‑то настроено неправильно или на той стороне крутится устаревшая программа, в конфигурации которой есть изъяны.
На серверах, которые сканировал Кирилл, к его удивлению, откликались сразу все порты: видимо, «синяя команда» изначально настроила файрвол подобным образом, чтобы испортить атакующим праздник. Пойди разберись, какие «окошки» в этом «здании» открыты по‑настоящему, а какие только делают вид, что готовы обслуживать входящие запросы. Начинающего взломщика такая картина, скорее всего, озадачит не на шутку. Только вот Кирилл не был начинающим.
Терпеливо наблюдая за ходом сканирования, он приметил любопытную закономерность: на большинстве активных портов поле, показывавшее версию использующего этот порт сервиса, оставалось пустым. Видимо, Фреш поленился сымитировать какой‑либо правдоподобный отклик машины, полагая, что, столкнувшись с необычным поведением узла, хакер отступится от дальнейших попыток взлома. На самом же деле ему достаточно собрать список портов, показывающих при обращении к ним полную информацию, чтобы отбросить всё лишнее, — задача при грамотном подходе не очень сложная.
Нужный скрипт Кирилл написал примерно за полчаса и запустил сканирование снова, теперь уже прицельно собирая сведения только о тех «окнах», которые в ответ на его обращение давали живой отклик.
— Решил сделать выборку? — понимающе сказал Фреш, как всегда беззвучно появившись у Кирилла за спиной.
— А что еще остается? — пожал плечами тот. — Я бы на твоем месте рандомайзер написал, который в ответ на запрос к неактивным портам выдает первый попавшийся сервис из списка. Тогда у атакующего возникнут серьезные проблемы.
— А список где взять? — усомнился Леонид.
— Да из базы фингерпринтов Nmap, там большой набор идентификаторов предусмотрен. Бери и пользуйся, даже выдумывать ничего не нужно.
— Блин, точно! — хлопнул себя по лбу Фреш. — Кирюх, я всегда говорил, что башка у тебя золотая.
— Главное, чтобы ее кому‑нибудь отдельно от остального организма не продали… И программу я бы настроил таким образом, чтобы при каждом запросе она присваивала одному и тому же порту одинаковый фингерпринт. А то на месте злодея я, например, повторил бы сканирование пару раз и сопоставил результаты, а потом те порты, где отклики различаются, выкинул из выборки.
— Точняк! Спасибо!
Леонид радостно убежал в соседнюю комнату, а Кирилл тем временем продолжил сидеть за ноутбуком, вглядываясь в темный квадрат терминала, словно в ночное окно.
— Серёг, пометь там у себя, что можно еще время отклика сервака при переборе портов немного увеличить. Напишем об этом в рекомендациях.
— А зачем?
— Чтобы сканирование у атакующих затянулось надолго. Тогда есть шанс, что они заскучают и бросят это неблагодарное дело… Правда, от автоматических сканеров это все равно не защитит.
Иван смотрел на происходящее, открыв рот, — для него это пока еще выглядело непостижимой магией, но Кирилл знал: магия заканчивается ровно в тот момент, когда начинаешь внимательно подмечать детали. Например, то, как сервер отвечает на запросы.
Кирилл остановил сканер и переключился на другие инструменты. Теперь его интересовало не столько наличие сервисов, сколько поведение самой сети. Время отклика, порядок ответов, мелкие несоответствия привычной картине мира. Он начал аккуратно «прощупывать» выбранные сервисы, проверяя, насколько охотно они рассказывают о себе. Заголовки, версии, нетипичные поля в пакетах — все это шаг за шагом складывалось в мозаику. Ничего критичного, но достаточно, чтобы понять: система собиралась и настраивалась разными людьми, в разное время и с разным уровнем аккуратности. Вот, например, одна из машин в сети буквально приглашала заглянуть к ней в гости: тут тебе и дырявый сервис печати, и старый добрый MS05-039, через который в систему можно было войти, как в открытую дверь магазина в день распродаж.
— Слушай, похоже на джекпот, — глаза Вани, вглядывавшегося в экран через плечо Кирилла, азартно блеснули. — Сюда можно залить шелл, и мы внутри!
— Не спеши, — осадил он практиканта. — Самый яркий свет обычно зажигают для того, чтобы слетелось побольше мотыльков. Это ханипот, слышал про такое? Приманка. «Синие» выставили этот сервер специально, чтобы мы на него набросились. Как только ты попытаешься проэксплуатировать там уязвимость, их система мониторинга тут же зафиксирует наш IP и все остальное, вплоть до версии ядра моего «Линукса». И даже, если Фреш не совсем дурак, попробует пробить нас в ответ. Мы пойдем другим путем.
Кирилл снова сделал глоток энергетика: напиток из соседнего киоска казался ему сейчас живой водой, позволяющей видеть слои реальности, недоступные обычному человеку. В этот момент в комнату вошла Маша, неся перед собой коробки горячей пиццы. Запах расплавленного сыра на мгновение вытеснил химический аромат напитка.
— Мальчики, перерыв на обед, — провозгласила она.
Кирилл посмотрел на угощение, потом на экран, где в терминале медленно ползли строки. Иван с Сергеем резво откликнулись на призыв, а сам он, несмотря на голодное бурление в животе, вернулся к клавиатуре: кажется, в логах удалось заметить нечто любопытное. По всему выходило, что сеткой рулил сервер под управлением 2003-й винды, на которой крутился контроллер домена Active Directory. Для системного администратора это был райский сад, где с помощью мышки и красивых окошек он мог запросто объединять сетевых пользователей в группы, назначая и отбирая у них нужные права. Для хакера же контроллер домена представлялся Вавилоном, выстроенным из разномастных программ и старых протоколов, державшихся исключительно на вере в то, что никто не догадается дернуть за нужную веревку, к которой привязана добрая половина этой шаткой конструкции.
— Похоже, кто‑то забыл отключить null sessions, — пробормотал вполголоса Кирилл.
— А это что такое? — переспросил с набитым ртом Иван.
— Анонимное подключение. Без особых привилегий, зато с богатыми перспективами. Как минимум мы сможем получить список зарегистрированных на сервере пользователей.
— Так без паролей имена юзеров нам ничего не дадут, — смекнул Сергей, которому подсказал очевидное опыт администрирования клубной сети.
— Что верно, то верно, — кивнул Киря, — но пароль можно подобрать. Правда, наши «синие» коллеги это быстро заметят, потому что в логах отобразится слишком много неудачных попыток входа. А еще можно поискать сценарии автоматизации…
Продолжение доступно только участникам
Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».
Присоединяйся к сообществу «Xakep.ru»!
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

