Private_problem. Разбираем сложное задание на реверс и форензику с CTFZone 2018 - «Новости»
В ChatGPT могут появиться зашифрованные чаты - «Новости мира Интернет»
В ChatGPT могут появиться зашифрованные чаты - «Новости мира Интернет»
Adobe выпустила платформу для работы с документами Acrobat Studio на базе ИИ - «Новости мира Интернет»
Adobe выпустила платформу для работы с документами Acrobat Studio на базе ИИ - «Новости мира Интернет»
DeepSeek представил обновленную модель V3.1 с расширенной «памятью» - «Новости мира Интернет»
DeepSeek представил обновленную модель V3.1 с расширенной «памятью» - «Новости мира Интернет»
Sharge представила Grip – пауэрбанк-рукоятку для смартфонов - «Новости мира Интернет»
Sharge представила Grip – пауэрбанк-рукоятку для смартфонов - «Новости мира Интернет»
Что нового показали на презентации Made by Google 2025? - «Новости мира Интернет»
Что нового показали на презентации Made by Google 2025? - «Новости мира Интернет»
Новые возможности автоматического определителя номера для бизнеса от Яндекса — «Блог для вебмастеров»
Новые возможности автоматического определителя номера для бизнеса от Яндекса — «Блог для вебмастеров»
GeForce RTX 5080 теперь доступна за $20 в месяц — облачный игровой сервис Nvidia GeForce Now обновил инфраструктуру - «Новости сети»
GeForce RTX 5080 теперь доступна за $20 в месяц — облачный игровой сервис Nvidia GeForce Now обновил инфраструктуру - «Новости сети»
«Попали в самую точку!»: музыкальная тема главного меню Heroes of Might & Magic: Olden Era покорила фанатов - «Новости сети»
«Попали в самую точку!»: музыкальная тема главного меню Heroes of Might & Magic: Olden Era покорила фанатов - «Новости сети»
Исследование Google показало, что почти 90 % разработчиков видеоигр применяют в производстве генеративный ИИ - «Новости сети»
Исследование Google показало, что почти 90 % разработчиков видеоигр применяют в производстве генеративный ИИ - «Новости сети»
США почти наверняка проиграют Китаю новую лунную гонку — последствия будут колоссальные - «Новости сети»
США почти наверняка проиграют Китаю новую лунную гонку — последствия будут колоссальные - «Новости сети»
Новости мира Интернет » Новости » Private_problem. Разбираем сложное задание на реверс и форензику с CTFZone 2018 - «Новости»

Содержание статьи

  • Подготовка к анализу файла server.dmp
  • Восстановление логики работы процесса server.exe
  • Поиск данных для восстановления содержимого файла flag.txt
  • Поиск секрета Диффи — Хеллмана
  • Расшифровка флага
Закончился онлайновый этап ежегодных соревнований CTFZone, которые проходят уже третий год подряд. Лучшие десять команд отборочного тура приглашены на финал CTFZone 2018, который состоится на конференции OFFZONE в ноябре. По традиции команды ждет ожесточенная битва в формате Attack/Defense.

Здесь же мы разберем одно из наиболее сложных заданий онлайнового этапа — задание на реверс и форензику под названием private_problem. Этот таск решила только одна команда из России — LC?BC.


Постановка задачи


В качестве исходных данных предоставляется файл server.dmp. Необходимо найти содержимое файла flag.txt.


Подготовка к анализу файла server.dmp


Исходный файл имеет формат MDMP. Как правило, файлы такого формата создаются операционной системой при возникновении определенных сбоев. Кроме того, аналогичный файл можно создать самостоятельно. Например, при отладке процесса в Visual Studio или при помощи специализированных утилит (см. скриншот).



Создание файла MDMP при помощи утилиты Process Explorer

Для статического анализа MDMP-файла откроем его в IDA Pro.



Состояние процесса в момент снятия дампа


Окно с модулями, загруженными в память в момент снятия дампа

На втором скриншоте видно, что дамп был сделан в момент выполнения инструкции внутри процесса server.exe. Чтобы проанализировать память процесса server.exe, необходимо найти базовый адрес текущей функции и определить ее в IDA Pro.



Текущая функция до определения


Состояние процесса в момент снятия дампа после определения и декомпиляции текущей функции

Аналогичным образом определяем все вложенные функции, которые не определились автоматически.


Анализ памяти процесса server.exe


Чтобы понять, как процесс server.exe связан с файлом flag.txt, восстановим логику его работы.


Восстановление логики работы процесса server.exe


Первым делом процесс server.exe инициализирует сетевое взаимодействие с клиентом. Псевдокод функции инициализации после переименования стандартных имен и создания необходимых структур данных изображен ниже.



Псевдокод функции инициализации сетевого взаимодействия с клиентом

После успешной инициализации сетевого взаимодействия клиенту отправляется строка "Tell me your secretsn".



Первичное взаимодействие с клиентом

Затем на стороне клиента и на стороне сервера генерируется пара ключей Диффи — Хеллмана с последующим экспортом публичного ключа в структуру вида PUBLICKEYBLOB.


Рассмотрим функцию генерации ключей.



