Взломал! Лучшие моменты KringleCon 5: Золотые кольца

Взломал! Лучшие моменты KringleCon 5: Золотые кольца

Обучение встречается с развлечением в 2022 SANS Holiday Hack Challenge — пристегнитесь, чтобы прокатиться на Северном полюсе, пока я срываю грязный план Гринчама и возвращаю пять золотых колец.

Я первый год участвую в Праздничный взлом SANS и это был взрыв. Выполнив серию из 16 задач, от простых до сложных, я практиковался в анализе подозрительного сетевого трафика и журналов PowerShell, записывая Правила Суриката, вырвавшись из Контейнер Docker, поиск утекших ключей для использования Конвейер GitLab CI/CD и Пользователь AWS, проведение XML-атаки на внешние сущностии взломать смарт-контракт, чтобы купить не заменимый токен.

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

ориентация

Каждый участник получает аватар для навигации в среде видеоигры в браузере, установленной на Северном полюсе:

Взломал! Основные моменты KringleCon 5: Разведка данных PlatoBlockchain Golden Rings. Вертикальный поиск. Ай.

Во время ориентации вы получаете криптовалютный кошелек, который игра использует для присуждения KringleCoins за выполнение заданий, и который вы используете в последнем испытании для взлома смарт-контракта. Интересно, что игра отслеживает все транзакции KringleCoin в блокчейне Ethereum, а это означает, что полная запись вашего прогресса также хранится в этом блокчейне.

На первом кольце игры.

1. Кольцо Толкина

Взломал! Основные моменты KringleCon 5: Разведка данных PlatoBlockchain Golden Rings. Вертикальный поиск. Ай.

Чтобы найти Кольцо Толкина, пришлось напрячь свои мускулы при анализе журналов.

Wireshark фишинг

Сначала я использовал Wireshark для анализа предоставленных .pcap файл, который показал сервер в adv.epostoday[.]uk скачивание файла Ref_Sept24-2020.zip к компьютеру:

Взломал! Основные моменты KringleCon 5: Разведка данных PlatoBlockchain Golden Rings. Вертикальный поиск. Ай.

Заглянув внутрь ZIP-файла, я нашел исполняемый файл с именем Ref_Sept24-2020.scr что вызвало два обнаружения в ESET Endpoint Security: BAT/Runner.ES и Генерик.TAGTBG. Эта вредоносная программа в конечном итоге приводит к запуску вредоносного исполняемого файла в памяти под названием config.dll и обнаружен ESET Расширенный сканер памяти as Win32/Dridex.DD.

Журналы событий Windows

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

Поскольку журналы содержали 10,434 XNUMX события, я сгруппировал события по дате, а затем запустил действие «Найти», чтобы найти любые события, содержащие $ персонаж. В PowerShell, $ используется для создания и ссылки переменные. Я обнаружил, что атака произошла 24 декабря 2022 года, когда злоумышленник запустил следующий скрипт:

Взломал! Основные моменты KringleCon 5: Разведка данных PlatoBlockchain Golden Rings. Вертикальный поиск. Ай.

Похоже, злоумышленник нашел секретный рецепт, подменил секретный ингредиент мед для рыбий жир, а затем создал новый файл рецепта. Это вызвало событие с идентификатором 4104, что означает выполнение удаленных команд PowerShell. Итак, я отфильтровал события по этому идентификатору, что помогло мне быстрее найти дополнительные вредоносные события.

Суриката Регата

Последним упражнением для Tolkien Ring было написание четырех правил Suricata для мониторинга сетевого трафика на предмет заражения Dridex:

alert dns $HOME_NET any -> any any (msg: «Известный неверный поиск DNS, возможное заражение Dridex»; dns.query; content: «adv.epostoday.uk»; nocase; sid: 1; rev: 1;)

alert http 192.185.57.242 any <> any any (msg: «Исследуйте подозрительные соединения, возможное заражение Dridex»; sid:2; rev:1;)

alert tls any any -> any any (msg: «Исследуйте неверные сертификаты, возможное заражение Dridex»; tls.cert_subject; content: «CN=heardbellith.Icanwepeh.nagoya»; sid:3; rev:1;)

alert http any any -> any any (msg: «Подозрительная функция JavaScript, возможно заражение Dridex»; file_data; content: «let byteCharacters = atob»; sid: 4; rev: 1;)

Для того, чтобы эти правила перехватывали DNS-запросы для adv.epostoday[.]uk, подключения к IP-адресу 192.185.57[.]242, использование вредоносного сервера Хердбеллит.Иканвепе[.]нагоя определяется по общему имени (CN) в сертификате TLS и использование JavaScript атоб () функция для декодирования двоичной строки, содержащей данные в кодировке base64 на клиенте.

Выполнение этих трех задач принесло мне Кольцо Толкиена:

Взломал! Основные моменты KringleCon 5: Разведка данных PlatoBlockchain Golden Rings. Вертикальный поиск. Ай.

Переходим ко второму кольцу.

2. Эльфийское кольцо

Взломал! Основные моменты KringleCon 5: Разведка данных PlatoBlockchain Golden Rings. Вертикальный поиск. Ай.

Самыми известными испытаниями для Elfen Ring были Prison Escape и Jolly CI/CD.

Prison Escape

Побег из тюрьмы был строгим напоминанием о том, что предоставление привилегий root пользователю в контейнере Docker так же хорошо, как предоставление привилегий root в хост-системе. Задача состояла в том, чтобы вырваться из контейнера. Что ж, легко сделать, когда вы root:

Взломал! Основные моменты KringleCon 5: Разведка данных PlatoBlockchain Golden Rings. Вертикальный поиск. Ай.

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

Взломал! Основные моменты KringleCon 5: Разведка данных PlatoBlockchain Golden Rings. Вертикальный поиск. Ай.

Веселый CI/CD

Хотя это было быстро, Jolly CI/CD занял у меня больше всего времени, чтобы разобраться. Во-первых, нам дали Git-репозиторий для клонирования через HTTP:

Взломал! Основные моменты KringleCon 5: Разведка данных PlatoBlockchain Golden Rings. Вертикальный поиск. Ай.

Из URL-адреса я мог видеть, что имя репозитория было wordpress.flag.net.internal, поэтому я перешел в репозиторий и нашел веб-сайт WordPress. Я проверил, работает ли сайт:

Взломал! Основные моменты KringleCon 5: Разведка данных PlatoBlockchain Golden Rings. Вертикальный поиск. Ай.

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

Взломал! Основные моменты KringleCon 5: Разведка данных PlatoBlockchain Golden Rings. Вертикальный поиск. Ай.

Из сообщений фиксации это выглядит как совершать было сделано после добавления активов, чтобы исправить возгласы. Пришло время проверить коммит pre-whoops:

Взломал! Основные моменты KringleCon 5: Разведка данных PlatoBlockchain Golden Rings. Вертикальный поиск. Ай.

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

Взломал! Основные моменты KringleCon 5: Разведка данных PlatoBlockchain Golden Rings. Вертикальный поиск. Ай.

Теперь давайте вернемся к основной ветке и проверим, можем ли мы внести тривиальное изменение в исходный код (используя nano, я просто добавил пробел в один из файлов):

Взломал! Основные моменты KringleCon 5: Разведка данных PlatoBlockchain Golden Rings. Вертикальный поиск. Ай.

Итак, я выполнил первую часть задания, выдав себя за одного из разработчиков WordPress, но работал ли сайт после моего нажатия?

Взломал! Основные моменты KringleCon 5: Разведка данных PlatoBlockchain Golden Rings. Вертикальный поиск. Ай.

Мой толчок что-то изменил, потому что теперь сайт перенаправляется на порт 8080.

До сих пор я игнорировал часть задачи, связанную с CI/CD, которая должна стать ключом к ее выполнению. Репозиторий содержит .gitlab-ci.yml файл, который предоставляет конфигурацию для конвейера GitLab CI/CD. Каждый раз, когда вы нажимаете на репозиторий, срабатывает система CI/CD, и GitLab Раннер выполняет сценарии в этом файле YML. Я подумал, что это так же хорошо, как удаленное выполнение кода на сервере, где установлен GitLab Runner.

Приглядевшись, я увидел Rsync сценарий, копирующий все файлы из репозитория Git в каталог на веб-сервере, с которого обслуживался веб-сайт. Сначала я пытался использовать Rsync изменить поток данных, скопировав все файлы с веб-сервера в репозиторий Git, но безуспешно.

После долгих проверок гипотез я, в конце концов, пришел к революционному выводу: вместо того, чтобы пытаться «исправить» веб-сайт WordPress или запускать вредоносные скрипты через систему сборки, обслуживайте веб-сайт, через который происходит утечка информации с веб-сервера. Внутри index.php (расположен на верхнем уровне репозитория), я могу закомментировать код, который загружает веб-сайт WordPress, и запускать команды PHP, которые проверяют веб-сервер.

Действительно, я даже могу запускать команды оболочки с помощью PHP. я нашел это пройти через() работал легко.

In index.php, Я использовал // чтобы прокомментировать две строки, и я добавил проход('ls -la /'); на последней строке. Это создает веб-сайт, на котором перечислены все файлы в корневом каталоге веб-сервера:

Взломал! Основные моменты KringleCon 5: Разведка данных PlatoBlockchain Golden Rings. Вертикальный поиск. Ай.

Затем я отправил это изменение в репозиторий Git, и система GitLab CI/CD позаботилась об обновлении веб-сайта за меня:

Взломал! Основные моменты KringleCon 5: Разведка данных PlatoBlockchain Golden Rings. Вертикальный поиск. Ай.

Ах, Кольцо Эльфов должно быть в флаг.txt! Я повторил предыдущие шаги, но на этот раз с помощью проход('cat /flag.txt'); раскрывая Кольцо Эльфов в следующий раз, когда я запросил веб-сайт:

Взломал! Основные моменты KringleCon 5: Разведка данных PlatoBlockchain Golden Rings. Вертикальный поиск. Ай.

На третьем кольце.

3. Веб-кольцо

Взломал! Основные моменты KringleCon 5: Разведка данных PlatoBlockchain Golden Rings. Вертикальный поиск. Ай.

Самым забавным испытанием для меня было открыть дверь шахты Бории, хотя Фонтан Гламтариэля был интересным, но также представлял загадки.

Откройте дверь шахты Бория

В Open Boria Mine Door нам было предложено шесть булавок или мини-задач, чтобы обойти проверку ввода или Политика безопасности контента соединить входную и выходную трубы между штырями, в том числе согласовать цвета труб. Для большинства булавок я использовал HTML, чтобы написать список соединительных букв «о». Вот мое окончательное решение:

Взломал! Основные моменты KringleCon 5: Разведка данных PlatoBlockchain Golden Rings. Вертикальный поиск. Ай.

Контакт 1

Для Pin 1 не было проверки, поэтому это был простой вопрос HTML и встроенного CSS:

Контакт 2

У контакта 2 была политика безопасности контента, которая запрещала JavaScript, но разрешала встроенный CSS, так что для моего метода это не было проблемой:

Контакт 3

В Pin 3 была политика безопасности контента, которая запрещала CSS, но разрешала встроенный JavaScript, поэтому вместо этого я использовал JavaScript для изменения стилей:

Контакт 4

У контакта 4 не было политики безопасности содержимого, но на стороне клиента была функция sanitizeInput, которая удаляла двойные кавычки, одинарные кавычки, левые и правые угловые скобки. Хитрость здесь заключалась в том, чтобы понять, что эта функция активируется не отправкой формы, а размытие событие. Другими словами, перемещение мыши от поля ввода вызывало размытие событие, очищающее любой ввод. Решение состояло в том, чтобы отправить форму, нажав кнопку Enter клавишу , стараясь не перемещать курсор мыши за пределы поля ввода:

Контакт 5

Пин 5 был таким же санитарный ввод функцию и обход вместе с политикой безопасности контента, запрещающей встроенный CSS, но разрешающей встроенный JavaScript:

Контакт 6

Наконец, Pin 6 не очищал ввод, но использовал более строгую политику безопасности контента, запрещающую как встроенный CSS, так и JavaScript. Мое решение состояло в том, чтобы использовать устаревший HTML для получения нужных мне стилей и использовать таблицу вместо списка:

Фонтан Гламтариэля

Фонтан Гламтариэля была возможность потренироваться Атаки XML External Entity (XXE). Выяснить, как определить пользовательскую XML-сущность, определить сущность, которая запрашивает файл с сервера, и добавить эту сущность в качестве полезной нагрузки к HTTP-запросу, было несложно. Сложнее всего было разгадать внутриигровые загадки, чтобы угадать путь к файлам, которые сливает сервер. Вот запрос прорыва, раскрывающий местонахождение золотого кольца:

Взломал! Основные моменты KringleCon 5: Разведка данных PlatoBlockchain Golden Rings. Вертикальный поиск. Ай.

Взломал! Основные моменты KringleCon 5: Разведка данных PlatoBlockchain Golden Rings. Вертикальный поиск. Ай.

Взломал! Основные моменты KringleCon 5: Разведка данных PlatoBlockchain Golden Rings. Вертикальный поиск. Ай.

Я бы предложил два урока, извлеченных из этой задачи. Во-первых, используйте Конвертер типа контента расширение в Отрыжка для преобразования полезных данных JSON в XML. Во-вторых, попробуйте разместить полезную нагрузку XXE в разных тегах — мне потребовалось много времени, чтобы понять, что все, что мне нужно было сделать, это поместить ххх; полезная нагрузка в тип запроса тег вместо imgDrop тег.

На четвертом кольце.

4. Облачное кольцо

Взломал! Основные моменты KringleCon 5: Разведка данных PlatoBlockchain Golden Rings. Вертикальный поиск. Ай.

Игра за Cloud Ring была новичком в интерфейсе командной строки (CLI) Amazon Web Services (AWS).

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

На пятом кольце.

5. Пылающее Кольцо Огня

Взломал! Основные моменты KringleCon 5: Разведка данных PlatoBlockchain Golden Rings. Вертикальный поиск. Ай.

Наиболее поучительной частью этого набора задач было изучение Деревья Меркла использовать смарт-контракт и попасть в список пресейла на покупку невзаимозаменяемого токена (NFT). Здесь задача заключалась в том, чтобы найти подтверждающие значения, которые, наряду с адресом моего кошелька и корневым значением дерева Меркла, подтвердили мое включение в список предварительной продажи.

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

. Инструмент профессора QPetabyte, я создал дерево Меркла из двух листьев, состоящих из адреса моего кошелька и адреса для BSRS_nft смарт-контракт, который я нашел с помощью внутриигрового Blockchain Explorer во втором блоке игровой цепочки Ethereum. Инструмент сгенерировал корневое значение этого дерева и значение подтверждения для адреса моего кошелька. Затем я использовал Burp для перехвата запроса к серверу и изменил корневое значение по умолчанию, чтобы я мог отправить действительное дерево Меркла. Вот мой НФТ спорт купил по фиксированной цене 100 KringleCoins:

Взломал! Основные моменты KringleCon 5: Разведка данных PlatoBlockchain Golden Rings. Вертикальный поиск. Ай.

Уродливый экземпляр на самом деле.

Окончательный

Взломал! Основные моменты KringleCon 5: Разведка данных PlatoBlockchain Golden Rings. Вертикальный поиск. Ай.

Большое спасибо организаторам SANS Holiday Hack Challenge за то, что они открыли мне новые горизонты и помогли углубить мои знания в области кибербезопасности. Я не только с нетерпением жду челленджа в следующем году, но я даже опробую выпуски этого челленджа 2020 и 2021 годов. И если вы еще не участвовали в этом соревновании, я надеюсь, что эти основные моменты вас заинтересовали.

Отметка времени:

Больше от Мы живем в безопасности