#GRIDNETWARS - ВСРАЙТАП

#GRIDNETWARS - ВСРАЙТАП

Kucher

Привет-привет! Blueteam зашли в чат, а участники ивента наконец протрезвели, а значит пора опубликовать самый всратый райтап по ивенту.

Почему всратый? Потому что доступ к задачкам уже закрыт, а значит суть их придётся вспоминать исключительно по названию. На связи Kucher из Infected Mushrooms, советую тебе набрать чайку, устроиться поудобнее и получать удовольствие.

DISCLAIMER: Всё описанное в этой статье выражает исключительно моё личное мнение.

ОРГАНИЗАЦИЯ ИВЕНТА

В целом то всё было зашибись, оффлайн локация КВЦ Парковый, дорого-богато-красиво, места всем хватило и розеток тоже. Сразу выделю музычку, ребята из SANS просто гении в составлении плейлиста под CTF-ы, мы сидели и ловили нереальный драйв, она не напрягала а заряжала топовым вайбом (кстати, если это будут читать орги то пожалуйста поделитесь плейлистом на любой платформе, вся тима будет мега благодарна). Большие красивые экранчики со scoreboard-ами смотрелись круто.

Но давайте и о плохом, я знаю очень много команд и индивидуалов которые получили отказ в участии за ДВА ДНЯ до ивента. Это учитывая то что люди взяли day-off итд итп. Товарисчи организаторы - это совсем не круто, более того, это уже хуёво, а ещё этот факт накладывает очень сильный отпечаток на будущее. При этом, почему командам дали отказ - Хуй Его Знает, просто вот такой зарегался, ждёшь, а тебе за 2 дня в письме приходит текст, в котором между строк читаются слова песни Ленинград - Дорожная.

И ладно, я бы понял если бы была живая инфраструктура, ресурсов мало а дорезать виртуалок и построить VPN к лабе в последнюю минуту не смогли, но нет же!

Весь ивент был построен на платформе ranges.io, к которой кстати вообще никаких нареканий, работала как швейцарские часы, НО все таски давались один большим архивом, который лежал на файлшаре! Ни один таск не требовал подключения к машине или сбор логов с эндпоинта или SIEM-ки. А теперь вопрос к знатокам (барабанная дробь) - почему не пустить людей в онлайн? Отвечает Александр Друзь - ответ, "А хз..." и всё недовольство уходит к зрителям!

ПОДГОТОВКА

Скачиваешь .iso со всеми необходимыми материалами и даже двумя бубунту виртуалками. ISO-шник выдаётся за день до ивента, что правильно.

SPOILER ALERT: Пароли от виртуалок тебе не выдают, в iso-шнике его тоже нет, но оно тебе и не надо. Берёшь свою хостовую системы и не выёбываешься, всё равно так удобнее.

Смотрим на структуру, такси поделены на 4 папочки:

Просто, понятно, открываем их по очереди. В Level 1 Artifacts видим 2 папки с данными собранными с предприятий, инструкцию для-тех-у-кого-лапки как примаунтить .vhdx и общую схему сети


Смотрим в папки по очереди, сначала в Spader Tech. Если всё распаковать получим следующее:

В spader-core-minimal и spader-dns-traffic лежат .pcap файлики, в spader-network-logs валяются логи с прокси и фаерволов (они продублированы у меня под папками потому что мне так было удобнее).

А вот в папках stsupport10-... всё более интересно, в memory валяется дамп памяти .img, в plaso-timeline лежит .csv файл, а в triage валяется .vhdx с артефактами которые могут быть полезны аналитику:

Едем дальше в Stark Research Lab, тут видим triage, логи с DC и pcap с интерфейса какой-то тачки.


Едем дальше, и переходим в Level 2 Artifacts, тут интереснее 2 pcap-а, один лог OpenVPN и похожий triage с другой виртуальной машины.

В Level 3 Artifacts видим море pcap-ов, несколько схем, документацию и файлы ZBK (Zarafa Backup Archive, которые я лично увидел только при написании всрайтапа)

Открываем Level 4 Artifacts, там 3 папки проекта и картиночка на которой нам не однозначно намекают что эти папки ни что иное как OpenPLC Project-ы.

Фууууууууух, разобрались, теперь придётся думать. А что вообще со всем этим делать?

TOOLS USED


PLC: Ну, пока мысль свежа и актуальна, стягиваем с офф сайта OpenPLC Editor, даже если ты ничего не знаешь о SCADA, схемах и так далее. После этого забываем об OpenPLC потому что самих тасков нет, что делать непонятно и вообще.


NETWORK: Дальше видим, что у нас дочерта и больше .pcap файлов, а значит если у тебя нет Wireshark то самое время его установить, если ты впервые видишь Wireshark то ютуб и гугл в помосчь, дополнительно сохраняем себе cheat-sheet, а ещё, о чудо доку от самих SANS. Лучше предварительно всё просмотреть хотя-бы через слово по диагонали чтобы на ивенте понимать что это такое.

НО одного Wireshark-а может быть не достаточно, думаем об альтернативных вариантах визуализации данных, заглядываем в супер доку Awesome Forensics, там видим Network Miner - и закачиваем его фришную версию. Spoiler: в то время как Wireshark-ом удобно разбирать пакет почти по битам, Network Miner предоставляет удобную визуализацию по хостам, сессия итд итп, просто картиночки проще.

А дальше представим тулу которую мы начали использовать непосредственно на ивенте (спасибо @ximerus) PcapXray, с его помощью мы сможем визуализировать все флоу пакетов между хостами, удобно для некоторых задач.


FORENSICS: Думаем дальше, вспоминаем про триажи с хостов, тут в голову приходит один абсолютный лидер - Autopsy, если Вы ещё не пользовались им - то срочно начинайте, на таких CTF-ах это очень быстрый и простой инструмент для того чтобы вытащить все артефакты, одну из тасок она позволяла решить за 2 клика. Как пользоваться? - Очень просто, создаёшь проект, натравливаешь на папку со всеми собранными файлами и вуаля, имеешь красиво организованный список артефактов. Ляпота то какая!

MEMORY FORENSICS: Есть у нас дамп памяти, логично что с ним что-то надо будет делать. Опять таки долго не думаем, берём самое простое и понятное Volatility, видим что там две версии Volatility 2 и Volatility 3, скачиваем на всякий случай обе, хотя стабильно работает только 2.6 (ИМХО).

REGISTRY: Если чуть дольше полазить по папкам то можно найти дампы registry, тут нам поможет Registry Explorer от Eric Zimmerman.

TIMELINE: В одном из уровней видим какую-то странную timeline в формате csv, а значит возвращаемся к Эрику и скачиваем его тул Timeline Explorer.

Такс, в целом с подготовкой закончили, необходимый минимум собрали. Весь он интуитивно понятен и устанавливается в 3 клика. Перейдём к таскам.


ТАСКИ - ВЕРХНЕУРОВНЕВЫЙ ОБЗОР

SPOILER1: Хотя в правилах ивента не указано, но я решил не оставлять тут флаги в plain text а только пути к их нахождению. Постараюсь размыть как смогу.
SPOILER2: Доступ к самим таскам закрыт, поэтому всё описанное воспроизведено из памяти автора, более того автор не сам вытаскивал все флаги и поэтому некоторые из них могут быть пропущены.

Отметим сразу, что такой формат CTF-а идеально подходит чтобы обучать людей, за это моё глубокое уважение организаторам, если быть более детальным то почти для каждого таска были указаны файлы evidence-a в которых находился флаг всилу достаточно размытых вопросов, так что ты мог пропустить тыканье мордочкой мимо миски с молоком в пол.

Ещё неплохо была сделана система подсказок, застрял - без проблем с маленькой пенальти по очкам тебе помогут, так что подсказки можно было брать сразу как только чувствуешь что не понимаешь что от тебя хотят.

LEVEL1

Самые простые таски, часто из серии найди в файле определённое имя, ответь на такой-то вопрос, посмотри в логе айпишник итд итп. Всего на этом уровне 20 тасок, но хардкор начинается с 13го.

Как найти в реестре пароль от OpenVPN гуглится легко, дест порт ещё проще, но вот Q15 Code injection не решить без понимания реверса, хотя подозревалось что с этой таской может помочь Volatility, но сам IOC который надо найти очень неплохо спрятан.

Q16 же становится резко мега-сложным, почему - потому что consoles и cmdscan по дампу не показывают ничего, тут надо чутка подумать, но подсказка которая максимально приблизила нас к решению была самой последней в этом таске. Заметим что у нас произошел мисскомуникейшен, и я не рассказал умным людям которые хорошо умели в волатилити имя архива от которого мы искали пароль. Этот флаг был самым сложным и мы сдали его в последние секунды с помощью всех Богов и самой судьбы.

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

LEVEL2

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

Q3 IP of Ethernet/IP гуглится, нужно было найти порт.

Из самых весёлых в первой половине был Q5 Jump Host Identity, наверное был какой-то правильный индикатор для того чтобы найти этот хост, но в решении этого таска нам помог PcapXray, просто посмотреть на наибольшее кол-во подключений к хосту.

Q10 Missing Country оказался тоже твёрдым орешком, нужно было открыть хинт том что Operations dont use cloud services, понять где там клауд сервисы и потом найти страну в которой маловеротяно хостятся клауд-сервисы.

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

LEVEL3

Тут уже начинаются пляски вокруг PLC-шек, но всё не так плохо, у тебя под рукой документация и разные схемки. Q2 PLC model было сложно найти и чтобы вытащить флаг нужно было реализовать регулярку в Wireshark-е.

Q4 Protocol CVE тоже заставлял подумать, нужно было понять по какому протоколу общаются PLC а потом найти подходящие к нему CVE.


Из самых сложных надо отметить Q16 FTP disabled, нужно было найти хексовое значение в FTP пакете которое появляется при закрытии сессии.

LEVEL4

Вот тут начинается веселье, эх если бы я знал, но если коротко то в первых двух тасках надо было использовать доки из L3, а до меня это очень туго доходило.

Остальные таски достаточно простые, все на работу в OpenPLC Editor, значение глобальных переменных, какого цвета кнопочка, какая кнопочка запускает то или это. Тут надо было читать, думать и просто разбираться.

Только вот в Q9 нельзя было всё усложнять, надо было просто посчитать порядковый номер бита начиная отсчёт с нуля.


ЗАКЛЮЧЕНИЕ

Эпилог, все остались живы в общем. Не смотря на некоторые моменты мне ивент очень понравился и я мега-доволен этим прекрасным днём. Я очень жду таких ивентов в будущем рассчитаным на большее количество людей.
Отдельное спасибо и респект команде Infected Mushrooms ведь мы с вами пришли и сделали красоту на чилле. Ценю безумно всех и каждого и пусть эта маленькая победа станет только началом.

Всем удачи, всем пока, с тобой был Kucher, читай NESEKURNO, любите маму, мойте руки с мылом.

Report Page