Генерация ключей шифрования на стороне сервера

В данном случае протокол Диффи — Хеллмана реализован согласно документации Microsoft. В качестве открытых параметров Диффи — Хеллмана на стороне клиента и на стороне сервера используются стандартные значения модуля и генератора, указанные в источнике. Секретный параметр Диффи — Хеллмана генерируется случайным образом при вызове функции CryptSetKeyParam с аргументом KP_X.


Псевдокод функции экспорта публичного ключа изображен ниже.



Псевдокод функции экспорта публичного ключа Диффи — Хеллмана

После генерации и экспорта ключей Диффи — Хеллмана сервер и клиент обмениваются публичными ключами, а также на обеих сторонах генерируется общий сессионный ключ.


Далее представлена реализация следующих действий:


  • получение блоба публичного ключа Диффи — Хеллмана, сгенерированного на клиенте, и импорт общего сессионного ключа;

  • отправка блоба публичного ключа Диффи — Хеллмана, сгенерированного локально.


Обмен публичными ключами между клиентом и сервером


Импорт сессионного ключа шифрования

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


После согласования сессионного ключа шифрования на стороне сервера происходит следующее (см. рисунок ниже):


  1. Прием данных от клиента:
    • размер буфера с данными (4 байта);

    • контрольная сумма CRC32 от буфера с данными (4 байта);

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


  2. Проверка контрольной суммы.

  3. Расшифровка данных общим сессионным ключом, сгенерированным на стороне сервера при помощи публичного ключа Диффи — Хеллмана от клиента.

  4. Запись расшифрованных данных в файл с названием flag.txt.


Прием, расшифровка и запись данных в файл flag.txt

Итог анализа


Таким образом, server.exe — это часть клиент-серверного приложения, где реализованы следующие функции:


  • инициализация соединения с клиентом;

  • генерация пары ключей Диффи — Хеллмана;

  • экспорт публичного ключа Диффи — Хеллмана;

  • получение блоба публичного ключа Диффи — Хеллмана, сгенерированного на стороне клиента;

  • импорт общего сессионного ключа RC4 для расшифровки данных со стороны клиента;

  • отправка клиенту блоба публичного ключа Диффи — Хеллмана, сгенерированного локально;

  • получение данных со стороны клиента;

  • проверка, расшифровка и запись данных в файл flag.txt.

Стало понятно, какие именно данные пишутся в файл flag.txt. Проблема в том, что в дампе процесса server.exe эти данные могли остаться только в зашифрованном виде, так как перед снятием дампа буфер с расшифрованными данными умышленно был перезаписан нулями.



Перезапись буфера с расшифрованными данными
Источник новостиgoogle.com
Цитирование статьи, картинки - фото скриншот - Rambler News Service.
Иллюстрация к статье - Яндекс. Картинки.
Есть вопросы. Напишите нам.
Общие правила  поведения на сайте.

Содержание статьи Подготовка к анализу файла server.dmp Восстановление логики работы процесса server.exe Поиск данных для восстановления содержимого файла flag.txt Поиск секрета Диффи — Хеллмана Расшифровка флага Закончился онлайновый этап ежегодных соревнований CTFZone, которые проходят уже третий год подряд. Лучшие десять команд отборочного тура приглашены на финал CTFZone 2018, который состоится на конференции OFFZONE в ноябре. По традиции команды ждет ожесточенная битва в формате Attack/Defense. Здесь же мы разберем одно из наиболее сложных заданий онлайнового этапа — задание на реверс и форензику под названием private_problem. Этот таск решила только одна команда из России — LC?BC. Постановка задачи В качестве исходных данных предоставляется файл server.dmp. Необходимо найти содержимое файла flag.txt. Подготовка к анализу файла server.dmp Исходный файл имеет формат MDMP. Как правило, файлы такого формата создаются операционной системой при возникновении определенных сбоев. Кроме того, аналогичный файл можно создать самостоятельно. Например, при отладке процесса в Visual Studio или при помощи специализированных утилит (см. скриншот). Создание файла MDMP при помощи утилиты Process Explorer Для статического анализа MDMP-файла откроем его в IDA Pro. Состояние процесса в момент снятия дампа Окно с модулями, загруженными в память в момент снятия дампа На втором скриншоте видно, что дамп был сделан в момент выполнения инструкции внутри процесса server.exe. Чтобы проанализировать память процесса server.exe, необходимо найти базовый адрес текущей функции и определить ее в IDA Pro. Текущая функция до определения Состояние процесса в момент снятия дампа после определения и декомпиляции текущей функции Аналогичным образом определяем все вложенные функции, которые не определились автоматически. Анализ памяти процесса server.exe Чтобы понять, как процесс server.exe связан с файлом flag.txt, восстановим логику его работы. Восстановление логики работы процесса server.exe Первым делом процесс server.exe инициализирует сетевое взаимодействие с клиентом. Псевдокод функции инициализации после переименования стандартных имен и создания необходимых структур данных изображен ниже. Псевдокод функции инициализации сетевого взаимодействия с клиентом После успешной инициализации сетевого взаимодействия клиенту отправляется строка

Смотрите также

А что там на главной? )))



Комментарии )))