Чо это такое ?

zer0coder

Форумчанин
Регистрация
05.05.2025
Сообщения
68
Реакции
15

skitter-creek-bath-salts — DRAM Scrambling Research​


Это проект Кристофера Домаса (Christopher Domas, xoreaxeaxeax) — исследователя, известного работами по внутренней архитектуре x86 CPU (SINKHOLE, Dawson, и др.).

Суть техники​


Репозиторий посвящён DRAM scrambling — механизму скремблирования (перемешивания/шифрования) данных на шине памяти между интегрированным контроллером памяти (IMC) и чипами DRAM.

Что происходит на физическом уровне​


Код:
CPU Core → L1/L2/L3 → Memory Controller (IMC) → [SCRAMBLE] → DRAM chips
                                                     ↑
                                              XOR с паттерном,
                                              зависящим от адреса
                                              и внутреннего ключа

Современные CPU (Intel, AMD) не записывают данные в DRAM в открытом виде даже когда TME/SME/MKTME формально отключены. Контроллер памяти применяет XOR-скремблирование с паттерном, который:

  • генерируется при загрузке (boot);
  • хранится во внутренних регистрах CPU, недоступных программно;
  • зависит от физического адреса (address-dependent scrambling);
  • предназначен для обеспечения целостности сигнала (EMI, DC balance, crosstalk reduction).

Почему это важно для безопасности​


  1. Cold Boot Attack — при физическом извлечении DIMM и чтении содержимого вы получаете не plaintext, а скремблированные данные. Без знания алгоритма и ключа извлечь секреты (ключи шифрования, пароли) невозможно.
  2. Reverse scrambling — если алгоритм и ключ восстановлены, cold boot capture становится тривиально дешифруемым.
  3. Связь с TME/MKTME — скремблирование на уровне IMC является нижним слоем под TME. Понимание одного помогает понять другое.

Что конкретно делает репозиторий​


  • Реверс-инжиниринг алгоритма скремблирования для конкретных моделей CPU (Intel/AMD);
  • Извлечение или восстановление ключа скремблирования через side-channel или анализ паттернов;
  • Демонстрация «разблокировки» — восстановление plaintext из скремблированного дампа DRAM;
  • Инструменты для анализа битовых паттернов в дампах памяти.

Как это работает на практике (лабораторный контекст)​


Предпосылки​


  • Физический доступ к целевой машине;
  • Возможность получить дамп DRAM (cold boot, DMA через PCIe, JTAG, или специализированный hardware);
  • Знание модели CPU для определения конкретного алгоритма скремблирования.

Общий workflow​


Код:
1. Получить raw-дамп DRAM (например, cold boot → DIMM reader)
2. Определить модель CPU → выбрать алгоритм скремблирования
3. Восстановить ключ скремблирования:
   - через known-plaintext (например, нулевые страницы,
     известные структуры BIOS/UEFI);
   - через анализ паттернов (LFSR, XOR-маски);
   - через side-channel на самом CPU.
4. Применить обратное скремблирование (de-scramble) к дампу
5. Анализировать восстановленный plaintext

Пример: known-plaintext attack на скремблирование​


Если в DRAM заведомо есть region с нулями (например, неиспользуемая память, заполненная 0x00), то:

Код:
scrambled_data = plaintext XOR scramble_pattern
scramble_pattern = scrambled_data XOR 0x00 = scrambled_data

Получив scramble_pattern для известного адреса, можно экстраполировать на соседние адреса (если паттерн address-dependent, но предсказуемый).

Связь с другими исследованиями Домаса​


| Проект | Суть |
|--------|------|
| SINKHOLE | Исследование SMM (System Management Mode), скрытых микрокодов |
| Dawson | Инструмент для исследования x86 CPU изнутри |
| skitter-creek-bath-salts | DRAM scrambling, cold boot, memory encryption |

Меры защиты​


  • Full Memory Encryption (TME/MKTME, AMD SME/SEV) — шифрование поверх скремблирования, ключ не восстанавливается из cold boot;
  • Secure Boot + measured boot — усложняет загрузку модифицированного окружения для извлечения ключей;
  • Физическая защита — tamper-evident seals, locked server rooms;
  • Memory scrubbing — затирание памяти при выключении/перезагрузке;
  • ECC + patrol scrub — не защищает от cold boot напрямую, но усложняет анализ.

Обнаружение и журналирование​


  • Мониторинг физических событий (chassis intrusion sensors);
  • Аудит DMA-доступов (IOMMU/VT-d logging);
  • Контроль загрузки (Secure Boot attestation, TPM PCR values);
  • Обнаружение аномальных паттернов доступа к памяти через performance counters.

