Violent_Maid – Telegram
Violent_Maid
1.42K subscribers
114 photos
6 videos
24 files
120 links
Occult research project.
Download Telegram
Violent_Maid
Даров! 😳 На днях выловил одну замечательную штуку — DXE драйвер, что регистрирует протокол для обновления прошивки Intel ME. Мне понравилась эта находка, но пока что исключительно в статике. К сожалению, на данный момент не выловил прямое его использование…
А теперь поговорим о PEIM для обновления Intel ME 😌. Мы немного перешли вниз по чейну загрузки: в PEI фазу, где инициализирован минимум и ещё не произведён переход в DXE фазу. Ниже только SEC (я опущу IBG и PSB здесь, это отдельная тема для разговоров)

PEIM обычно сопровождаются регистрацией или нотификацией определённых дескрипторов (структур). Есть два вида: дескрипторы для нотификаторов и для описателей доступных сервисов для PEI Foundation. Наш PEIM только оповещает определённый PPI (PEIM-to-PEIM Interface). Оба этих дескрипторов имеют одинаковый вид, но я приведу только один, нужный нам:
struct _EFI_PEI_NOTIFY_DESCRIPTOR {
UINTN Flags;
EFI_GUID *Guid;
EFI_PEIM_NOTIFY_ENTRY_POINT Notify;
};

Соответственно, наш PEIM именно что уведомляет платформу о доступном PPI, это видно на первом скрине 😏. Если смотреть на raw вид дескриптора мы имеем следующий вид. Стоит отметить, что дескриптора тут два, но используется конкретно этим PEIM только один (значит, есть в чейне ещё один промежуточный драйвер 😶). Они имеют одинаковые флаги: 80000020 — в нашем случае это означает, что мы смотрим на коллбеки.

Перейдём к коллбекам 😁. Коллбек, который уведомляет наш PEIM по сути просто получает режим загрузки платформы (скрин 3). Этот коллбек служит для верификации режима загрузки (например, чтоб мы случайно не обновились в S3 или S4 😁) уже другими PEIM. Не забываем про второй коллбек, он выглядит намного интереснее (скрин 4) 😏. В первую очередь он получает список всех доступных HOB (Hand-off Block) в платформе на текущий момент, затем, из текущего HOB извлекает структуру, описывающую доступные разделы в прошивке (это, по идее, EFI_FIRMWARE_VOLUME_HEADER, если текущий HOB ею является 😶). Когда структура получена, функция начинает искать определённый раздел с GUID 9F8B1DEF-B62B-45F3-8282-BFD7EA19801B (вы можете похлопать гениальности иды, которая очень плохо жрёт терсы (TE Image)), предварительно валидировав сигнатуру _FVH. Судя по всему, тот раздел используется платформой для содержания образа ME для обновления, наверное 😶. Я не уверен, что этот GUID одинаков в каждой прошивке, но он действительно существует и имеет в себе несколько полей (скрины 5 и 6). После того, как проверка завершилась, платформа обращается к неизвестному мне регистру 0x1800 и 0x1804, а затем пытается ресетнуть платформу через RST_CNT регистр. Сначала ресетает процессор, а затем ресетает что-то неизвестное никому (биты с 4 по 6 зарезервированы, судя по документации) 😳.

Упомяну ещё один неиспользуемый функционал нашего PEIM. Эта штука умеет выходить в длинный режим (скрин 7) 😏😏😏. Она изменяет DTB на какой-то свой, полученный извне, модифицирует CR4 регистр. Что интересно, обычно достаточно только PAE бита, однако, конкретно здесь присутствуют ещё биты для SSE — весьма нестандартно и непонятно зачем. Очевидно, что она ещё сетает бит LME в MSR_EFER и PG бит в CR0, сетапит новый стек и вызывает нужную функцию с новым стеком 😯. Для справки: выход в длинный режим платформой используется только в трёх случаях (минимум): передача управления DXE Core, выход из S3 и работа с капсульными обновлениями. Мы относимся к последнему!

DXE драйвер, который мы вытащили ранее можно найти по GUID A11585B7-8FA2-4F1C-AA6F-DD6309469613. PEIM можно найти по GUID FD27652D-F758-4EFC-B1A9-283EFE51F4E9. Дерзайте 😏😏😏
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
💅6🤡2
Даров!

Не секрет для многих — я люблю обскурный и не сильно понятный стафф, это очень весело ковырять что-либо с недостатком инфы. Пока я отвлёкся от расковыра ME (спасибо Горячему, который помогает мне временами) и замашек на PSP — хочу поведать про одну забавную штуку, которая вроде и известная, а вроде и не очень, она весьма всратая и малоюзабельна, но чё бы и нет (я и так хотел её затронуть как-то).

Как известно — Микромягкие любят запускать свои руки во всё что угодно, EFI не исключение, собсна как и ACPI, о котором и пойдёт речь. В ACPI есть такое понятие, как ACPI таблицы, которые содержат в себе различную инфу для конфигурации и настройки платформы, например, там можно найти так мною любимый порт для SW SMI, настройки APIC и многое другое. Ближе к делу: Микромягкие имеют в спецификации как минимум три своих ACPI таблицы — WSMT, WPBT и iBFT. Мы остановимся на первых двух, так как iBFT по сути относится к iSCSI.

Первая расшифровывается как Windows SMM Security Mitigations Table, она появилась с таким больным понятием как VBS и по сути является "описателем" для "защиты" платформы от эксплойтов, нацеленных на SMM (и TrustZone, да, его тоже эта таблица затрагивает). По сути эта таблица представляет из себя битовое поле с тремя параметрами (битами, первый скрин):
1. Фиксированные адреса для буферов для коммуникации. Это включает в себя буферы для протокола EFI_MM_COMMUNICATION_PROTOCOL (тык, + его вторая версия), ACPINVS, различные регистры с указателями на буферы и т.д.
2. Защита "вложенных" указателей — здесь подразумеваются указатели внутри SMM-хендлеров, соответственно, этот бит должен быть выставлен вместе с первым.
3. Защита различных критических ресурсов — он запрещает изменения софтварью таких компонентов, как IOMMU, PCI, FACS, специфичные объекты ACPI и др. после достижения ExitBootServices.
Звучит круто.. Только оно нигде не используется (т.е существует чисто номинально), у всех материнок с которыми я сталкивался — биты равны нулю. Я также нигде не видел, чтоб эти биты где-то кем-то юзались.
💅8🤡2
Но мы пришли не за WSMT, а за WPBT! WPBT — это Windows Platform Binary Table. Из названия можно примерно предположить что она делает, но мы будем максимально прямолинейными — она позволяет вам в физическом адресном пространстве ACPI (точнее — EfiAcpiReclaimMemory) хранить PE бинарь, которое загрузит ядро винды во время инициализации Session Manager. Для регистрации таблицы нам соответственно, нужно для начала зарегистрировать данную таблицу. Логично, что делается из UEFI, но для начала нам бы узнать её вид:

typedef struct _WPBT_VIEW {
EFI_ACPI_DESCRIPTION_HEADER Header;
UINT32 HandoffMemSize;
UINT64 HandoffMemLocation;
UINT8 ContentLayout;
UINT8 ContentType;
UINT16 Argc;
UINT64 Argv[1];
} WPBT_VIEW, *PWPBT_VIEW;


Поле Header это стандартное поле для всех ACPI таблиц, содержащее в себе сигнатуру, ревизию, OEM и т.д. Поля HandoffMemSize и HandoffMemLocation относятся к нашему бинарю, которое загрузит Session Manager! Поля ContentLayout и ContentType - константные поля и по спецификации должны всегда равнятся 1. Последние два существуют для шелла. Соответственно, для того, чтоб зарегистрировать таблицу, надо притащить с собой PE бинарь, выделить под него память и записать его туда, затем найти EFI_ACPI_TABLE_PROTOCOL (тык) и вызвать сервис InstallAcpiTable (тык). Позже, когда дело дойдёт до инита Session Manager, он вызовет функу SmpGetPlatformBinary. Внутри происходит следующее: SmpGetPlatformBinary вызывает NtQuerySystemInformation с SYSTEM_INFORMATION_CLASS равным 133. Этот ID вызовет ExpGetSystemPlatformBinary, который сканит физическую память с ACPI таблицами в поиске WPBT и пытается замаппить её содержимое. Когда инфа от WPBT получена, создаётся файл под именем wppbin.exe по пути %systemroot%\System32\wppbin.exe самим Session Manager, а немного попозже запускается соответствующий процесс. Цепочку фунок и их содержимого можно увидеть на скринах 1 и 2.

Касательно проблем абьюза WPBT, их достаточно.
1. Требуется цифровая подпись, что уже порой не так просто заполучить, особенно, если WPBT используется именно для закрепа. Конечно, мы можем заюзать ликнутые серты.
2. Бинарь может быть только приложухой, т.е условной DLL он быть не может.
3. Бинарь может использовать только функи из ntdll, придётся реализовать множество вещей самому.
4. Не уверен, что вам поможет code execution в SMM, если вы атакующий, то есть, вам придётся записывать бинарь с алгосом регистрации WPBT в образ на SPI (ничего конечно не мешает снять SPI Protection, при соответствующих примитивах) и триггерить ресет, а только потом уже DXE Dispatcher сможет зарегать вашу табличку. Во время написания своего смешного SMM драйвера я столкнулся с некоторыми проблемами при работе с ACPI — некоторые сервисы юзают системную таблицу, которая терминируется после вызова ExitBootServices, из-за чего платформа искренне не выкупает и процессор генерит #PF.

Собственно, вот такой интересный метод перзиста в теории может быть, но на практике он весьма трудно реализуем. Зато это можно где-то заюзать в своих ресёрчах.

P.S: Все описания таблиц можно найти самостоятельно. Микромягкие почему-то распространяют их как отдельные документы, поэтому не стал вставлять ссылки на них.
💅12🤡2😭1
Даров, pirozhki!
Последняя пятничка 24 года — самое время подвести некоторые свои итоги и поделиться планами на ближайшее будущее.

Давайте с итогов:
1. ЯМы сделали внеочередной SMM драйвер для манипуляции с памятью платформы (надо называть бекдоры красиво), при этом параллельно запилив ещё прокладки в виде DXE и R0 драйверов, которые можно преобразовать под ваши нужды. Считайте, что совершенно случайно получилась гигамашина, затрагивающая так или иначе почти все возможные уровни абстрагирования (для красоты ещё не хватает PEIM).
Этот проект дался мне весьма трудно, я работал над ним практически без выходных с апреля по август, параллельно готовясь к защите дипломной работы. Данная приколюха на текущий момент является для меня одной из самых больших и значимых, что я когда-либо делал. Я как горжусь ей, так и искренне ненавижу по ряду личных причин; но, всё же гордость за эту штуковину преобладает, она помогла мне во многом по итогу (а ещё её заметил автор HyperDbg, приятно).
2. Я в Позитиве!!!!!!!!!!11111111111111111
Вчерашнего студента случайно находят ребята из PT, этот уженестудент с дикой тряской сидит на собеседованиях, с такой же дикой тряской делает тестовое и совершенно не ожидает положительного исхода, но получает оффер и не верит своим глазам. Я, так-то, до сих пор отойти не могу. Мне очень приятно попасть сразу на позицию, на которую планировал прорываться в лучшем случае через пару лет. Буду стараться радовать всех деталями о уязвимостях и зиродеечками 😅.
Также весьма приятно понимать, что тебя узнаЮт по твоим наработкам, я счастлив что кому-то интересны такие специфичные темы. Я давно не ощущал себя так, надо признаться.
3. Как вы могли уже догадаться — был пересмотрен немножечко концепт канала. Теперь редко, но зато своё, по-моему это лучше, чем коллекционировать интернет (хоть иногда и нужно).

Что там про будущее? Не очень много, но есть некоторые идеи!
1. У меня в планах провести пару ресёрчей (один точно будет, а второй потребует времени, и, возможно, железа), я планирую с ними поездить немного. Не могу говорить, что будет конкретно, но будет весело, правда!
2. В голове с августа витает идея попробовать побаловаться с режимом энергопотребления S3. У меня уже есть некоторые наработки на этот счёт, но они настолько мизерные, что не имеет смысла расписывать, что там да как.
3. Зиродеечки!!1

Мне немного проблематично поздравлять всех с наступающим, так как теперь вас много! Но я однозначно желаю всем успехов в следующем году!
Держите одну из моих самых любимых смешнявок, которую я уже до дыр затёр c релиза.
💅21💔3🤓2😭1
Zero Morals.pdf
762.3 KB
Освещал разработку и БиНаРнЫй ПЫЭВЭЭН внутри SMM на внутреннем митапе PT ESC/CSR, презенташку к нему прикладываю.

Несмотря на то, что тема не самая простая — постарался отразить всё, о чём рассказывал в презентации, в подробностях (ну правда кое-что всё же поменял).

Для тех, кто боится вложений в ТГ — оно есть на гите.
💅13🤓7💔3💊2🤮1
МИНЗДРАВ ПРЕДУПРЕЖДАЕТ: БАГБАУНТИ УБИВАЕТ — исключительно авторские мюсли!

Который раз убеждаюсь, что если вы кекурити кекёрчер с уклоном в пывн (в особенности бинарный) — лучше всё же репортить багулечки-уязвимости через вашу компанию (если вы трудоустроены) или же через партнёрки (проблематично, но всё ещё возможно). Иначе есть большие риски столкнуться с игнором со стороны вендора(-ов) — проблема извечная, знаю-знаю. Но больше всего меня это калит при репорте весьма-таки низких багов — в моём случае это прошивки.

За свой 21 годик жизни я приходил к вендору "as is" (т.е самостоятельно) ровно 2 раза и оба раза с претензиями что XXX насрал в прошивку. Приходил в не очень далёком 23 году и в 25, 2 недели назад. Можно сослаться на сроки, мол, чё ты бухтишь, только 2 недели прошло. Но так-то в 23-м ответили в течении 3-х рабочих дней — вменяемые сроки. А сейчас я чувствую, что ко мне придут (если вообще придут) в лучшем случае через месяц-два. И это в какой-то степени расстраивает, но теперь есть понимание, что давить надо немного с другой стороны. Надеюсь, что pirozhki помладше (или те кто только собираются влиться в сферу) будут делать так сразу, а не как я!

TL;DR: бубубу бебебе
💅14💊9👎2💔1🤓1
Чёт давно я не появлялся в поле видимости коммунити, да и в принципе особо нечего рассказывать.

Назвиздел. Уже несколько месяцев я провожу псиопы исследования над процессорами AMD и их прошивками 😂
Более того, есть результат


Очевидно, что я ничего не скажу конечно же. Однако, это одна из самых угарных вещей, которую кто-либо видел.

А вот рассказать я о ней смогу только в апреле-мае 2026 года 😐

Ну, собсна, посветился и хватит.

Current vibes of today
Please open Telegram to view this post
VIEW IN TELEGRAM
💊18🤓10
Совершенно случайно обнаружил для себя архитектурный прекол, связанный с дескрипторами памяти SMRAM из SMM_CORE_PRIVATE_DATA. Я об этом ничего не слышал, не уверен, известен он или нет.

SMM_CORE_PRIVATE_DATA это "контрольная" структура доступная в рантайм маппинге, ею в частности пользуются драйвера с "дочерними" обработчиками, как пример. Саму структурку весьма просто найти в памяти (из ОС в том числе), я не буду рассказывать как это делать, это весьма просто.

Собственно, почему меня заинтересовало поле SmramRanges в SMM_CORE_PRIVATE_DATA? Дело в том, что эти дескрипторы, очевидно, в действительности совпадают с сконфигурированными адресами из MSR (SMM_ADDR, SMM_MASK - AMD; SMRR_PHYS_BASE, SMRR_PHYS_MASK - Intel) и TSEG соответственно.

В теории, поиск SMM_CORE_PRIVATE_DATA ради дескрипторов SMRAM может лишить нас лишней головной боли с получением зарезервированных адресов, а значит - сократить окно брутфорса некоторых специфичных адресов (брутфорсить 4 гигабайта это НЕ весело). Теперь не придётся стучаться к TSEG и BGSM (Base of GTT Stolen Memory) через MCFG и PCI Host Bridge на Intel. Ну или не придётся плакать, если вы любитель AMD, хотя я не уверен.

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

Uhhhhhhhhhhhhhhhhhhhh
💊18🤓4🤡2
Мне очень нравится, как вендора подходят к "инфраструктуре" апдейта фирмвари на чипе. Не говорю про телебоны, FPGA, ПЛИСы, прочие Embedded-штуки,

Если раньше всё было относительно понятно, кто куда и зачем, то сейчас это вообще весело, буквально.

Один регистрирует протокол, два других их ремапят, четвёртый ремапит его для внешнего мира, какой-нибудь ещё один существует чисто по приколу. Какой-нибудь отдельный для капсульных апдейтов обращается к какой-то не идентифицируемой нормально штуке. Зарываешься в это болото с головой и в итоге ты вроде бы и понимаешь, что вообще делается, но как-то и не очень понимаешь.

А ещё нужно не забывать про элементы защиты, зависящие от RoT, они периодически даже мешают исследовательской работе.

Вообще, теоретически, для анализа вот такого говна можно использовать SPI эмуляторы, думается мне (первым в голову пришёл EM100Pro-G3). У меня недавно появилась FPGA плата (на цинке...), хороший пет проект может получиться. Осталось надыбать осциллограф. И, возможно, понять как жить с WSON-8 форм-фактором.

У меня skill issue, нутром чую.

Люди, собаки, люди с собаками, собаки с людьми, людособаки, собаколюды, собаколюдособаки, людособакилюды, собака.. бля.
🤓21
Даров, pirozhki!

Сижу триажу рабочие приколы под смешную долбёжку. Подумал, что немного нарушу le традицию писать итоги года в последнюю пятничку, напишу сейчас. Почему бы и нет? Я уже всё равно не планирую внезапно писать что-то интересное.

На самом деле, год пролетел для меня быстро, было немного тяжеловато, но как есть. Было много чего как хорошего, так и не очень. Из интересного я думаю, что отмечу поездку на OFFZONE. Это, в принципе, для меня была первая поездка на какую-либо конфу кбшников/ибшников. Было весело, надо сказать. Послушал пару докладов, пообщался с некоторыми ЧеЛоВеКаМи там, ЗАЛУТАЛ СМЕШНОЙ АДДОН ОТ ПТЛАБОВ (не, он реально прикольный) — в общем-то, остался доволен. Жаль, не попал на ZN.
Выступил (хоть и на закрытом) митапе внутри PT о SMM приколюхах, презу можно найти здеся. Она, конечно, не полная (с точки зрения покрытия тем), но даёт минимум. В принципе, не плохо.

Из самого важного: я до сих пор очень сильно потею над кое-чем, что я смог найти у AMD. Работа идёт уже месяц четвёртый, если не пятый. Есть куча затыков, которые меня тормозят (или торможусь я сам), но, неиронично, провожу время очень весело. К счастью, таймлайн, обзначенный мне, весьма большой, чтоб я мог ещё потупить немножечко. Я планирую рассказать о приколюшке в 2026 году. На мой взгляд, пласт получится обширный и детальный (а я постараюсь сделать именно так).

Что у меня запланировано на следующий год?
Я собираюсь полностью погрузиться в AMD PSP (сейчас это ASP, AMD Secure Processor) с точки зрения поиска багов/уязвимостей. В идеале бы ещё хотел потрогать Intel ME (как мои некоторые коллеги). По возможности, конечно, хотелось бы потрогать iOS, ибо там вообще весьма интересно и заманчиво всё устроено.
Собственно, следующий год ожидается весьма интересным. Тут бы не съехать с колёсиков окончательно!

Вас достаточно много и, надеюсь, у вас всё хорошо на текущий момент. От себя хочу вам пожелать успехов и счастья в 2026 году, оно нам всем понадобится.

Дальше будет только смешнее, сложнее и хардкорнее 😈
Please open Telegram to view this post
VIEW IN TELEGRAM
💊16🤓9😭3