Создание флешки для дампа RAM (атака Cold Boot)

Флешка дамп RAM Cold Boot

Если вы немного шарите в форензике и информационной безопасности, то вероятно знаете, что содер­жимое памяти RAM мож­но лег­ко сдам­пить с помощью простой флеш­ки. В этой статье я покажу, как создать флешку для дампа памяти и реализации атаки Cold Boot.

Еще по теме: Флешка Kali Linux с возможностью сохранения Persistence

Флешка для дампа RAM (атака Cold Boot)

Пред­ставим сценарий, вы выходите погово­рить по телефо­ну, пообедать или курнуть и оставляете ваш ПК без прис­мотра на несколько минут. При этом вы, как осоторожный поль­зователь, заб­локиро­вали ваш комп. У вас даже зашиф­рован­ный SSD, надежный пароль для входа и обновлена Windows. Вы думаете все норм и ваши дан­ные в безопас­ности?

Нет, ваш компьютер не защишен от атаки Cold Boot.

Создание флешки для дампа памяти

Под­готовим ата­кующую заг­рузоч­ную USB-флеш­ку, которая будет дам­пить RAM в нераз­мечен­ную область. Так фай­ловая сис­тема (ФС) флеш­ки не пос­тра­дает.

Установка bios_memimage64:

Установка загрузчика GRUB4DOS в MBR:

Создание одного раздела, не до конца области диска, оставив 4–8 Гбайт:

Использование самой простой файловой системы:

Установка dump RAM:

Со­дер­жимое кон­фигура­цион­ного фай­ла заг­рузчи­ка menu_sec_part.lst:

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

Несом­ненно, это было бы более пра­виль­но, но на сов­ремен­ных фай­ловых сис­темах не так прос­то соз­дать неф­рагмен­тирован­ный сплош­ной файл боль­шого раз­мера. На FAT32 файл боль­ше 4 Гбайт вооб­ще не соз­дать, а, нап­ример, на NTFS ров­но посере­дине раз­дела будет рас­положен слу­жеб­ный MFT, опи­сыва­ющий фай­лы, и при записи на такой вир­туаль­ный диск ты поп­росту зат­решь свою ФС.

Так что рекомен­дую клас­сичес­кий вари­ант с дам­пом RAM в раз­дел, а не в файл.

Использование флешки для дампа RAM

Сов­сем необя­затель­но, что­бы на целевом ком­пе была вклю­чена авто­мати­чес­кая заг­рузка с USB-флеш­ки. Мно­гие вер­сии BIOS под­держи­вают выбор носите­ля для заг­рузки через нажатие кла­виши F8 (или ана­логич­ной). Но даже если нет, это по‑преж­нему мож­но сде­лать через вход в BIOS и изме­нение нас­тро­ек в нем.

Са­ма ата­ка занима­ет некото­рое вре­мя и выг­лядит как прос­тое под­клю­чение USB-флеш­ки. И пока поль­зователь отсутс­тву­ет, дан­ные из его RAM пос­тепен­но уте­кают на съем­ный носитель зло­умыш­ленни­ка. Демонс­тра­ция этой ата­ки пред­став­лена на сле­дующем рисун­ке.

Дамп RAM на флеш­ку в дей­ствии
Дамп RAM на флеш­ку в дей­ствии

Как толь­ко ата­ка будет завер­шена, точ­ная копия опе­ратив­ной памяти сох­ранит­ся во вто­ром раз­деле нашей флеш­ки (/dev/sdb2). Пре­обра­зуем ее в при­выч­ный файл для удобс­тва:

У меня получив­ший­ся дамп был нем­ного сдви­нут — на 0x53000 байт, но это лег­ко испра­вить:

Те­перь перед нами та самая опе­ратив­ная память, что была на момент аппа­рат­ного сбро­са, со все­ми лежащи­ми в ней сек­ретами, которые мож­но лег­ко обна­ружить:

Ис­поль­зуя сиг­натур­ный под­ход, то есть зная опре­делен­ные клю­чевые сло­ва, такие как Password, Secret или Cookie, мы можем прос­тым поис­ком по содер­жимому най­ти те или иные чувс­тви­тель­ные дан­ные. Нап­ример, по сиг­натурам, которые есть у боль­шинс­тва фай­лов, мож­но искать RSA-клю­чи, воз­можно — какие‑то фотог­рафии, PDF-докумен­ты, архи­вы и про­чее.

На сле­дующем рисун­ке пред­став­лен при­мер того, что было запуще­но в сис­теме перед бло­киров­кой компь­юте­ра и началом ата­ки.

Состояние ПК перед блокировкой и аппаратным сбросом
Состояние ПК перед блокировкой и аппаратным сбросом

А пос­ле — на машине ата­кующе­го в памяти содер­жится вве­ден­ная стро­ка.

Атака Cold Boot
Рас­положе­ние тек­ста с экра­на в RAM

Но извле­кать дан­ные из RAM по сиг­натурам — это далеко не все, что мы можем. В дам­пе памяти при­сутс­тву­ют еще те самые струк­туры ОС, которые поз­волят вос­ста­новить хро­ноло­гию событий в сис­теме перед аппа­рат­ным сбро­сом.

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

  • bootmgr (заг­рузчик Windows 7, 10) — 5 157 389 байт;
  • GRUB 2 (заг­рузчик Linux) — 8 219 883 байт;
  • burg (аль­тер­натив­ный заг­рузчик Linux) — 9 599 333 байт;
  • liveOS для форен­зики — 171 944 965 байт.

Заг­рузоч­ный код из Coldboot-Tools для дам­па памяти на диск рас­ходу­ет поряд­ка 95 Кбайт памяти. Сум­марно вся цепоч­ка GRUB4DOS + scraper64_haltonly.bin переза­пишет 820 Кбайт опе­ратив­ной памяти. В то вре­мя как пол­ный объ­ем RAM сов­ремен­ных компь­юте­ров изме­ряет­ся десят­ками гигабайт.

Тем не менее переза­пись даже нес­коль­ких мегабайт в неудач­ном мес­те может нарушить важ­ные струк­туры и сде­лать невоз­можным вос­ста­нов­ление кар­тины сос­тояния ОС. Опыт­ным путем на при­мере Windows 7 было уста­нов­лено, что в пер­вых 100 Мбайт RAM содер­жится не так мно­го дан­ных и толь­ко переза­пись области 5–15 Мбайт и 105–110 Мбайт раз­руша­ет важ­ные струк­туры дан­ных, нуж­ные для ана­лиза сос­тояния ОС.

На прак­тике же выпол­няемый дамп памяти пос­редс­твом GRUB4DOS + scraper64_haltonly.bin все же ока­жет­ся при­годен для ана­лиза. Все изме­нения в RAM будут про­исхо­дить в самом начале, тог­да как сама ОС будет раз­мещена пос­ле пер­вых 100 Мбайт, что прак­тичес­ки исклю­чит веро­ятность переза­писи. Энтро­пия дам­па показы­вает общую кар­тину рас­положе­ния в ней дан­ных и пус­тот.

Флешка Cold Boot
Эн­тро­пия 1 Гбайт RAM, содер­жащей заг­ружен­ную Windows

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

Извлечение секретов

И здесь мы плав­но перехо­дим к форен­зике. Исполь­зуя извес­тные инс­тру­мен­ты, такие как Volatility (см. Анализ дампа памяти в Volatility) или Rekall, мы можем получить боль­шой объ­ем дан­ных о сос­тоянии ОС на момент нашего вме­шатель­ства. Спи­сок про­цес­сов — это отличная демонс­тра­ция того, что мы на вер­ном пути.

Флешка дамп памяти
Спи­сок про­цес­сов в момент аппа­рат­ного сбро­са

Нап­ример, мы можем най­ти рас­положе­ние фай­лов реес­тра в RAM и извлечь отту­да хеши паролей локаль­ных учет­ных записей.

Из­вле­чение локаль­ных учет­ных записей
Из­вле­чение локаль­ных учет­ных записей

По­доб­ное мож­но сде­лать и для домен­ных уче­ток, получая пароли уже откры­тым тек­стом:

Да­лее сле­дует спи­сок откры­тых фай­лов и их содер­жимое, сетевые соеди­нения, буфер обме­на и даже сни­мок рабоче­го сто­ла:

И так далее… Сло­вом, все как при обыч­ной форен­зике.

EFI

У этой ата­ки есть малень­кая осо­бен­ность — она работа­ет глав­ным обра­зом на компь­юте­рах с клас­сичес­ким BIOS.

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

Про­верить это лег­ко с помощью того же заг­рузчи­ка GRUB4DOS. Он под­держи­вает чте­ние/запись про­изволь­ных учас­тков RAM пос­редс­твом спе­циаль­ных команд. Находим любой адрес в памяти для тес­та, смот­рим его содер­жимое и запоми­наем:

Пе­реза­писы­ваем, нап­ример сло­вом test, и дела­ем перезаг­рузку:

Заг­рузчик GRUB4DOS при перезаг­рузке не затира­ет память, так что этот спо­соб иден­тичен холод­ной перезаг­рузке.

Да­лее про­веря­ем, затер ли EFI нашу память, или же пос­ле перезаг­рузки наши дан­ные в RAM оста­лись нет­ронуты­ми. В моем слу­чае память изме­нилась. Про­веря­лось это на ноут­буках фирм HP и Lenovo. Тем не менее инс­тру­мент memory scrapper дос­тупен и для EFI.

Заключение

Мы уви­дели, что в RAM все дан­ные откры­ты и опи­сан­ная выше ата­ка поз­воля­ет обой­ти пол­ное шиф­рование дис­ка, да еще и на заб­локиро­ван­ном ком­пе! Ины­ми сло­вами, мы смог­ли ата­ковать реаль­но защищен­ный компь­ютер, который счи­тает­ся эта­лоном безопас­ности для стан­дар­тных рабочих мест боль­шинс­тва ком­паний, не говоря уже о прос­тых домаш­них машинах.

Нес­мотря на то что компь­юте­ры с клас­сичес­ким BIOS пос­тепен­но ухо­дят в прош­лое, в кор­поратив­ном сег­менте, где мас­совая замена тех­ники сто­ит боль­ших денег, по‑преж­нему мож­но встре­тить немало ста­рых сис­темни­ков, за которы­ми про­дол­жают работать сот­рудни­ки. Кро­ме того, сов­ремен­ные материн­ские пла­ты с EFI всё еще под­держи­вают ста­рый legacy-режим BIOS, что дела­ет их так­же уяз­вимыми к этой ата­ке.

ПОЛЕЗНЫЕ ССЫЛКИ:

ВКонтакте
OK
Telegram
WhatsApp
Viber

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *