Обучение встречается с развлечением в 2022 SANS Holiday Hack Challenge — пристегнитесь, чтобы прокатиться на Северном полюсе, пока я срываю грязный план Гринчама и возвращаю пять золотых колец.
Я первый год участвую в Праздничный взлом SANS и это был взрыв. Выполнив серию из 16 задач, от простых до сложных, я практиковался в анализе подозрительного сетевого трафика и журналов PowerShell, записывая Правила Суриката, вырвавшись из Контейнер Docker, поиск утекших ключей для использования Конвейер GitLab CI/CD и Пользователь AWS, проведение XML-атаки на внешние сущностии взломать смарт-контракт, чтобы купить не заменимый токен.
Лучшая часть этого опыта заключалась в том, что он познакомил меня с новыми инструментами и технологиями, что значительно расширило мои знания в области кибербезопасности. Здесь я поделюсь некоторыми моментами решения задач.
ориентация
Каждый участник получает аватар для навигации в среде видеоигры в браузере, установленной на Северном полюсе:
Во время ориентации вы получаете криптовалютный кошелек, который игра использует для присуждения KringleCoins за выполнение заданий, и который вы используете в последнем испытании для взлома смарт-контракта. Интересно, что игра отслеживает все транзакции KringleCoin в блокчейне Ethereum, а это означает, что полная запись вашего прогресса также хранится в этом блокчейне.
На первом кольце игры.
1. Кольцо Толкина
Чтобы найти Кольцо Толкина, пришлось напрячь свои мускулы при анализе журналов.
Wireshark фишинг
Сначала я использовал Wireshark для анализа предоставленных .pcap файл, который показал сервер в adv.epostoday[.]uk скачивание файла Ref_Sept24-2020.zip к компьютеру:
Заглянув внутрь 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 года, когда злоумышленник запустил следующий скрипт:
Похоже, злоумышленник нашел секретный рецепт, подменил секретный ингредиент мед для рыбий жир, а затем создал новый файл рецепта. Это вызвало событие с идентификатором 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 на клиенте.
Выполнение этих трех задач принесло мне Кольцо Толкиена:
Переходим ко второму кольцу.
2. Эльфийское кольцо
Самыми известными испытаниями для Elfen Ring были Prison Escape и Jolly CI/CD.
Prison Escape
Побег из тюрьмы был строгим напоминанием о том, что предоставление привилегий root пользователю в контейнере Docker так же хорошо, как предоставление привилегий root в хост-системе. Задача состояла в том, чтобы вырваться из контейнера. Что ж, легко сделать, когда вы root:
Как пользователь root, я перечислил таблицы разделов для устройства, а затем смонтировал файловую систему хоста, предоставив мне полный доступ к хосту. Теперь я мог искать ключ, который должен находиться в домашнем каталоге, как показывают подсказки в игре:
Веселый CI/CD
Хотя это было быстро, Jolly CI/CD занял у меня больше всего времени, чтобы разобраться. Во-первых, нам дали Git-репозиторий для клонирования через HTTP:
Из URL-адреса я мог видеть, что имя репозитория было wordpress.flag.net.internal, поэтому я перешел в репозиторий и нашел веб-сайт WordPress. Я проверил, работает ли сайт:
Да, сайт работал. Мне было любопытно, были ли какие-либо утечки ключей в истории исходного кода. Если да, я должен иметь возможность вносить изменения в исходный код. Так что я побежал git журнал:
Из сообщений фиксации это выглядит как совершать было сделано после добавления активов, чтобы исправить возгласы. Пришло время проверить коммит pre-whoops:
Отлично, я нашел .ssh каталог с ключами. Давайте скопируем эти ключи и настроим агента SSH и пользователя Git, чтобы посмотреть, смогу ли я выдать себя за владельца этих ключей:
Теперь давайте вернемся к основной ветке и проверим, можем ли мы внести тривиальное изменение в исходный код (используя nano, я просто добавил пробел в один из файлов):
Итак, я выполнил первую часть задания, выдав себя за одного из разработчиков WordPress, но работал ли сайт после моего нажатия?
Мой толчок что-то изменил, потому что теперь сайт перенаправляется на порт 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 /'); на последней строке. Это создает веб-сайт, на котором перечислены все файлы в корневом каталоге веб-сервера:
Затем я отправил это изменение в репозиторий Git, и система GitLab CI/CD позаботилась об обновлении веб-сайта за меня:
Ах, Кольцо Эльфов должно быть в флаг.txt! Я повторил предыдущие шаги, но на этот раз с помощью проход('cat /flag.txt'); раскрывая Кольцо Эльфов в следующий раз, когда я запросил веб-сайт:
На третьем кольце.
3. Веб-кольцо
Самым забавным испытанием для меня было открыть дверь шахты Бории, хотя Фонтан Гламтариэля был интересным, но также представлял загадки.
Откройте дверь шахты Бория
В Open Boria Mine Door нам было предложено шесть булавок или мини-задач, чтобы обойти проверку ввода или Политика безопасности контента соединить входную и выходную трубы между штырями, в том числе согласовать цвета труб. Для большинства булавок я использовал HTML, чтобы написать список соединительных букв «о». Вот мое окончательное решение:
Контакт 1
Для Pin 1 не было проверки, поэтому это был простой вопрос HTML и встроенного CSS:
<p style=“letter-spacing: -4px; margin: 0; padding: 0;”>oooooooooooooo</p> |
Контакт 2
У контакта 2 была политика безопасности контента, которая запрещала JavaScript, но разрешала встроенный CSS, так что для моего метода это не было проблемой:
1 2 3 4 5 6 7 8 9 10 11 12 |
<ul style=“list-style: none; line-height:0.5; letter-spacing: -4px; margin: 0; padding: 0;”> <li>o</li> <li>o</li> <li>o</li> <li>o</li> <li>o</li> <li>o</li> <li>o</li> <li>o</li> <li>o</li> <li>oooooooooooooo</li> </ul> |
Контакт 3
В Pin 3 была политика безопасности контента, которая запрещала CSS, но разрешала встроенный JavaScript, поэтому вместо этого я использовал JavaScript для изменения стилей:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<script> document.write(“” + “<ul id=’o’>” + “<li>o</li>” + “<li>oooooooooooooooooooooo</li>” + “<li>o</li><li>o</li><li>o</li><li>o</li>” + “</ul>”); const o = document.getElementById(‘o’); o.style.color = “blue”; o.style.listStyle = “none”; o.style.lineHeight = “0.5”; o.style.letterSpacing = “-4px”; o.style.margin = “0”; o.style.padding = “0”; </script> |
Контакт 4
У контакта 4 не было политики безопасности содержимого, но на стороне клиента была функция sanitizeInput, которая удаляла двойные кавычки, одинарные кавычки, левые и правые угловые скобки. Хитрость здесь заключалась в том, чтобы понять, что эта функция активируется не отправкой формы, а размытие событие. Другими словами, перемещение мыши от поля ввода вызывало размытие событие, очищающее любой ввод. Решение состояло в том, чтобы отправить форму, нажав кнопку Enter клавишу , стараясь не перемещать курсор мыши за пределы поля ввода:
1 2 3 4 5 6 7 8 9 10 11 |
<ul style=“list-style: none; line-height:0.5; letter-spacing: -4px; margin: 0; padding: 0;”> <li>o</li> <li>o</li> <li>oooooooooooooo</li> <li>o</li> <li>o</li> <li>o</li> <li>o</li> <li>o</li> <li style=“color: blue;”>oooooooooooooo</li> </ul> |
Контакт 5
Пин 5 был таким же санитарный ввод функцию и обход вместе с политикой безопасности контента, запрещающей встроенный CSS, но разрешающей встроенный JavaScript:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
<script> document.write(“” + “<ul id=’o’>” + “<li>o</li>” + “<li>o</li>” + “<li class=’red’>oooooooooooooo</li>” + “<li><span class=’red’>o</span></li>” + “<li><span class=’red’>o</span></li>” + “<li><span class=’red’>o</span>” + “<span class=’blue’> ooooooooooo</span></li>” + “<li><span class=’red’>o</span>” + “<span class=’blue’> oo</span></li>” + “<li><span class=’red’>o</span>” + “<span class=’blue’> oo</span></li>” + “<li><span class=’red’>o</span>” + “<span class=’blue’> oo</span></li>” + “<li>o<span class=’blue’> oo</span></li>” + “<li>o<span class=’blue’> B</span></li>” + “</ul>”); const o = document.getElementById(‘o’); o.style.listStyle = “none”; o.style.lineHeight = “0.5”; o.style.letterSpacing = “-4px”; o.style.margin = “0”; o.style.padding = “0”; o.style.fontSize = “xx-large”; const reds = document.getElementsByClassName(“red”); for (let red of reds) { red.style.color = “red”; } const blues = document.getElementsByClassName(“blue”); for (let blue of blues) { blue.style.color = “blue”; } </script> |
Контакт 6
Наконец, Pin 6 не очищал ввод, но использовал более строгую политику безопасности контента, запрещающую как встроенный CSS, так и JavaScript. Мое решение состояло в том, чтобы использовать устаревший HTML для получения нужных мне стилей и использовать таблицу вместо списка:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<table border=“0” frame=“void” rules=“none” cellpadding=“0” cellspacing=“0” width=“100%”> <tr bgcolor=“#00FF00”> <td><font color=“#00FF00” size=“7”>o</font></td> <td><font color=“#00FF00” size=“7”>o</font></td> <td><font color=“#00FF00” size=“7”>o</font></td> <td><font color=“#00FF00” size=“7”>o</font></td> </tr> <tr bgcolor=“red”> <td><font color=“red” size=“5”>o</font></td> <td><font color=“red” size=“5”>o</font></td> <td><font color=“red” size=“5”>o</font></td> <td><font color=“red” size=“5”>o</font></td> </tr> <tr bgcolor=“blue”> <td><font color=“blue” size=“9”>o</font></td> <td><font color=“blue” size=“9”>o</font></td> <td><font color=“blue” size=“9”>o</font></td> <td bgcolor=“red”><font color=“red” size=“9”>o</font></td> </tr> <tr bgcolor=“blue”> <td><font color=“blue” size=“9”>o</font></td> <td><font color=“blue” size=“9”>o</font></td> <td><font color=“blue” size=“9”>o</font></td> <td><font color=“blue” size=“9”>o</font></td> </tr> </table> |
Фонтан Гламтариэля
Фонтан Гламтариэля была возможность потренироваться Атаки XML External Entity (XXE). Выяснить, как определить пользовательскую XML-сущность, определить сущность, которая запрашивает файл с сервера, и добавить эту сущность в качестве полезной нагрузки к HTTP-запросу, было несложно. Сложнее всего было разгадать внутриигровые загадки, чтобы угадать путь к файлам, которые сливает сервер. Вот запрос прорыва, раскрывающий местонахождение золотого кольца:
Я бы предложил два урока, извлеченных из этой задачи. Во-первых, используйте Конвертер типа контента расширение в Отрыжка для преобразования полезных данных JSON в XML. Во-вторых, попробуйте разместить полезную нагрузку XXE в разных тегах — мне потребовалось много времени, чтобы понять, что все, что мне нужно было сделать, это поместить ххх; полезная нагрузка в тип запроса тег вместо imgDrop тег.
На четвертом кольце.
4. Облачное кольцо
Игра за Cloud Ring была новичком в интерфейсе командной строки (CLI) Amazon Web Services (AWS).
Изюминкой этого набора задач было использование трюфель чтобы найти учетные данные AWS в репозитории Git, а затем использовать их для аутентификации пользователя AWS. Злоумышленник, достигший этой позиции, может использовать как я команды для запроса политик, которые применяются к пользователю, и, таким образом, к каким облачным ресурсам можно получить доступ и злоупотреблять ими.
На пятом кольце.
5. Пылающее Кольцо Огня
Наиболее поучительной частью этого набора задач было изучение Деревья Меркла использовать смарт-контракт и попасть в список пресейла на покупку невзаимозаменяемого токена (NFT). Здесь задача заключалась в том, чтобы найти подтверждающие значения, которые, наряду с адресом моего кошелька и корневым значением дерева Меркла, подтвердили мое включение в список предварительной продажи.
После нескольких безуспешных попыток предоставить контрольные значения я понял, что никогда не смогу вычислить контрольные значения для предоставленного корневого значения, потому что не было никакого способа узнать все конечные значения, используемые для его вычисления. Мне нужно было изменить корневое значение, чтобы я мог предоставить действительное дерево Меркла.
. Инструмент профессора QPetabyte, я создал дерево Меркла из двух листьев, состоящих из адреса моего кошелька и адреса для BSRS_nft смарт-контракт, который я нашел с помощью внутриигрового Blockchain Explorer во втором блоке игровой цепочки Ethereum. Инструмент сгенерировал корневое значение этого дерева и значение подтверждения для адреса моего кошелька. Затем я использовал Burp для перехвата запроса к серверу и изменил корневое значение по умолчанию, чтобы я мог отправить действительное дерево Меркла. Вот мой НФТ спорт купил по фиксированной цене 100 KringleCoins:
Уродливый экземпляр на самом деле.
Окончательный
Большое спасибо организаторам SANS Holiday Hack Challenge за то, что они открыли мне новые горизонты и помогли углубить мои знания в области кибербезопасности. Я не только с нетерпением жду челленджа в следующем году, но я даже опробую выпуски этого челленджа 2020 и 2021 годов. И если вы еще не участвовали в этом соревновании, я надеюсь, что эти основные моменты вас заинтересовали.
- SEO-контент и PR-распределение. Получите усиление сегодня.
- Платоблокчейн. Интеллект метавселенной Web3. Расширение знаний. Доступ здесь.
- Источник: https://www.welivesecurity.com/2023/01/09/cracked-it-highlights-kringlecon-5-golden-rings/
- 1
- 10
- 100
- 11
- 202
- 2020
- 2021
- 2022
- 7
- 9
- a
- в состоянии
- О нас
- доступ
- Доступ
- достигнутый
- достижение
- Действие
- добавленный
- дополнительный
- адрес
- После
- Агент
- Все
- Позволяющий
- Несмотря на то, что
- Amazon
- Amazon Web Services
- Веб-службы Amazon (AWS)
- анализ
- анализировать
- анализ
- и
- Применить
- Активы
- атаковать
- попытки
- проверять подлинность
- аватар
- награда
- AWS
- Плохой
- , так как:
- до
- не являетесь
- ЛУЧШЕЕ
- между
- большой
- Заблокировать
- блокчейн
- Синии
- купил
- Филиал
- Ломать
- разразиться
- Разрыв
- прорыв
- строить
- купить
- под названием
- заботится
- Привлекайте
- сертификат
- сертификаты
- вызов
- проблемы
- изменение
- персонаж
- проверка
- клиент
- ближе
- облако
- код
- цвет
- комментарий
- совершать
- Общий
- полный
- комплектующие
- компьютер
- проведение
- Конфигурация
- Свяжитесь
- Соединительный
- Коммутация
- Состоящий из
- Container
- содержит
- содержание
- контракт
- конвертировать
- копирование
- может
- Создайте
- создали
- создает
- Полномочия
- криптовалюта
- Криптовалютный кошелек
- CSS
- любопытный
- изготовленный на заказ
- Информационная безопасность
- данным
- Время
- Декабрь
- углублять
- По умолчанию
- Защитники
- определяющий
- обнаруженный
- застройщиков
- устройство
- DID
- Умереть
- различный
- трудный
- обнаружить
- DNS
- Docker
- документ
- Двери
- двойной
- заработанный
- легко
- Конечная точка
- Защита конечных точек
- организация
- запись
- Окружающая среда
- Эфириума
- Ethereum blockchain
- Даже
- События
- События
- со временем
- Выполняет
- выполнение
- Упражнение
- Выход
- опыт
- Эксплуатировать
- исследователь
- расширение
- и, что лучший способ
- несколько
- поле
- фигура
- Файл
- Файлы
- окончательный
- Найдите
- обнаружение
- First
- фиксированный
- фиксированной
- поток
- фольга
- после
- набег
- форма
- формат
- вперед
- найденный
- фонтан
- Четвертый
- от
- полный
- fun
- функция
- функциональная
- далее
- игра
- Игры
- генерируется
- получить
- GIF
- идти
- GitHub
- данный
- Золото
- Golden
- хорошо
- предоставление
- мотыга
- взлом
- Жесткий
- помощь
- здесь
- Спрятать
- Выделите
- основной момент
- подсказки
- история
- Выходные
- Главная
- надежды
- кашель
- Как
- How To
- HTML
- HTTPS
- идентифицированный
- in
- В других
- в игре
- В том числе
- включение
- информация
- вход
- понимание
- вместо
- интерес
- интересный
- Интерфейс
- выпустили
- IP
- IP-адрес
- IT
- JavaScript
- JSON
- Основные
- ключи
- Kicks
- Знать
- знания
- Фамилия
- вести
- утечка
- Утечки
- узнали
- изучение
- Уроки
- Уроки, извлеченные
- письмо
- уровень
- Li
- линия
- линий
- Список
- Включенный в список
- Списки
- жить
- грузы
- расположенный
- расположение
- Длинное
- много времени
- посмотреть
- искать
- ВЗГЛЯДЫ
- поиск
- серия
- сделанный
- Главная
- вредоносных программ
- Маржа
- согласование
- Вопрос
- макс-ширина
- смысл
- Соответствует
- Память
- Сообщения
- метод
- Microsoft
- против
- монитор
- БОЛЕЕ
- самых
- двигаться
- перемещение
- Mozilla
- имя
- карликовый
- родной
- Откройте
- сеть
- сеть
- сетевой трафик
- Новые
- следующий
- NFT
- без взаимозаменяемыми
- не заменимый токен
- север
- предлагают
- ONE
- открытый
- операционный
- операционная система
- Возможность
- заказ
- организаторы
- Другие контрактные услуги
- внешнюю
- владелец
- часть
- участие
- участвующий
- путь
- PHP
- штифты
- труба
- трубопровод
- Часть
- размещение
- план
- Платон
- Платон Интеллектуальные данные
- ПлатонДанные
- сборах
- политика
- должность
- возможное
- PowerShell
- практика
- предпродажная
- представлены
- предыдущий
- цена
- тюрьма
- привилегии
- зонд
- Проблема
- Прогресс
- видный
- доказательство
- доказанный
- обеспечивать
- при условии
- приводит
- покупка
- Push
- толкнул
- САЙТ
- быстро
- радар
- ранжирование
- реализовать
- реализованный
- Получать
- получает
- рецепт
- запись
- Recover
- Red
- удаленные
- повторный
- хранилище
- запросить
- Запросы
- обязательный
- возвращают
- Показали
- выявление
- обратный
- Ездить
- кольцо
- корень
- условиями,
- Run
- бегун
- Бег
- скрипты
- Поиск
- Во-вторых
- секунды
- Secret
- безопасность
- Серии
- служить
- Услуги
- набор
- Поделиться
- Оболочка
- должен
- сторона
- просто
- просто
- одинарной
- ШЕСТЬ
- умный
- умный контракт
- So
- мягкая
- Решение
- Решение
- удалось
- Источник
- исходный код
- Space
- стоит
- оставаться
- Шаги
- По-прежнему
- хранить
- строже
- стиль
- отправить
- успех
- подозрительный
- включается
- синтаксис
- система
- ТАБЛИЦЫ
- TAG
- с
- TD
- технологии
- тестXNUMX
- Тестирование
- Ассоциация
- Источник
- В третьих
- мысль
- три
- Через
- время
- в
- знак
- слишком
- инструментом
- инструменты
- топ
- трек
- трафик
- Сделки
- срабатывает
- под
- обновление
- URL
- использование
- Информация о пользователе
- Проверка
- ценностное
- Наши ценности
- с помощью
- Видео
- видеоигра
- Кошелек
- способы
- Web
- веб-сервер
- веб-сервисы
- Вебсайт
- который
- в то время как
- широкий
- будете
- без
- WordPress
- слова
- Работа
- работавший
- бы
- записывать
- письмо
- XML
- год
- Ты
- ВАШЕ
- себя
- зефирнет
- ZIP