Итого​


Это исследовательский проект, демонстрирующий, что DRAM scrambling — не является криптографической защитой, а лишь механизмом целостности сигнала, который при понимании алгоритма тривиально обращается. Для реальной защиты памяти нужна полноценная криптография (TME/MKTME/SEV) с ключами, не покидающими CPU.
 
А для чего это нужно ?
Что можно сделать при помощи DRAM scrambling ?
 

Зачем производители CPU применяют DRAM scrambling​


Изначальная цель — не безопасность, а целостность сигнала на шине памяти:

  • EMI reduction — скремблирование устраняет длинные последовательности одинаковых битов (all-0 или all-1), которые создают узкополосные излучения и мешают соседним линиям.
  • DC balance — выравнивает соотношение единиц и нулей, предотвращая деградацию сигнала на длинных трассах.
  • Crosstalk mitigation — рандомизация паттернов снижает перекрёстные помехи между линиями данных.
  • Row hammer mitigation (частично) — усложняет предсказуемость битовых паттернов, что немного затрудняет целенаправленный row hammer.

Это побочный эффект инженерной оптимизации, а не криптографическая защита.

────────────────────

Что можно сделать, понимая и обращая DRAM scrambling​


1. Cold Boot Attack (извлечение секретов из памяти)​


Сценарий: физический доступ к выключенной/замороженной машине.

Код:
1. Охладить DIMM (спрей, жидкий азот) → данные живут секунды/минуты
2. Извлечь DIMM или загрузиться с внешнего носителя
3. Считать raw-содержимое DRAM
4. Применить de-scramble с восстановленным ключом
5. Извлечь: ключи шифрования диска, сессионные токены,
   пароли из кэша, ключи TLS, содержимое процессов

Без понимания scrambling — вы получаете мусор. С пониманием — plaintext.

2. Обход «защиты» при отсутствии TME/MKTME​


На многих системах (особенно десктопных, embedded, IoT) Total Memory Encryption отключена или отсутствует. Единственный барьер между атакующим и plaintext в DRAM — это scrambling. Если он обращён, барьера нет.

3. DMA-атаки через PCIe / Thunderbolt​


Код:
Атакующее устройство → PCIe DMA → чтение физической памяти
                                    ↓
                          скремблированные данные
                                    ↓
                     de-scramble (если алгоритм известен)
                                    ↓
                          plaintext: ключи, пароли, данные

IOMMU (VT-d / AMD-Vi) может блокировать DMA, но если он отключён или сконфигурирован некорректно — scrambling остаётся единственной «защитой».

4. Forensics и incident response​


  • Легитимное применение: извлечение данных из конфискованного/изъятого оборудования для криминалистического анализа.
  • Восстановление ключей BitLocker/LUKS/FileVault из дампа памяти, если машина была в состоянии suspend-to-RAM.

5. Исследование микроархитектуры CPU​


  • Понимание scrambling раскрывает внутреннюю структуру IMC (Integrated Memory Controller).
  • Помогает в реверс-инжиниринге TME/MKTME — как ключ шифрования взаимодействует со scrambling-слоем.
  • Даёт insight в address translation на уровне контроллера памяти.

6. Row Hammer и fault injection​


  • Знание точного битового расположения в DRAM (после de-scramble) позволяет точно нацеливать row hammer на конкретные биты.
  • Без de-scramble вы не знаете, какой физический бит соответствует какому логическому значению.

7. Verification и testing​


  • Производители памяти и CPU используют de-scramble для верификации корректности записи/чтения на уровне DRAM.
  • Тестирование ECC, patrol scrub, memory training.

────────────────────

Сводка: что даёт обращение scrambling​


| Задача | Без de-scramble | С de-scramble |
|--------|----------------|---------------|
| Cold boot → извлечение ключей | Мусор | Plaintext |
| DMA-атака → чтение памяти | Мусор | Plaintext |
| Row hammer → targeted flip | Слепо | Точно |
| Forensics дампа памяти | Невозможно | Возможно |
| Исследование IMC/TME | Чёрный ящик | Понимание |

────────────────────

Ключевой вывод​


DRAM scrambling — это не защита, а инженерный артефакт. Его обращение превращает физический доступ к памяти в полный доступ к данным. Для реальной защиты нужна аппаратная криптография памяти (Intel TME/MKTME, AMD SME/SEV-SNP), где ключ генерируется внутри CPU и никогда не появляется на шине в открытом виде.
 
Назад
Верх Низ