• XSS.stack #1 – первый литературный журнал от юзеров форума

XSS PWN-Day - БИТВА ЗА РЕСПЕКТ 0x01 | Атакуем ядро Windows

varwar

El Diff
Забанен
Регистрация
12.11.2020
Сообщения
1 383
Решения
5
Реакции
1 537
Пожалуйста, обратите внимание, что пользователь заблокирован
В нашем разделе нередко появляются вопросы "Как вкатиться в ресерч?", "Как писать эксплойты". Этот мини-конкурс создан специально для Вас.

Требования для участников
  1. Базовые знания С, ассемблера x64 архитектуры.
  2. Базовые навыки работы с ядерным отладчиком WinDbg.
  3. Уверенный пользователь IDA Pro либо Ghidra, Binary Ninja и т.д.
  4. Базовые навыки программирования под Windows.
  5. Уязвимая виртуальная машина c версией Windows 10/11.
Задача
В десятидневный срок написать PoC (Proof Of Concept) для уязвимости CVE-2024-21338
В зависимости от уровня участника эта задача может быть поделена на несколько подзадач:

Задача #1.
Написать PoC, демонстрирующий BSOD.

Задача #2.
Написать PoC, демонстрирующий получение примитива произвольного чтения/записи ядерной памяти без обхода kCFG (c выключенным HVCI).

Задача #3.
Написать PoC, демонстрирующий получение примитива произвольного чтения/записи ядерной памяти с обходом kCFG (с включенным HVCI).

Порядок обсуждения, вопросы, подсказки
В теме конкурса разрешено обсуждать детали уязвимости и непосредственно разработку кода. И все же желательно стремиться выполнить задачу самостоятельно. Если вы глубоко застряли или тотально затупили, то можете адресовать вопрос мне в скрытом комментарии и я направлю вас на путь истинный. Хинты для всех будут публиковаться ежедневно в 19:00.

Призы
За демонстрацию решения первой задачи участник получит - Premium на год.
За демонстрацию решения второй задачи участник получит - Premium на год.
За демонстрацию решения третьей задачи участник будет награжден званием "Эксперт".
Призы действуют при условии, если не всплывет непредвиденная ситуация, о которой будет написано в пункте ниже.

Плагиат
Под плагиатом я подразумеваю демонстрацию кода чужой разработки. Например, если выяснится, что код PoC вы целиком откуда-то украли, то будете репрессированы с позором. Заимствование каких-то отдельных кусков кода не порицается.

Непредвиденные ситуации
Если код PoC появится до завершения конкурса в паблике, то конкурс считается завершенным. Поэтому в ваших же интересах не тянуть с выполнением задачи.

Без форс-мажоров конкурс продолжается с 25.03.24 по 03.04.24 включительно.
Подведение итогов и объявление победителей начнется с 04.04.24.


Порядок сдачи
По истечении сроков проведения конкурса или если вы справились с задачей досрочно, то необходимо предоставить в ЛС
  1. Краткое описание алгоритма эксплуатации по пунктам. В дебри лезть не нужно.
  2. Исходный код PoC с указанием на какой версии PoC тестировался.
  3. Видео, gif по желанию, но по коду и так все будет понятно

Напутствие
С любой из трех задач справятся немногие, но это и есть ресерч. Всем удачи!



 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
Не успел отгреметь конкурс проектов XSSware !!! Как для вас был сделан еще один конкурс.

Всем заинтересованным WELCOME to XSS PWN-Day 0x01!!! БИТВА ЗА РЕСПЕКТ НАЧАЛАСЬ !!!
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Пожалуйста, обратите внимание, что пользователь заблокирован
Cэмпл будет?)
Начинай с патч диффинга, хотя в хинте уже подсказки есть...
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Начинай с патч диффинга, хотя в хинте уже подсказки есть...
can i give this a shot? im starting my environment to test
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Пожалуйста, обратите внимание, что пользователь заблокирован
BSOD = changing 0x41 to buffer = b'\x00\x00\x00\x00' # Incorrect or unexpected data intended to trigger a fault

it depends on OS on the rest.
Please show to us the decompiled code where the input buffer size is handled? I will answer you that your input buffer incorrect and you will not even reach the vulnerable function regardless the other things. Please don't confuse the others.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
UPD: Удалил код выше, PoC's скидывайте в пм varwar


Please show to us the decompiled code where the input buffer size is handled? I will answer you that your input buffer incorrect and you will not even reach the vulnerable function regardless the other things. Please don't confuse the others.
А не сильная ли это подсказка будет? Пусть ждут следующего хинта.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
А не сильная ли это подсказка будет? Пусть ждут следующего хинта.
Скрытый контент для пользователей: .
 
После конкурса код и райтап выложу.
Я имел ввиду сэмпл драйвера, ну и ладно, нашел уже)
 
Пожалуйста, обратите внимание, что пользователь заблокирован
реальна реализация на повершелл?
Реальна, тут примеры есть на powershell --> Введение в разработку эксплоитов под Windows (fuzzysecurity.com)

Часть 10: Эксплуатация Ядра -> Переполнение стека
Часть 11: Эксплуатация Ядра -> Write-What-Where
Часть 12: Эксплуатация Ядра -> Разыменование нулевого указателя
Часть 13: Эксплуатация Ядра -> Неинициализированная стековая переменная
Часть 14: Эксплуатация Ядра -> Неинициализированная стековая переменная
Часть 15: Эксплуатация Ядра -> Use-After-Free
Часть 16: Эксплуатация Ядра -> Переполнение пула
Часть 17: Эксплуатация Ядра -> GDI Bitmap Abuse (Win7-10 32/64bit)
Часть 18: Эксплуатация Ядра -> RS2 Bitmap Necromancy
Часть 19: Эксплуатация Ядра -> Логическая ошибка в драйвере rzpnk.sys

Оригинал тут Windows Exploit Development Tutorial Series
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Прочитав статью из первого хинта, вы должны были понять, что уязвимость находится в драйвере appid.sys, а имя устройства AppID.
С помощью IDA или ее аналогов вы должны были подтвердить наличие уязвимости в драйвере и предварительно разобрать несложный входящий буфер для ioctl-обработчика AipSmartHashImageFile при помощи статического/динамического анализа.
Из той же статьи ясно, что вы не можете сразу получить описатель для устройства AppID из-за нехватки прав и по причине того, что сервис AppIDSvc не запущен по дефолту.

Сейчас вы должны написать две функции - запустить сервис AppIDSvc и сделать имперсонацию потока для текущего процесса под любой из сервисов, запущенных с правами NT AUTHORITY\LOCAL_SERVICE. Добавлю к имеющейся статье, что вы для этой задачи также можете использовать функцию NtImpersonateThread. Поговаривают, что еще могут потребоваться права SeDebugPrivilege.

На текущий момент у нас уже есть один Эксперт, выполнивший третью задачу. Напоминаю, что в теме конкурса допускается обсуждение, но без явных подсказок.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
По какой причине при попытке вызова NtImpersonateThread может падать нтстатус ACCESS_DENIDED?
C:
Примерно так длолжен выглядеть подход к имперсонации. В данном случае интерфейс GetFirstThreadID реализует поиск TID первого потока для процесса сервиса с правами NT AUTHORITY/LOCAL SERVICE. В остальном все должно работать корректно. Надеюсь, ты это из под админа запускаешь все изначально.

...
tid = GetFirstThreadID(dwLocalSvcId);
success = EnableDebugPrivilege();
...
local_service_thread = OpenThread(THREAD_DIRECT_IMPERSONATION, FALSE, tid);
...
sqos.Length = sizeof(sqos);
sqos.ImpersonationLevel = SecurityImpersonation;
NTSTATUS  status = NtImpersonateThread(GetCurrentThread(), local_service_thread, &sqos);
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
По какой причине при попытке вызова NtImpersonateThread может падать нтстатус ACCESS_DENIDED?
Я использовал информацию из этой статьи. https://xssforum7mmh3n56inuf2h73hvhnzobi7h2ytb3gvklrfqm7ut3xdnyd.onion/threads/56528/

Еще маленький нюанс для всех. Если вы пытаетесь получить TID потока непосредственно для процесса svchost.exe сервиса AppIDSvc и получаете 5ую ошибку, то это из-за того, что процесс для AppIDSvc запущен как PPL. Нужно выбрать какой-нибудь другой сервис для имперсонации.
 
Последнее редактирование:


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх