eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 июля!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: Gideon Vi
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Электроника —› project:rosenbridge - VIA C3 CPU backdoor
. 1 . 2 . >>
Посл.ответ Сообщение


Ранг: 581.6 (!)
Статус: Модератор
Research & Development

Создано: 28 августа 2018 11:58 New!
Цитата · Личное сообщение · #1

project:rosenbridge

Описание
Аппаратный бэкдор в процессорах VIA C3 - это скрытое несовместимое с x86 ядро, существующее наряду с основным x86-совместимым ядром. Активизируется установкой управляющего бита в служебном регистре. В некоторых случаях бэкдор активирован по умолчанию.
Позволяет получить полный контроль над системой в Ring 0.



Overview
project:rosenbridge reveals a hardware backdoor in some desktop, laptop, and embedded x86 processors.

The backdoor allows ring 3 (userland) code to circumvent processor protections to freely read and write ring 0 (kernel) data. While the backdoor is typically disabled (requiring ring 0 execution to enable it), we have found that it is enabled by default on some systems.

This repository contains utilities to check if your processor is affected, close the backdoor if it is present, and the research and tools used to discover and analyze the backdoor.

Сорсы:
https://github.com/xoreaxeaxeax/rosenbridge

| Сообщение посчитали полезным: SDK, ELF_7719116, 4kusNick, ntldr, stnt, HandMill, sefkrd, mak



Ранг: 286.3 (наставник)
Статус: Участник

Создано: 28 августа 2018 22:23 New!
Цитата · Личное сообщение · #2

Code:
  1.  #include <linux/slab.h> 
  2. 2  #include <linux/fs.h> 
  3. 3  #include <linux/kernel.h> 
  4. 4  #include <linux/errno.h> 
  5. 5  #include <linux/module.h> 


Не в железе дело ?

Ранг: 235.5 (наставник)
Статус: Участник

Создано: 28 августа 2018 22:34 New!
Цитата · Личное сообщение · #3

Ты б для разнообразия хоть первый пост прочитал...
В железе.


Ранг: 581.6 (!)
Статус: Модератор
Research & Development

Создано: 28 августа 2018 23:17 New!
Цитата · Личное сообщение · #4

difexacaw пишет:
Не в железе дело ?


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


Ранг: 286.3 (наставник)
Статус: Участник

Создано: 29 августа 2018 20:17 · Поправил: difexacaw New!
Цитата · Личное сообщение · #5

Jupiter

Не в описании дело. Объясню причём тут никсы.

Не так давно была уязвимость - mlt & spectre. Так вот это было нацелено именно на никсы, а ядро нт так устроено, что снять статистику по кэшу невозможно. И в данном случае опять же примеры на никсах и логичное следствие - только там это и сработает, хоть я и не читал матчасть.

Ранг: 235.5 (наставник)
Статус: Участник

Создано: 29 августа 2018 21:22 New!
Цитата · Личное сообщение · #6

Ну так почитай матчасть что-ли.
Meltdown и Spectre на NT тоже работают - это аппаратный косяк, хотя там всё и достаточно неточно (вероятности).
MS патчи на ядро выпустила видимо именно потому что уязвимости не работают


Ранг: 198.2 (ветеран)
Статус: Участник

Создано: 29 августа 2018 21:51 · Поправил: f13nd New!
Цитата · Личное сообщение · #7

Code:
  1. __asm__ ("movl $_bridge, %eax");
  2. __asm__ (".byte 0x0f, 0x3f");
  3. if (psuedo_false) { /* probably a better way to do this */
  4. __asm__ ("_bridge:");
  5. printf("executed hidden instruction: backdoor detected.\n");
  6. }
  7. else {
  8. printf("failed to execute hidden instruction: no backdoor detected.\n");
  9. }

Ну типа инструкция 0F 3F(vpcext? 2 байта?) и если по _bridge код исполняется, значит уязвимость есть. И то же самое, когда по этой метке ассемблируют очень странным ассемблером (который есть ни что иное как fed commands, wrapped in a specially formatted x86 instruction) свой код bypassing all memory protections and privilege checks. Вопросов на самом деле больше чем ответов.
ЗЫ: и все это после шаманства над "/dev/cpu/0/msr".
WRMSR—Write to Model Specific Register
This instruction must be executed at privilege level 0 or in real-address mode; otherwise, a
general protection exception #GP(0) will be generated.
Наверное потому и никсы. Ну знаете, демонстрация уязвимости с попаданием в нулевое кольцо, для которой надо кое-что сделать в нулевом кольце, не так эффектна.

| Сообщение посчитали полезным: difexacaw



Ранг: 286.3 (наставник)
Статус: Участник

Создано: 30 августа 2018 02:37 New!
Цитата · Личное сообщение · #8

Jupiter

Посмотрел подробно. Тут поднимаются права до кмоде --> Link <--

Штатным путём alloc_chrdev_region() и прочий линукс-апи для запуска кода в ядре.

Затем переключается дескрипторная таблица прерываний - устанавливается видимо ловушка.

Тут --> Link <-- также реализуется ядерный IOCTL штатным путём для доступа к км памяти.

Вот тут сама эскалация"(это после обычной отработки в ядре лол ) --> Link <--

Code:
  1. __asm__ (".byte 0x0f, 0x3f");


Невалид IA опкод: 2-byte escape & 3F который приведёт к срабатыванию ловушки.

Сурки там раскиданы и где искать обработчики я хз. Это чистые линукс фичи и никакого бэкдора там походу нет.


Ранг: 198.2 (ветеран)
Статус: Участник

Создано: 30 августа 2018 02:51 New!
Цитата · Личное сообщение · #9

difexacaw пишет:
Сурки там раскиданы и где искать обработчики я хз.

Почитай что там про папку kern сказано.
Code:
  1. .text:0040146E    mov     eax, offset payload
  2. .text:00401473    db 0Fh,3Fh
  3. .text:00401475    payload:
  4. .text:00401475    bound   eax, ds:0A310075Bh[eax]
  5. .text:0040147C    bound   eax, ds:24120078h[eax]
  6. .text:00401483    bound   eax, ds:80D2C5D0h[eax]
  7. .text:0040148A    bound   eax, ds:0A1AF97Fh[eax]
  8. .text:00401491    bound   eax, ds:0C8109489h[eax]
  9. .text:00401498    bound   eax, ds:0A1AF97Fh[eax]
  10. .text:0040149F    bound   eax, ds:0C8109C89h[eax]
  11. .text:004014A6    bound   eax, ds:0C5E998D7h[eax]
  12. .text:004014AD    bound   eax, ds:0AC128751h[eax]
  13. .text:004014B4    bound   eax, ds:844475E0h[eax]
  14. .text:004014BB    bound   eax, ds:84245DE2h[eax]
  15. .text:004014C2    bound   eax, ds:8213E5D5h[eax]
  16. .text:004014C9    bound   eax, ds:24115F20h[eax]
  17. .text:004014D0    bound   eax, ds:2412C133h[eax]
  18. .text:004014D7    bound   eax, ds:0A2519433h[eax]
  19. .text:004014DE    bound   eax, ds:80D2C5D0h[eax]
  20. .text:004014E5    bound   eax, ds:0C8108489h[eax]
  21. .text:004014EC    bound   eax, ds:24120208h[eax]
  22. .text:004014F3    bound   eax, ds:80D2C5D0h[eax]
  23. .text:004014FA    bound   eax, ds:0C8108489h[eax]
  24. .text:00401501    bound   eax, ds:24120000h[eax]
  25. .text:00401508    bound   eax, ds:24110004h[eax]
  26. .text:0040150F    bound   eax, ds:80D1C5D0h[eax]
  27. .text:00401516    bound   eax, ds:0E01095FDh[eax]
  28. .text:0040151D    bound   eax, ds:80D1C5D0h[eax]
  29. .text:00401524    bound   eax, ds:0E01095FDh[eax]
  30. .text:0040152B    bound   eax, ds:80D1C5D0h[eax]
  31. .text:00401532    bound   eax, ds:80D1C5D0h[eax]
  32. .text:00401539    bound   eax, ds:0E0108DFDh[eax]
  33. .text:00401540    bound   eax, ds:80D1C5D0h[eax]
  34. .text:00401547    bound   eax, ds:0E0108DFDh[eax]
  35. .text:0040154E    mov     dword ptr [esp], offset aBinBash ; "/bin/bash"
  36. .text:00401555    call    _system

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


Ранг: 286.3 (наставник)
Статус: Участник

Создано: 30 августа 2018 02:55 · Поправил: difexacaw New!
Цитата · Личное сообщение · #10

f13nd

И это после реализации ловушки в IDT. Там есчо вм-код где то видел, из ISR можно сделать что угодно. Видимо кто то не наигрался с драйверами, по этой причине нет никакого внятного описания.

Это вероятно простое расширение командного набора - обработка невалид инструкции(эмуляция) в км.

Ранг: 235.5 (наставник)
Статус: Участник

Создано: 30 августа 2018 08:46 · Поправил: cppasm New!
Цитата · Личное сообщение · #11

difexacaw пишет:
Сурки там раскиданы и где искать обработчики я хз. Это чистые линукс фичи и никакого бэкдора там походу нет.

Походу ты как обычно нифига не понял, но на всякий случай отписал в теме что все нубы и пошёл пилить очередной нафиг никому не нужный мотор.
Какие обработчики, какие Линукс фичи?

1. Для активации бэкдора нужна запись в MSR - нужен Ring0. И про это сказано даже в первом посте. И работает это только на VIA C3 (если работает, без проца это не проверить никак).
2. Если бэкдор активирован и поддерживается - 0Fh,3Fh не вызывает #UD, а передаёт управление на адрес из EAX. Причём система команд после перехода не х86 и для этого кода не работают все проверки защиты. Поэтому можно делать что хочешь - по факту Ring0 привилегии в Ring3.

В этом вся суть - 0Fh,3Fh не вызывает #UD как должен, а вызывает переход в какой-то особый режим.
Всё остальное Линукс специфичное - это просто регистрация устройства в системе которое предоставляет IOCTL для чтения/записи ядерной памяти.
К бэкдору по сути отношения не имеет вообще.
Т.е. реализовано то оно там с помощью бэкдора (переход+хитрые эти опкоды), но из драйвера можно было и тупо ядро читать/писать.

| Сообщение посчитали полезным: 4kusNick, punxer


Ранг: 370.2 (мудрец)
Статус: Участник

Создано: 30 августа 2018 15:15 New!
Цитата · Личное сообщение · #12

cppasm пишет:
Причём система команд после перехода не х86

В какая? Никто не пытался определить хотя-бы перебором известных архитектур?


Ранг: 198.2 (ветеран)
Статус: Участник

Создано: 30 августа 2018 17:00 · Поправил: f13nd New!
Цитата · Личное сообщение · #13

ntldr пишет:
какая? Никто не пытался определить хотя-бы перебором известных архитектур?

Никакая. Если все так, как написано, то инструкции кодируются в полях инструкции bound. Разработчик утверждает, что частично набор инструкций угадал, подбирая биты и глядя на результат. Мне больше интересно как не видя пример использования все это можно было угадать. Проц пилить?


Ранг: 286.3 (наставник)
Статус: Участник

Создано: 31 августа 2018 20:35 · Поправил: difexacaw New!
Цитата · Личное сообщение · #14

cppasm

> Какие обработчики, какие Линукс фичи?

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

1. Попадаем в рекурсию. Для поднятия прав до км нужны км права.
2. Вызывает, для этого видимо и нужны ловушки, либо для расширения набора инструкций. Нужно подробно изучать сурки, коментов там нет.
3. 0F3F - врядле вызывает переход в какой то мод. Даже если допустить что такое возможно, то откуда взялась не ясная система команд, такой примитивный бэкдор не мог реализовать вендор и есчо при этом выложить инфу. Побитные тесты и формирование на этом системы команд - фантастика.

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

Жаль что это невозможно никак проверить из за отсутствия железа.

Ранг: 235.5 (наставник)
Статус: Участник

Создано: 31 августа 2018 21:52 New!
Цитата · Личное сообщение · #15

difexacaw пишет:
1. Попадаем в рекурсию. Для поднятия прав до км нужны км права.

Ну почитай же хоть текстовое описание перед тем как писать.
Написано же что было обнаружено что бэкдор активирован из коробки на многих системах.

difexacaw пишет:
2. Вызывает, для этого видимо и нужны ловушки, либо для расширения набора инструкций.

Не вызывает он #UD если бэкдор поддерживается.
Ловушка нужна чтоб всё не упало если таки бэкдор не поддерживается и будет #UD.

difexacaw пишет:
3. 0F3F - врядле вызывает переход в какой то мод. Даже если допустить что такое возможно, то откуда взялась не ясная система команд, такой примитивный бэкдор не мог реализовать вендор и есчо при этом выложить инфу.

Ясно - этого не может быть потому что не может быть.
Очевидно что инфу выложил не вендор.

А так без проца такого разговор ни о чём - проверить мы не сможем.


Ранг: 198.2 (ветеран)
Статус: Участник

Создано: 31 августа 2018 21:58 New!
Цитата · Личное сообщение · #16

cppasm пишет:
Ну почитай же хоть текстовое описание перед тем как писать.

Да он влез в папку с утилитами для отладки в км и упорно считает, что это часть примера использования бекдора.
cppasm пишет:
А так без проца такого разговор ни о чём - проверить мы не сможем.

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

Ранг: 35.9 (посетитель)
Статус: Участник

Создано: 31 августа 2018 22:17 New!
Цитата · Личное сообщение · #17

f13nd пишет:
У меня курикс где-то валялся в качестве сувенира

Аналогично. Только вот бессмысленно это всё на данный момент. Ладно бы что-то современное было, а так только в качестве некоего недоразумения.
Ну допускаю, что эти процы где-то сейчас работают. Но если и работают, то всякий бред там не запускается.


Ранг: 286.3 (наставник)
Статус: Участник

Создано: 31 августа 2018 22:38 New!
Цитата · Личное сообщение · #18

cppasm

1. Так как вы настаиваете, то прочитал есчо раз первый пост, никакой новый инфы от прочтения не получил. Так что это был пустой и бесполезный совет.

На заборе много чего написано, это не повод доверять написанному.

2. Это очевидно. Вы это сказали по той самой причине, опираться вам нету на что - инфа врядле какая то техническая имеется, а это значит что это не более чем ваше мнение goto п.1

3. Да, это выложил никто, неизвестный человек как кучу не понятных сурков на линуксе. С дичайшими извратами к ядре.

f13nd

> Да он влез в папку с утилитами для отладки в км и упорно считает, что это часть примера использования бекдора.

Тоесть у вас ссылки выше ведут в каталог отладки, тогда у вас какой то косяк, раз пути изменяются.


Ранг: 198.2 (ветеран)
Статус: Участник

Создано: 31 августа 2018 22:42 · Поправил: f13nd New!
Цитата · Личное сообщение · #19

difexacaw пишет:
Тоесть у вас ссылки выше ведут в каталог отладки, тогда у вас какой то косяк, раз пути изменяются.

Эти две точно в папку kern ведут:
difexacaw пишет:
Посмотрел подробно. Тут поднимаются права до кмоде --> Link <--
https://github.com/xoreaxeaxeax/rosenbridge/blob/master/kern/privregs/privregs.c
difexacaw пишет:
Тут --> Link <-- также реализуется ядерный IOCTL штатным путём для доступа к км памяти.
https://github.com/xoreaxeaxeax/rosenbridge/blob/master/kern/deis_kernel.c
которая содержит A collection of helper utilities used to monitor kernel memory and registers for changes caused by fuzzed DEIS instructions.

Ранг: 35.9 (посетитель)
Статус: Участник

Создано: 31 августа 2018 22:46 New!
Цитата · Личное сообщение · #20

difexacaw пишет:
кучу не понятных сурков на линуксе. С дичайшими извратами к ядре.

Всё там понятно. Написано же, что это какие-то внутренние команды ядра проца. Смотрим файл deis_asm.py. Это то, что "неизвестный человек" смог разобрать. И он допускает, что там есть и другие инструкции.


Ранг: 286.3 (наставник)
Статус: Участник

Создано: 31 августа 2018 22:53 New!
Цитата · Личное сообщение · #21

hypn0

И по какой то причине он реализовал ядерный эмулятор, регая драйвера, устанавливая свою IDT etc.

Пример должен быть юзермод, без всякого ядерного говна в никсах. Нечего в этом больше обсуждать, так как для вас походу сам код незаметен, главное что он есть. Тут сразу таких две темы появились, в них - пример ради примера", запуск км кода через какие то извраты из того же мода. Грибной сезон открыт

Ранг: 35.9 (посетитель)
Статус: Участник

Создано: 31 августа 2018 23:02 New!
Цитата · Личное сообщение · #22

difexacaw пишет:
И по какой то причине он реализовал ядерный эмулятор, регая драйвера, устанавливая свою IDT etc.

У меня складывается ощущение, что Вы просто непонятные слова в кучу сваливаете, как-то комбинируете и потом их используете.
Какой эмулятор? Какие драйверы? Наркотики - зло!
Где тут хоть слово про эмулятор?

Он не реализовал эмулятор, он разобрал команды проца и использует их.


Ранг: 286.3 (наставник)
Статус: Участник

Создано: 31 августа 2018 23:12 · Поправил: difexacaw New!
Цитата · Личное сообщение · #23

hypn0

Обьясню если вам не понятно. Как расширить набор команд в юм - конечно же установить ловушку и использовать пустые поля IA кодировки, которые приводят к #UD. В ловушке мы проводим эмуляцию и таким образом у нас есть новая рабочая инструкция. Иначе незачем трогать дескрипторные таблицы.

Кстате если в линуксах нельзя через апи работать с ловушками, то это более чем убогая мягко сказано архитектура".

Добавлено спустя 15 минут
hypn0

> Вы просто непонятные слова в кучу сваливаете

Я не буду как то конкретно на это отвечать, тоесть это мне всё равно что вы думаете, тут есть лишь мнение. Я не использовал вроде бы как какие то термины в данном обсуждении. В данном случае если вам что то не ясно - идите курите базовые доки по архитектуре. Что такое дескрипторные таблицы и прерываний в частности, кроме этого вроде бы ничего я не говорил.

Ранг: 35.9 (посетитель)
Статус: Участник

Создано: 31 августа 2018 23:32 · Поправил: hypn0 New!
Цитата · Личное сообщение · #24

difexacaw Я конечно тупой и ничего не понял.
Но мне интересно, Вы вот всё так обсираете не разбираясь?
Некоторое время назад в hack-сообществе был такой Крис Касперски, который много говорил про микрокод процессоров Intel. Над ним смеялись почти все, а потом оказалось, что он прав. Более того, появились описания разных уязвимостей, которые до сих пор не могут нормально исправить.
У меня есть архивы общения в FIDO. Там много всего интересного присутствует, хоть и давно это было.
Многим сейчас это может не понравиться.
Так что не пишите бред. Лучше разберитесь. Или совсем лучше, оставьте всё как есть. Без вас разберутся.


Ранг: 198.2 (ветеран)
Статус: Участник

Создано: 1 сентября 2018 00:02 New!
Цитата · Личное сообщение · #25

difexacaw пишет:
Нечего в этом больше обсуждать, так как для вас походу сам код незаметен

Так и сказал бы "нихрена не понял, ткнул куда-то наугад, придумал, как это на самом деле работает"


Ранг: 581.6 (!)
Статус: Модератор
Research & Development

Создано: 1 сентября 2018 08:36 New!
Цитата · Личное сообщение · #26

hypn0 пишет:
был такой Крис Касперский


Всё-таки Крис называл себя «Крис Касперски», а не «Крис Касперский».


difexacaw пишет:
Как расширить набор команд в юм - конечно же установить ловушку и использовать пустые поля IA кодировки


Инд, ты пойми, что речь не о создании новых опкодов в доступных незанятых полях IA и не в обработке эмулятором этих фейковых инструкций, а в том, что в конкретной железке VIA C3 есть скрытое ядро, которое несовместимо с набором IA. Именно под него и написан эксплоит, который использует уязвимость (по факту бэкдор) этого самого ядра.

| Сообщение посчитали полезным: hypn0


Ранг: 44.8 (посетитель)
Статус: Участник

Создано: 1 сентября 2018 09:05 New!
Цитата · Личное сообщение · #27

Типичный крелк. Любое новое знание для него не подъёмно, а значит надо сразу это обосрать. При этом конечно когда обсирает нужно приплести любую дичь про внутренности ядра кусочек, который он осилил когда-то.


Ранг: 529.7 (!)
Статус: Участник
оптимист

Создано: 1 сентября 2018 09:33 New!
Цитата · Личное сообщение · #28

Ну скорее всего хотели как лучше а получилось не так как хотели с инструкцией VEX


Ранг: 286.3 (наставник)
Статус: Участник

Создано: 1 сентября 2018 14:55 · Поправил: difexacaw New!
Цитата · Личное сообщение · #29

Jupiter

Это понятно, вопросов бы небыло, если бы не эти манипуляции с IDT etc. Недоверие из за прошлой MLT уязвимости(meltdown). Тоже была куча примеров и все не рабочие. Это стабильно работало лишь в никсах, был облом на тестах кэша. Поэтому доверять каким то сомнительным источникам не следует, тем более один человек мог не верно интерпретировать результаты при тестах. Да и смысл в этом всём отсутствует, это не обычное поднятие прав типо кернел-эксплойт, а драйверный запуск POC.

Добавлено спустя 5 минут
> по факту бэкдор

Бэкдор позволяет поднять права, в данном же случае нужна куча манипуляций в км что бы это запустить, поэтому нельзя назвать бэкдором. Даже если это и работает, то лишь как расширение и не в обход защиты(тк для запуска нужны км права: обычная CPL проверка).


Ранг: 198.2 (ветеран)
Статус: Участник

Создано: 1 сентября 2018 16:56 · Поправил: f13nd New!
Цитата · Личное сообщение · #30

difexacaw пишет:
Бэкдор позволяет поднять права

Это стороннему ваську не позволяет, а VIA зачем-то это в чипе оставили. Когда и если оставили. Никто уже особо не скрывает, что продукция Apple или Cisco не лучший выбор для тех, у кого есть секреты от АНБ США. Это не столько "смотрите, вы можете на старом редком гавне 20летней давности стать рутом, если сможете установить нужные флаги в msr", сколько "смотрите, что эти скоты делают". И если например в комплекте со швейной машинкой идет шлицевая отвертка, ты делаешь вывод, что этот аппарат умеет завинчивать болты?
. 1 . 2 . >>
 eXeL@B —› Электроника —› project:rosenbridge - VIA C3 CPU backdoor

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS