Глава 4. Групповой проект
17 октября 2023, вторник
К середине октября Энцо уже успел получить высокие баллы за предыдущее домашнее задание, первую лабораторную и недавно сдал вторую — он был уверен, что там тоже всё отлично.
На следующем занятии они с Уэсли вновь не сразу приступили к домашнему заданию. Вместо криптографии они просматривали все фото и видео с поездки на озеро, выбирая, какие стоит опубликовать.
Они сидели в небольшой библиотеке с низкими потолками, где стеллажи с книгами плотно стояли друг к другу, полностью скрывая их от остальных. Здесь было не так красиво, зато царили полная тишина и уединение. Полки вокруг были уставлены зарубежной военной прозой. Над их столом было окно, которое выходило в парк. Его затеняло большое дерево. Солнце пробивалось сквозь листву. В лучах можно было видеть летающую в воздухе пыль. Сама атмосфера не позволяла здесь шуметь, но заниматься чем-то полезным тоже не было желания.
Уэсли показал фотографию, где он позировал у водопада, до которого они добрались на катере. Атлас и Энцо должны были брызгать на него водой для создания красивого и динамичного снимка. У Уэсли было какое-то видение. Харита делала, кажется, сотню фотографий в секунду. Где-то Уэсли выглядел красиво, а где-то удалось поймать его смешное выражение лица. Над последними они и смеялись.
Попыткам Уэсли снять скалы и водопад помешали Энцо и Кэл, которые пытались утопить друг друга в озере. Большинство эстетичных видео также были испорчены болтовнёй на фоне.
Но нашлись и удачные кадры: на катере, пока ветер развевал волосы и одежду, и на фоне водопада.
Потом Уэсли показал фотографии с вечеринки.
Энцо засмеялся.
— У меня было видение, и обычно оно меня не подводит, но не в тот день, — разочарованно доказывал Уэсли.
— Они милые, думаю, ты должен их выложить, — продолжил веселиться Энцо, глядя, как Уэсли недовольно приблизил на прилипшие ко лбу влажные волосы.
— Только если как напоминание — не фотографироваться настолько пьяным, — Уэсли закатил глаза.
Фотографии звёздного неба, сделанные на берегу, в моменте казались волшебными. На трезвую голову они понимали, что там всё смазано и ничего толком не разглядеть.
Энцо и Уэсли продолжали тихо смеяться и шёпотом обсуждать поездку. Только через полчаса они, наконец, занялись криптографией.
18 октября 2023, среда
На следующий день на занятии по CS 155 Энцо и Кэла ждало неприятное известие: у них будет тест по пройдeнному материалу.
Несмотря на приличные оценки за задания, они сомневались, что с этим всё будет так легко.
— Блять, — выдохнул Кэл, — влияние на оценку — 20%. Он уже в понедельник!
Энцо не ощущал паники, только раздражение.
— Буду умолять Уэсли позаниматься перед тестом дополнительно.
Кэл кивнул и открыл чат со своим репетитором — Джеффом.
— Это пиздец, — застонал Кэл, когда они уже покидали кабинет. — Джефф уезжает завтра и вернётся только во вторник. Сегодня будет занятие, но мы собирались делать новую домашку.
На фоне его отчаяния Энцо начал тоже нервничать. Уэсли ему ещё не ответил.
— Возьми меня к Уэсли с собой, — взмолился Кэл.
— Уэс мне ещё не ответил, — прервал его Энцо, — я предложил любое время.
Ответ пришёл только вечером. Энцо удивился тому, что Уэсли согласился и предложил встретиться на выходных. Кэл поспешил радостно создать им троим групповой чат. Они решили устроить ночёвку у Энцо.
21 октября 2023, суббота
В субботу Энцо встречал Уэсли и Кэла у себя в квартире. Он надеялся, что их ждёт пара часов подготовки и можно будет просто валяться на диване, есть, пить пиво и смотреть что-то весёлое. Он заранее приготовил еду и алкоголь. Кэл должен был подъехать к нему вместе с Уэсли.
Энцо жил в двухэтажной квартире на 17-м этаже. Здесь были просторная, светлая гостиная, несколько спален, кухня и терраса. Отец купил квартиру, несмотря на то, что Энцо не планировал оставаться жить в Санта-Крина.
Гостиная была с панорамными окнами. Отсюда открывался красивый вид на пляж и океан, особенно во время заката.
Снаружи были ухоженный парк, дальше — узкая дорога, где вечно стояли в пробке дорогие машины, и затем — песчаный пляж.
Как только Уэсли пришёл, Энцо провёл ему быструю экскурсию по квартире. В его спальне на полках ровно выстроились стопки манги и фигурки любимых аниме-персонажей. Уэсли с интересом рассмотрел их и похвалил конструкции из «Лего».
Они расположились со своими ноутбуками в столовой, где был подходящий длинный стол.
— Я заставил Атласа вспомнить, какие вопросы были на тесте, — деловито произнёс Уэсли, — и самое сложное — это часть, где будет даваться блок кода и дальше вопросы по нему. Но мы можем потренироваться на задачах в учебнике. Они будут похожи.
Кэл и Энцо приступили к работе, вчитываясь в вопросы, связанные с анализом системного трафика, протоколов, криптографии и так далее.
Энцо разбирал задачу по уязвимости Cross-Site Scripting (XSS), когда услышал, как Кэл спросил про обфускацию:
— А если обфусцировать всю вирусную программу, то тогда и антивирус может не обнаружить вирусный код?
— Это возможно, но современные антивирусы используют поведенческий анализ и «песочницы», чтобы анализировать программы в изолированной среде и определить, есть ли угроза.
— А это можно обойти? — спросил Кэл.
— Да. Мы в Innotech сейчас работаем над кейсом, — глаза Уэсли засияли, — к нам обратились BlueDesk. Это инвестиционный фонд, — объяснил он.
— Помнишь, ты спрашивал, ловили ли мы хакеров, — Уэсли толкнул Энцо, отвлекая его от задачи про веб-безопасность, — так вот, это нам и нужно сделать, но мы пока не знаем как.
Энцо устало откинулся на стуле. Хотелось уже быстрее пить пиво.
— Что там случилось? — поинтересовался он. Формулы и протоколы тут же вылетели из головы по сравнению с историей про настоящий вирус.
— BlueDesk месяц назад наконец-то подключили метрики и обновили инфраструктурный мониторинг. Они поставили Veridian для наблюдения за серверами.
Энцо слышал об этом агенте мониторинга от известной компании SentinelCore, потому что тот стоял в большинстве финтех-компаний, включая его проект — Axion Financial.
— У них не такая большая нагрузка, но они планировали расширяться, и нужно было понять, какое им нужно оборудование для новых серверов, — продолжил Уэсли. — По расчётам и нагрузочным тестам всё выглядело нормально. Но как только агент развернули на проде и погоняли пару недель, метрики не сошлись. С учётом количества клиентов, данных и сотрудников реальная нагрузка никак не соответствовала ожидаемой. И они решили разбираться.
— И что это было? Они сразу решили подключать вас? — спросил Кэл.
— Не сразу, а после того как долго мучились сами, но не поняли, что именно ещё могло нагружать систему. Потом уже начали копать мы: посмотрели логи сетевого трафика, проанализировали использование ресурсов серверов, изучили системные журналы. В метриках всплывало, что один из серверных агентов периодически создаёт пиковые всплески сетевой активности, которых не было на тестовых стендах. Мы заметили подозрительно большой объём DNS-трафика — тысячи запросов, и полезная нагрузка в них выглядит как сплошной случайный мусор. На тестовых стендах такой херни нет, никакие бизнес-процессы не триггерят такие запросы. Так мы начали подозревать наличие утечки данных. Пока даже понятия не имеем, каких именно.
DNS-запросы — это уже странно, но сами по себе могут быть чем угодно, — продолжил Уэсли. — Поэтому мы полезли дальше в трафик и увидели ещё одну деталь: периодически от тех же машин уходил HTTPS-трафик к подозрительным доменам, маскирующимся под облачные сервисы. По объёму это выглядело как выгрузка кусков данных, а не просто метрики.
Уэсли говорил с интонацией, как будто рассказывал страшную историю у костра.
— Мы начали думать, что это вообще. Стали искать процессы, которые генерируют этот трафик. И опять на первый взгляд ничего подозрительного: у них были нормальные системные процессы. Но потом, когда мы начали более детально изучать каждый процесс, мы заметили кое-что странное, — он выдержал драматическую паузу.
— Что именно? — нахмурившись, спросил Энцо.
— Эти процессы использовали ресурсы нетипичным образом: потребляли слишком много памяти и обращались к странным областям диска. И да, там был не один файл, а целая цепь процессов, которые взаимодействовали друг с другом. Они маскировались под стандартные библиотеки, системные службы...
Код при этом был обфусцирован и зашифрован. Мы не могли просто так посмотреть и понять, что он делает, поэтому использовали инструменты для динамического анализа. Мы пытались понять, какие API-функции вызываются, какие данные обрабатываются. И вот тут мы нашли кое-что интересное.
Мы заметили, что эти процессы используют сложные алгоритмы шифрования. Куски кода с высокой энтропией были просто сплошной кашей, без читаемой структуры — типичный результат упаковщиков и самошифрующегося кода. Они постоянно генерируют новые ключи, изменяют код... Это типичное поведение для полиморфного вируса. Ещё эти процессы пытались скрыть свою активность. Они удаляли логи, подменяли данные, использовали антиотладочные техники... Ну и самое главное — они поднимали скрытый канал управления через DNS и, судя по анализу в песочнице, пытались сливать данные по HTTPS на «облачные» домены.
— Так вы нашли вирус по его поведению, даже не расшифровав его, — понимающе произнёс Кэл, вспоминая свой изначальный вопрос, — но благодаря полиморфии этого не мог сделать антивирус.
— Да.
— Жесть. Это звучит очень сложно.
— Да, я в восторге! — с довольной улыбкой согласился Уэсли, — пока мы только прикидываем, как он вообще туда попал: есть гипотеза, что точкой входа был именно этот обновлённый агент мониторинга, но доказательств ещё нет. Планируем на следующей неделе провести более детальный динамический анализ и пытаться расшифровать вирус. На этой больше времени ушло на анализ масштаба проблемы, прекращение утечки и изоляцию поражённых систем. Там пиздец. Это было на всех серверах.
Энцо улыбнулся, глядя на энтузиазм Уэсли. Всё, что он делал на стажировке, действительно звучало интересно и волнующе, в отличие от примера алгоритма обфускации, который был в задаче Кэла, из-за чего у него и появился вопрос.
— Кстати, если что, у меня подписан NDA, так что я вам ничего не рассказывал, — добавил Уэсли.
Энцо усмехнулся. Жалуясь друзьям на работу, он сам постоянно раскрывал банковские тайны.
Курьер с доставкой еды пришёл, когда Энцо и Кэл заканчивали с последней темой.
Наконец-то Уэсли попросил открыть ему банку пива, объявляя окончание работы.
— Какие планы на Хэллоуин? — спросил Энцо.
Уэсли перестал есть.
— Мы с подругами и Лио идём на вечеринку друзей Карины и на тусовку в братство SEAL (самое крупное в Гринстоуне). Двух мне хватит. С этой работой больше я не вывезу, — ответил Уэсли.
Энцо понимающе кивнул.
— Это отстой! — разочарованно выдохнул Кэл, — это же ваш последний год Хэллоуикенда в университете!
Сам Кэл планировал тусоваться, как и в прошлые годы, с четверга и до воскресенья. Энцо не мог в этом году позволить себе ничего подобного.
— Мой максимум — это вечер пятницы и субботы, — устало произнёс Энцо, — у меня полно работы. Встретимся в SEAL, — он кивнул Уэсли.
Кэл возмущённо открыл рот, но Энцо опередил его:
— Я пойду с вами в пятницу! И этого достаточно! В четверг у меня демонстрация функционала поддержке и внедрению перед выпуском релиза. А в пятницу его нужно установить.
Кэл разочарованно покачал головой:
— Какие же вы жалкие, — вынес приговор он.
Энцо не мог не согласиться.
— Неправда! — возмутился Уэсли, ударив по столу, — знаешь, сколько времени у меня ушло на два костюма? С этой тупой работой? У меня нет времени на подготовку ко всем тусовкам! — пылко закончил он.
— Не все так стараются, как ты, — возразил Кэл, — это не обязательно.
— Для меня обязательно! Я никуда не пойду, если буду выглядеть хуёво.
Кэл бросил на Уэсли долгий взгляд, но сдался и не стал продолжать спор.
— Ещё бы вы не пошли к SEAL. Это главная тусовка факультета, — добавил Кэл, чтобы последнее слово всё же осталось за ним.
— А как вы планируете одеться? — поинтересовался Уэсли.
— Секрет, — ответил Энцо.
— Эй! — недовольно воскликнул Уэсли, — почему?
Энцо твёрдо покачал головой. Он собирался дальше хранить интригу.
— Кем будешь ты? — спросил Энцо.
Уэсли радостно засиял:
— Мы будем феями Winx! Наконец-то! Я уговаривал их два года! И мы с Харитой чуть не разорвали дружбу из-за Текны! И нас как раз шестеро.
— И кто в итоге будет ею? — спросил Энцо.
Он смутно помнил героинь мультфильма. У него была старшая сестра, и в детстве он смотрел не только Winx.
— Я! — радостно сказал Уэсли, — я выиграл в камень-ножницы-бумага. А Харита — Лейла.
— У них типа суперсилы или что? — непонимающе спросил Кэл. Энцо усмехнулся. Кэл был единственным ребёнком в семье.
— Я, то есть Текна, — фея технологий! Харита — Лейла — фея воды и океанов, — объяснил Уэсли, — у них у всех есть магия. Музой будет Карина, Стеллой — Мэдисон, Флорой — Лио, а Элис будет Блум.
Энцо кивнул, выражая искренний интерес. Он не помнил никого из фей, но Уэсли сиял от счастья, перечисляя каждую.
— Что насчёт Атласа? — вспомнил Энцо.
— Его не будет нигде, — Уэсли фыркнул, — сказал, что будет занят работой. К тому же алкоголь и вечеринки — это не его. Хотя мы с Харитой предлагали ему стать Валтором.
Энцо засмеялся.
— Это кто? Тоже фея? — спросил Кэл.
— Не-а, — ответил Энцо, — это типа их главного злодея-мага.
— Так ты тоже знаешь их? — удивился Уэсли.
Энцо пожал плечами.
— Когда мы с Элеонор были детьми, мои родители ещё не были такими обеспеченными. Они отправляли нас в деревню к бабушке и дедушке в Литл-Бексхилл, в Йоркшире, на все летние каникулы. В деревне ловило только пять каналов по телевизору, поэтому ты смотришь только то, что там показывают, в том числе Winx.
Энцо погрузился в тёплые воспоминания. Его бабушка и дедушка занимались огородом, садом и разведением живности. Связь была только на холме, по всему двору бегают куры, за тобой гонится петух. Дождь и резиновые сапоги были неотъемлемой частью жизни. Они с Элеонор таскали с куста смородину и малину, обдирали локти, лазая по стенам сараев, и смотрели местные каналы, половину времени не понимая, что именно говорят из-за густого йоркширского акцента.
Кажется, его друзьям было сложно такое представить.
— Эх, вы не знаете, что такое есть клубнику прямо с огорода, — вздохнул Энцо, вспоминая свой испачканный в земле вид после поливки грядок, — и никогда не наступали в коровье дерьмо. Оно было размером с тарелку! — Энцо указал на широкую тарелку, куда они выложили курицу.
Уэсли поморщился.
— Элеонор меня специально толкнула! Потом я кинул в неё испачканный шлёпанец.
Энцо продолжил просвещать друзей в особенности деревенской жизни. Он нашёл фотографии с тех времён, сделанные на старые телефоны и цифровой фотоаппарат.
Время перевалило за полночь. Кэл, Энцо и Уэсли переместились в гостиную. Отсюда Уэсли с восторгом разглядывал открывающийся из окна вид на пляж.
— Хочешь прогуляться? — спросил Энцо.
Уэсли обернулся к нему с взглядом и скоростью щенка, который услышал любимое слово «гулять».
Кэл поддержал идею, и они решили выйти.
— Там холодно, — предупредил Энцо и открыл шкаф с верхней одеждой рядом с входной дверью.
— Всё ок, — отмахнулся Уэсли. Он приехал в майке и тонкой кофте, которая была явно слишком лёгкой для ветра ночью на пляже. Свободный верх подчёркивал его плечи, а на его ногах были прямые штаны. Он выглядел как главный герой манхвы и, кажется, пытался быть таким же крутым.
— Хотя... — Уэсли с любопытством заглянул в шкаф Энцо и достал оттуда кожаную куртку.
После этого они вышли на улицу. Ночной воздух был свежим и прохладным. Они гуляли по ровной дорожке, справа от них был пляж и океан, слева — парк с деревьями и за ним небоскрёбы.
Уэсли остановился, внимательно оглядывая вид на океан, освещаемый луной. Затем он отдал телефон Кэлу и попросил сделать фото.
Они стояли под невысокими фонарями, которые освещали дорожки в парке.
Ветер развевал волосы Уэсли, его щёки порозовели от прохлады, и на лице была яркая улыбка, которая была так похожа на настоящую, когда он смеялся над шутками Кэла.
Энцо не мог не улыбнуться в ответ. Уэсли со своими розовыми щеками и пухлыми губами выглядел невероятно мило. При этом его фигура оставалась такой же внушительной.
Энцо поймал себя на том, что задержал взгляд слишком долго, и поспешно отвернулся к океану, делая вид, что рассматривал волны.
Они вернулись только после того, как обошли весь парк. Уэсли ещё раз сфотографировался на фоне океана. После чего они обсуждали «H2O: Просто добавь воды», потому что Энцо это шоу тоже смотрел.
Уставшие после прогулки, они разошлись по комнатам. Энцо, как обычно, ещё некоторое время лежал на кровати, просматривая социальные сети в телефоне. Уэсли уже выложил фотографии в сторис, где отметил Энцо и Кэла.
Энцо сделал скриншот публикации Уэсли в его куртке.
Глоссарий
DNS-трафик (DNS traffic): Запросы и ответы по протоколу DNS (Domain Name System), который преобразует понятные человеку доменные имена (например, ) в машинные IP-адреса. Аномально большой или подозрительный DNS-трафик может указывать на утечку данных или скрытый канал управления.
HTTPS-трафик (HTTPS traffic): Зашифрованный сетевой трафик, передаваемый по протоколу HTTPS (Hypertext Transfer Protocol Secure). Используется для безопасной передачи данных, например, при входе в онлайн-банк. Злоумышленники могут маскировать под него выгрузку украденной информации на подконтрольные серверы.
DNS-запрос (DNS query): Отдельный запрос к DNS-серверу для получения IP-адреса по доменному имени. Вредоносные программы могут использовать множество DNS-запросов со случайными данными для создания скрытого канала связи.
Антивирус (antivirus): Программное обеспечение, предназначенное для обнаружения, блокировки и удаления вредоносных программ (вирусов, троянов, червей и т.д.). Использует сигнатурный и поведенческий анализ.
Поведенческий анализ (behavioral analysis): Метод обнаружения угроз, при котором система безопасности анализирует поведение программ или процессов в реальном времени, выявляя подозрительные или аномальные действия (например, попытку шифрования множества файлов), а не ищет известные сигнатуры вирусов.
«Песочница» (sandbox): Изолированная и контролируемая среда для безопасного запуска и анализа подозрительных программ или кода. Позволяет отслеживать их поведение (сетевую активность, попытки доступа к файлам) без риска для реальной системы.
Обфускация (obfuscation): Намеренное преобразование исходного кода программы для его запутывания и усложнения чтения и анализа человеком или специальными инструментами. Часто используется злоумышленниками для сокрытия вредоносной логики от антивирусов.
Упаковщик (packer): Программа, которая «упаковывает» исполняемый файл, сжимая и/или шифруя его код. При запуске файл распаковывается в памяти. Используется для уменьшения размера файла или (в случае вредоносов) для сокрытия кода от статического анализа.
Самошифрующийся код (self-encrypting code): Метод обфускации, при котором программа шифрует сама себя, а при запуске расшифровывает свои части в памяти. Это затрудняет статический анализ и создание сигнатур для антивируса.
Полиморфный вирус (polymorphic virus): Вредоносная программа, которая способна автоматически изменять свой код или сигнатуру при каждом новом заражении, оставаясь функционально идентичной. Это позволяет ему уклоняться от обнаружения антивирусами, работающими по сигнатурам.
Антиотладочные техники (anti-debugging techniques): Методы, используемые вредоносными программами для обнаружения и противодействия отладке (процессу анализа кода специалистом). Цель — затруднить исследование и понимание алгоритмов работы вируса.
Скрытый канал управления (covert channel): Способ скрытой передачи данных или команд, который использует легитимные каналы связи (например, DNS-запросы, заголовки пакетов) не по их прямому назначению. Позволяет вредоносной программе незаметно «общаться» с сервером злоумышленника.
Динамический анализ (dynamic analysis): Метод анализа вредоносного программного обеспечения путём его запуска в контролируемой среде («песочнице») и наблюдения за его реальным поведением: какие файлы создаёт, куда обращается по сети, какие системные функции вызывает.
Статический анализ (static analysis): Метод анализа программного кода или исполняемого файла без его запуска. Исследователь изучает структуру файла, дизассемблированный код, строки, импортируемые библиотеки для поиска признаков вредоносности.
Энтропия (entropy, в контексте анализа кода): Мера хаотичности или неопределённости данных. Высокая энтропия участка кода часто указывает на его сжатие, шифрование или обфускацию, что является косвенным признаком возможного сокрытия вредоносной нагрузки.
Продакшн-среда / прод (production environment / prod): Основная, рабочая среда, где функционирует реальный, публично доступный сервис или приложение для конечных пользователей. В отличие от тестовых стендов.
Сигнатурный анализ (signature-based detection): Традиционный метод обнаружения вредоносов, при котором антивирус ищет в файлах уникальные последовательности байтов (сигнатуры), характерные для известных вирусов. Неэффективен против новых или полиморфных угроз.
