Private_problem. Разбираем сложное задание на реверс и форензику с CTFZone 2018 - «Новости»
«Эпический» сериал Netflix по Assassin’s Creed впервые за несколько лет подал признаки жизни - «Новости сети»
«Эпический» сериал Netflix по Assassin’s Creed впервые за несколько лет подал признаки жизни - «Новости сети»
«Хуже моего самого страшного кошмара»: утечка геймплея с тестирования новой The Sims ужаснула фанатов - «Новости сети»
«Хуже моего самого страшного кошмара»: утечка геймплея с тестирования новой The Sims ужаснула фанатов - «Новости сети»
Самые полные издания Borderlands 3 и Diablo III добавят в Game Pass, а лучшая игра 2024 года по версии 3DNews подписку скоро покинет - «Новости сети»
Самые полные издания Borderlands 3 и Diablo III добавят в Game Pass, а лучшая игра 2024 года по версии 3DNews подписку скоро покинет - «Новости сети»
Amazon включилась в борьбу за американский бизнес TikTok - «Новости сети»
Amazon включилась в борьбу за американский бизнес TikTok - «Новости сети»
«Яндекс» представил «Нейроэксперта» — ИИ, который соберёт базу знаний по ссылкам и файлам пользователя - «Новости сети»
«Яндекс» представил «Нейроэксперта» — ИИ, который соберёт базу знаний по ссылкам и файлам пользователя - «Новости сети»
ZA/UM отреагировала на утечку «одиночной кооперативной игры» Locust City во вселенной Disco Elysium - «Новости сети»
ZA/UM отреагировала на утечку «одиночной кооперативной игры» Locust City во вселенной Disco Elysium - «Новости сети»
GTA V вернётся в Game Pass, причём совсем скоро — впервые игра будет доступна в PC Game Pass - «Новости сети»
GTA V вернётся в Game Pass, причём совсем скоро — впервые игра будет доступна в PC Game Pass - «Новости сети»
Обзор системы резервного копирования и восстановления данных «Кибер Бэкап Малый Бизнес» - «Новости сети»
Обзор системы резервного копирования и восстановления данных «Кибер Бэкап Малый Бизнес» - «Новости сети»
Nintendo создала гибридный эмулятор Switch, но работать он будет только на Switch 2 - «Новости сети»
Nintendo создала гибридный эмулятор Switch, но работать он будет только на Switch 2 - «Новости сети»
Лавкрафтианский хоррор Stygian: Outer Gods готовится к старту открытой «беты» — новый геймплейный трейлер - «Новости сети»
Лавкрафтианский хоррор Stygian: Outer Gods готовится к старту открытой «беты» — новый геймплейный трейлер - «Новости сети»
Новости мира Интернет » Новости » 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 инициализирует сетевое взаимодействие с клиентом. Псевдокод функции инициализации после переименования стандартных имен и создания необходимых структур данных изображен ниже. Псевдокод функции инициализации сетевого взаимодействия с клиентом После успешной инициализации сетевого взаимодействия клиенту отправляется строка

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

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



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