На физическом пентесте корпоративный ThinkPad с BitLocker и TPM 2.0 лежал в переговорной - сотрудник ушёл на обед, ноутбук в sleep mode. Баллончик с хладагентом, USB-флешка с загрузочным образом bios_memimage64, четыре минуты работы - и дамп 16 ГБ оперативной памяти на внешнем накопителе. Из дампа утилитой
aeskeyfind извлечён FVEK - ключ тома BitLocker. Через два часа Elcomsoft Forensic Disk Decryptor отдал полную копию расшифрованного системного раздела. Корпоративная политика "TPM без PIN" превратила full disk encryption в декорацию - ключ шифрования лежал в RAM открытым текстом, и физический доступ к устройству оказался единственным условием для компрометации.Физические атаки на память в цепочке атаки: бизнес-логика и kill chain
Зачем атакующему возиться с баллончиками и FPGA-платами, когда есть фишинг и эксплойты? Всё просто: cold boot attack и DMA-атаки на оперативную память - единственный способ обойти full disk encryption на выключенном или заблокированном устройстве без знания пароля пользователя. Ноутбук украден из офиса, изъят на таможне, оставлен в гостинице - это единственный вектор, который работает напрямую против FDE.Финансовый импакт конкретен: доступ к диску CFO, юриста или разработчика - это M&A-документы, клиентские данные, исходный код. В incident response я видел случаи, когда утечка одного ноутбука стоила компании больше, чем весь годовой бюджет на ИБ.
Цепочка атаки:
- Физический доступ к устройству - кража, временный доступ, evil maid (Hardware Additions, T1200, Initial Access)
- Оценка состояния - устройство включено, в sleep mode или недавно выключено
- Выбор вектора - cold boot (если нужна перезагрузка) или DMA-атака (если есть Thunderbolt/PCIe)
- Дамп памяти - forensic memory acquisition через загрузочный образ или DMA-устройство
- Извлечение ключей - поиск криптографических ключей в дампе (OS Credential Dumping, T1003, Credential Access)
- Расшифровка диска - использование извлечённых ключей для доступа к данным (Data from Local System, T1005, Collection)
- Эксфильтрация - копирование данных на внешний носитель (Exfiltration Over Physical Medium, T1052)
Реманентность данных DRAM - почему атака холодной перезагрузки работает
Cold boot attack опирается на физическое свойство DRAM - реманентность данных. Ячейки памяти хранят информацию в виде электрических зарядов на конденсаторах. После отключения питания заряды не исчезают мгновенно - они рассеиваются постепенно, со скоростью, зависящей от температуры и типа памяти.
При комнатной температуре данные в DRAM начинают деградировать за секунды. Но при охлаждении скорость рассеяния зарядов резко падает. Исследователи из Princeton University в работе "Lest We Remember: Cold Boot Attacks on Encryption Keys" (2008) показали: при охлаждении модулей DDR2 до ~-50°C потеря битов через несколько минут составляет доли процента. Этого хватает для снятия полного дампа и последующего восстановления ключей шифрования BitLocker, FileVault, dm-crypt и TrueCrypt даже при небольших ошибках в данных.
На практике охлаждение делается двумя способами:
- Баллончик со сжатым воздухом, перевёрнутый вверх дном - жидкий хладагент охлаждает модули до -40...-50°C. Хватает для DDR2 и ранних DDR3. Цена вопроса - $5-10 за баллончик из любого магазина электроники.
- Жидкий азот (-196°C) - максимальное время удержания, но неудобен в полевых условиях. Годится для лабораторных исследований.
В 2018 году Olle Segerdahl и Pasi Saarinen из F-Secure продемонстрировали работающую cold boot атаку на современных ноутбуках с DDR3/DDR4 через warm reboot - обходя механизм перезаписи памяти при загрузке путём сброса атрибутов в NVRAM прошивки. То есть вектор не умер - он мутировал.
DDR4 и DDR5 ещё более волатильны. Практическая cold boot атака с физическим извлечением модулей на DDR4 крайне затруднена без специализированного оборудования. Но сценарий с "тёплой перезагрузкой" - когда атакующий загружает свой образ без выключения питания - остаётся рабочим, если BIOS/UEFI не защищён паролем и не затирает память при POST.
Cold boot attack: дамп памяти и извлечение ключей шифрования на практике
Требования к окружению
- Целевая система: ноутбук или десктоп с включённым FDE (BitLocker, LUKS, FileVault), находящийся во включённом состоянии, sleep mode или недавно (до 30 секунд) выключенный. Hibernate НЕ уязвим - данные сброшены из RAM на диск
- Загрузочный USB: образ с утилитой дампа памяти - bios_memimage64 из оригинального Princeton CITP coldboot toolset (доступны форки, например baselsayeh/coldboot-tools - актуальность стоит проверить) или аналог
- Хладагент: баллончик со сжатым воздухом (для использования перевёрнутым) или специализированный охлаждающий спрей
- Внешний накопитель: USB-флешка или SSD объёмом не менее объёма RAM целевой системы (16-64 ГБ)
- Физический доступ: возможность открыть корпус для доступа к модулям RAM (или хотя бы перезагрузить систему)
- Предварительная настройка: в BIOS/UEFI целевой системы должна быть доступна загрузка с USB. Если стоит BIOS-пароль - этот вектор закрыт
Процедура дампа: шаг за шагом
Шаг 1. Оценка и подготовка. Определяем состояние устройства. Идеальный сценарий - ноутбук в sleep mode с залоченным экраном. Худший - устройство выключено более 30 секунд назад (для DDR4 данные уже потеряны). Открываем корпус для доступа к модулям RAM.Шаг 2. Охлаждение. Переворачиваем баллончик со сжатым воздухом и распыляем хладагент непосредственно на модули DRAM. На поверхности модулей должен образоваться иней. Для DDR2 достаточно 5-10 секунд, для DDR3 - максимально интенсивное охлаждение непосредственно перед отключением питания.
Шаг 3. Холодная перезагрузка. Отключаем питание (для ноутбука - отсоединяем батарею и кабель). Немедленно подаём питание обратно и загружаемся с подготовленного USB. Каждая секунда задержки - потеря данных.
Шаг 4. Дамп. Утилита bios_memimage64 работает на уровне BIOS/EFI - обращается к памяти напрямую до загрузки ОС и пишет содержимое RAM на USB-накопитель. Минимальный footprint загрузочного образа критичен: чем меньше памяти жрёт сам инструмент дампа, тем больше исходных данных сохраняется.
Шаг 5. Альтернативный путь - извлечение модулей. Если BIOS защищён паролем или POST затирает память (особенно актуально для ECC-памяти серверного класса), модули физически вынимаются из целевой системы и переставляются в подготовленную машину атакующего. Это медленнее и рискованнее - каждая секунда без питания ускоряет деградацию, даже с охлаждением.
По данным публичного отчёта Securitum о пентесте медицинской организации (2024), cold boot attack с использованием bios_memimage64 и баллончика со сжатым воздухом позволила извлечь FDE-ключ из дампа памяти реального корпоративного устройства. Не лабораторный стенд - боевая машина.
DMA-атака на оперативную память: Thunderbolt, PCIe и FireWire
DMA (Direct Memory Access) - механизм, позволяющий периферийным устройствам обращаться к оперативной памяти напрямую, минуя процессор. Свойство, придуманное для производительности, превращается в вектор атаки: подключив к целевой системе специализированное устройство, атакующий получает прямой доступ к содержимому RAM - ключи шифрования, пароли, сессионные токены.В отличие от cold boot, DMA-атака не требует перезагрузки и не зависит от реманентности данных. Устройство подключается к работающей системе, данные считываются "на лету". Для современных систем с DDR4/DDR5, где cold boot практически нереализуем, DMA-атака через Thunderbolt - предпочтительный вектор.
Thunderbolt/PCIe - основной современный вектор. Thunderbolt 1/2/3 дают прямой PCIe-канал к памяти хоста. PCILeech (ufrisk/pcileech, автор - Ulf Frisk) использует FPGA-платы для чтения и записи физической памяти через этот канал. Плата PCIeScreamer/ScreamerM2 (LambdaConcept) стоит €350–500 в зависимости от модели и даёт доступ ко всему адресному пространству. Бюджетная альтернатива - USB3380-EVB (~$100), но с ограничением в 4 ГБ адресного пространства - для систем с 16+ ГБ RAM этого мало.
На системах с портом FireWire (или через переходник Thunderbolt-to-FireWire на старых Mac) атака реализуется утилитами типа inception - без FPGA, без дорогого оборудования. FireWire DMA-атаки исторически делались через winlockpwn (Adam Boileau, 2008) и inception (Carsten Maartmann-Moe). Отдельная линия исследований ANSSI (французское агентство информационной безопасности) показала, что DMA-доступ возможен и через скомпрометированные сетевые карты (NIC) с поддержкой bus-mastering - но это более экзотический вектор, не связанный с FireWire напрямую.
Сравнение инструментов DMA-атак и ограничения
| Инструмент | Интерфейс | Стоимость | Ограничения | Когда использовать |
|---|---|---|---|---|
| PCILeech + ScreamerM2 | Thunderbolt/M.2 | ~$300 | DMA Guard в Windows 10+ блокирует; IOMMU/VT-d на Linux | Ноутбук с Thunderbolt без DMA Guard |
| PCILeech + USB3380-EVB | PCIe | ~$100 | Только 4 ГБ адресного пространства; нужен открытый PCIe слот | Десктоп с доступным PCIe, системы до 4 ГБ RAM |
| inception (FireWire) | FireWire/1394 | ~$20 (кабель) | Только legacy-системы с FireWire; новые ОС блокируют DMA | Старые системы, forensics, Mac с Thunderbolt-to-FireWire |
| bios_memimage64 (cold boot) | USB (загрузочный) | ~$10 (хладагент) | DDR4+: данные деградируют слишком быстро; нужна перезагрузка; BIOS-пароль блокирует | Sleep mode на DDR2/DDR3, отсутствие BIOS-пароля |
Предусловия для DMA-атак: целевая система должна иметь незаблокированный Thunderbolt-порт или PCIe-слот, DMA Guard (Kernel DMA Protection) должен быть отключён, а IOMMU (Intel VT-d / AMD-Vi) не должен ограничивать DMA для новых устройств. Windows 10 1803+ поддерживает Kernel DMA Protection, но она требует поддержки со стороны UEFI-прошивки (Pre-Boot DMA Protection) и включённого IOMMU. На устройствах, выпущенных до 2019 года, поддержка часто отсутствует независимо от версии Windows.
Извлечение ключей из RAM: обход BitLocker и LUKS через дамп памяти
Дамп памяти сам по себе - бинарный файл размером в объём RAM. Ключи шифрования нужно в нём найти. Два подхода: сигнатурный поиск и анализ структур.
aeskeyfind - утилита из оригинального Princeton CITP coldboot toolset. Сканирует произвольный бинарный файл на предмет AES key schedule - развёрнутого расписания ключа, которое в памяти имеет характерную структуру. Находит 128-битные и 256-битные AES-ключи без необходимости знать формат хранения конкретной ОС. Оговорка: оригинальный код может потребовать патчей для сборки на современных дистрибутивах GNU/Linux.
Bash:
# Поиск AES-ключей в дампе памяти
# Оригинал: Princeton CITP coldboot-tools (репозиторий может быть недоступен)
# Может потребовать патчей для сборки на современных дистрибутивах
./aeskeyfind memory_dump.bin
Elcomsoft Forensic Disk Decryptor (EFDD) - коммерческий инструмент, который принимает на вход дамп памяти и автоматически вытаскивает из него ключи BitLocker, FileVault 2, PGP Disk и TrueCrypt/VeraCrypt. EFDD ищет не просто AES key schedule, а специфичные структуры - для BitLocker это структура FVEK в связке с метаданными тома. Удобен для forensic-сценариев, но стоит денег и привязан к Windows.
Volatility - фреймворк для анализа дампов памяти, применимый не только для ключей, но и для извлечения хешей паролей, процессов, сетевых соединений. Плагин
yarascan в Volatility 3 позволяет искать по произвольным YARA-правилам, в том числе по сигнатурам криптографических структур. Но для практического поиска ключей FDE утилита aeskeyfind или EFDD удобнее - Volatility лучше подходит для анализа операционных артефактов (Private Keys, T1552.004, Credential Access).От дампа до расшифрованного тома - четыре шага:
- Прогоняем
aeskeyfindпо дампу -> получаем кандидаты ключей (обычно 2–5 штук) - Для BitLocker: пробуем каждый ключ через
dislocker(GNU/Linux) или EFDD (Windows) - пытаемся смонтировать зашифрованный раздел - Для LUKS: volume key используем через
cryptsetup luksDump /dev/sdaXдля определения cipher и key size, затемcryptsetup open --type luks --master-key-file volume_key.bin /dev/sdaX decrypted_name(volume_key.bin - raw binary соответствующей длины: 32 байта для AES-128-XTS, 64 байта для AES-256-XTS; для LUKS2 указывать--type luks2; требуется cryptsetup >= 1.6) - Верификация: если том смонтировался и файловая система читаема - ключ найден
Когда cold boot и DMA-атаки не работают: ограничения техник
Ни cold boot, ни DMA - не серебряная пуля. Конкретные условия, при которых атаки деградируют или невозможны:DDR4/DDR5 и cold boot. Практическая cold boot атака с физическим извлечением модулей DDR4 на данный момент не документирована в публичных исследованиях как надёжно воспроизводимая. Высокая волатильность DDR4 делает окно для извлечения данных слишком узким даже при интенсивном охлаждении. Тёплая перезагрузка (без отключения питания) - единственный работающий подход, но требует отсутствия BIOS-пароля.
Memory scrambling. Современные BIOS/UEFI могут включать скрэмблинг содержимого RAM. По данным исследователей с StackExchange, стандартный скрэмблинг использует LFSR (Linear Feedback Shift Register) - и его можно сломать, имея всего 50 байт известного открытого текста. При этом memory interleaving при использовании нескольких модулей DIMM усложняет атаку на порядок.
Intel TME (Total Memory Encryption) и AMD SME (Secure Memory Encryption). Аппаратное шифрование всей памяти на уровне контроллера - содержимое RAM зашифровано даже для DMA-устройств. Если включено - и cold boot, и DMA-атаки дают бесполезный шифротекст. TME доступен начиная с Intel Ice Lake-SP (серверные, 2021, TME-MK) и клиентских Tiger Lake/Alder Lake (11-е/12-е поколение); требует включения в BIOS/UEFI и обычно отключено по умолчанию на клиентских системах. AMD SME доступен с EPYC Naples (Zen 1, 2017); на клиентских AMD Ryzen Pro поддержка SME появилась позже и зависит от вендора прошивки.
Kernel DMA Protection (DMA Guard). Windows 10 1803+ блокирует DMA для новых Thunderbolt-устройств до авторизации пользователем. Полностью убивает PCILeech через Thunderbolt - если включена. На Linux аналогичную функцию выполняет IOMMU (Intel VT-d / AMD-Vi) в строгом режиме.
TPM + PIN. Если BitLocker настроен с TPM + PIN (а не TPM-only), ключ шифрования не выгружается в RAM автоматически при загрузке - только после ввода PIN. При cold boot это означает, что ключ в памяти есть только пока пользователь активно работает. При DMA - ключ можно извлечь из работающей системы, но не из заблокированной при условии включённого Credential Guard (отдельная настройка).
Hibernate vs sleep. В режиме hibernate содержимое RAM сбрасывается на диск (hyberfil.sys), а память обесточивается. Cold boot attack на устройство в hibernate невозможна. Простейшая и самая эффективная мера - но большинство корпоративных ноутбуков по умолчанию используют sleep, а не hibernate, потому что просыпаются быстрее. Удобство победило безопасность.
ECC-память и POST. Серверные системы с ECC-памятью часто инициализируют (затирают) память при POST для проверки целостности. Это уничтожает содержимое RAM до того, как загрузочный образ атакующего получит управление.
Защита от физических атак на память: чеклист с TRESOR, DMA Guard и TPM+PIN
Аппаратная защита ключей шифрования от cold boot и DMA-атак - не вопрос одной галочки. Ниже - чеклист, который можно вставить в отчёт пентеста или отдать сисадмину.Чеклист защиты от cold boot attack и DMA-атак на оперативную память:
📚 Часть контента скрыта. Этот материал доступен участникам сообщества с рангом One Level или выше
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме
Практика: большинство корпоративных конфигураций, которые встречаются на пентестах, используют BitLocker с TPM-only. Ключ FVEK автоматически загружается в RAM при каждом включении без участия пользователя - атакующему остаётся только его оттуда забрать. Переход на TPM+PIN - единственная мера, которая закрывает этот вектор полностью для сценария "украденный ноутбук".
Большинство обсуждений cold boot attack в русскоязычном пространстве сводятся к "это теоретическая атака, на DDR3+ не работает, можно расслабиться". В реальности публичный пентест-отчёт Securitum за 2024 год демонстрирует успешную атаку на рабочем корпоративном устройстве. DDR3/DDR4 усложнили классический сценарий с извлечением модулей - но DMA-атаки через Thunderbolt с PCILeech работают на тех же системах без всякого охлаждения и без ограничений по типу памяти. Вектор сместился, угроза никуда не делась.
Неудобная правда в другом: TPM без PIN - стандарт во многих корпоративных средах. Сисадмины выбирают его, потому что пользователям "неудобно вводить PIN при загрузке". Microsoft сама рекомендует TPM-only как базовый режим BitLocker. Результат предсказуем - в большинстве физических пентестов, где встречается TPM-only, извлечение ключей BitLocker из памяти оказывается возможным на устройстве, которое формально "защищено шифрованием". Шифрование без TPM+PIN - замок на двери, ключ от которого лежит под ковриком. Все знают, что это плохо, но продолжают так делать, потому что "у нас же физическая безопасность офиса". До первой кражи ноутбука из машины на парковке.
Последнее редактирование модератором: