21.05.2014

Использование метода «холодной» перезагрузки и других криминалистических техник в пентестах

image

Заканчивается рабочий день, и вы как можно скорее хотите покинуть свой офис. Весь день вы работали над отчетом и знаете, что его необходимо будет доделать утром. Вы заблокировали свой компьютер и думаете, что ваши данные в безопасности. Злоумышленники не смогут воспользоваться утилитой Ophcrack или самозагружаемым Linux-дистрибутивом, наподобие Kali, поскольку у вас установлен надежный пароль и зашифрован весь диск. Вы думаете, что все путем, однако вы ошибаетесь. Все чаще и чаще злоумышленники используют сочетание различных методов, включая новейшие криминалистические техники, чтобы добраться до вашей информации.

Автор: don

Заканчивается рабочий день, и вы как можно скорее хотите покинуть свой офис. Весь день вы работали над отчетом и знаете, что его необходимо будет доделать утром. Вы заблокировали свой компьютер и думаете, что ваши данные в безопасности. Злоумышленники не смогут воспользоваться утилитой Ophcrack или самозагружаемым Linux-дистрибутивом, наподобие Kali, поскольку у вас установлен надежный пароль и зашифрован весь диск. Вы думаете, что все путем, однако вы ошибаетесь. Все чаще и чаще злоумышленники используют сочетание различных методов, включая новейшие криминалистические техники, чтобы добраться до вашей информации.

На вашем компьютере существует отдельная область, содержащая конфиденциальную информацию, к которому злоумышленник будет не прочь прикоснуться своими руками, – это оперативная память. Система хранит всевозможную ценную информацию в памяти для того, чтобы до нее проще было добраться. Механизм полного шифрования диска должен хранить ключи, предназначенные для шифрования, где-то в оперативной памяти. Все то же самое справедливо и в случае ключей шифрования для Wi-Fi. Вот лишь небольшой список того, что хранится в оперативной памяти:

  • Секции реестра (registry hives) ОС Windows и, следовательно, секции System и SAM
  • Большинство буферов промежуточного хранения данных (clipboard)
  • Пароли многих приложений

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

Вводное слово

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

Однако существует несколько случаев, когда снимки памяти очень пригодились бы пентестеру. Рассмотрим такой сценарий: при проведении внутреннего расследования, пентестер получил доступ к машинам, находящимся снаружи системы предприятия. Клиент уверен, что специалист по безопасности не сможет использовать эти машины для доступа к системе. На машинах использовать полное шифрование диска, что делает невозможным использование Ophcrack и загрузку хешей. Любая из машин внутри системы также заблокирована. Однако клиент даже не догадывается, что опытный пентестер, которые знаком с некоторыми криминалистическими техниками, может получить содержимое оперативной памяти системы. В частности, существует две техники, которые можно использовать в этой ситуации: метод холодной перезагрузки и атака через Firewire.

Атака при помощи метода холодной перезагрузки

В начале 2008 года исследователи из Принстонского университета, а также организации, защищающей права и свободы личности в киберпространстве (Electronic Frontier Foundation) и компании Wind River Systems обнародовали документ озаглавленный «Lest We Remember: Cold Boot Attacks on Encryption Keys», где детально описан новый вид атак на работающие системы (live systems), целью которых является получение информации из оперативной памяти. Этот вид атак основан на получении информации, которая остается в оперативной памяти. Принято считать, что данные в оперативной памяти после выключения компьютера немедленно теряются.

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

При использовании этого метода относительно велика вероятность получить небольшие ошибки внутри снимка памяти, из-за чего его избегают использовать эксперты-криминалисты. Однако пентестеру не требуется образ памяти, соответствующий стандартам криминалистики. Даже 2% повреждений вполне допустимо, если ключи шифрования и база данных SAM находятся в целости и сохранности, что позволяет использовать этот метод (хотя и с некоторыми трудностями) для внутренних пентестов.

Авторы документа «Lest We Remember» разработали комплект утилит для реализации атаки методом холодной перезагрузки, который можно загрузить с сайта Принстонского университета по адресу https://citp.princeton.edu/research/memory/code/. Основная утилита - USB/PXE Imaging, которую можно загрузить как tar-архив. Кроме того, команда исследователей создала серию make-файлов для упрощения процесса компиляции. Плюс к каждому архиву прилагается документация. 32-битную версию следует компилировать в 32-битной системе (или виртуальной машине), а 64-битную, соответственно, в 64-битной системе (или виртуальной машине). Не забывайте использовать корректную версию для соответствующей целевой системы, поскольку 32-версия будет работать на 64-битной машине, но не будет захватывать полностью адресное пространство памяти, так как 32-версия не сможет обратиться к полному 64-битному диапазону памяти.

В результате компиляции получается файл с именем scraper.bin, представляющий собой самозагружаемую утилиту, которую можно скопировать на USB устройство. Поскольку USB устройство будет использовать также и для хранения образа памяти, рекомендуется использовать устройство объемом не менее 16 ГБ, учитывая тот факт, что на современных системах объем оперативной памяти от 4 до 8 ГБ. Скопируйте файл на USB устройство при помощи утилиты dd из-под пользователя root (в нашем случае, sdb – местонахождение устройства):

sudo dd if=scraper.bin of=/dev/sdb

Итак, USB устройство готово к использованию на целевой системе. В идеале у пентестера должно быть две флешки: на 8 ГБ с 32-битной версией утилиты и на 16 ГБ с 64-битной, чтобы быть готовым к работе с любыми целевыми системами. Плюс к этому, желательно иметь баллончик со сжатым воздухом. Целевая машина должна быть включена и заблокирована. Не имеет значения, авторизовался ли на ней пользователь или нет. Кроме того, на целевой машине должно присутствовать полное шифрование диска – в противном случае всю работу можно сделать при помощи дистрибутива Kali или Ophcrack более качественно и с меньшими трудозатратами.

Как только подходящая система найдена, пентестер (естественно, с разрешения клиента) начинает свою работу. Для начала следует подключить USB устройство, после чего пентестер может охладить оперативную память при помощи баллончика, держа его верх ногами и опрыскивая плату памяти. Поскольку в процессе заморозки на чипе появится слой инея, необходимо аккуратно опрыскивать память и стараться не попадать на остальные части материнской платы. На Рисунке 1 показана охлажденная память перед реализацией атаки.

Рисунок 1: Охлажденная память перед реализацией атаки по методу холодной перезагрузки

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

Во время загрузки машины с USB устройства, утилита автоматически сделает дамп памяти на устройство. На Рисунке 2 показан ход выполнения этого процесса.

Рисунок 2: Процесс создания дампа памяти

В зависимости от размера памяти и скорости USB-порта, процесс создания дампа может затянуться вплоть до нескольких часов при большом объеме памяти. Как только утилита завершила свою работу, система будет перезагружена. Пентестеру нужно просто вынуть USB устройство и вернуться к своей машине, где проходила компиляция утилиты для снятия дампа. Внутри архива есть утилита с именем USBdump, которая копирует каждый байт с USB устройства на машину пентестера. Сделать это можно при помощи следующей команды:

sudo ./usbdump /dev/sdb > memdump.img

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

Атака через Firewire

IEEE 1394 интерфейс, продвигаемый компанией Apple как FireWire, - высокоскоростной коммуникационный интерфейс, который первоначально задумывался в качестве замены SCSI. Главная составляющая FireWire – высокоскоростная передача информации. Именно поэтому данный протокол преимущественно используется для передачи больших объемов видео- и аудио-данных. Одна из фишек FireWire, которая позволяет передавать информацию на высокой скорости, - непосредственное обращение к памяти через DMA (Direct Memory Access), полностью минуя CPU. Подобный расклад хорош как для приложения по видеомонтажу при загрузке многочасовых фильмов с видеокамеры, так и для пентестера.

Прямой доступ памяти в FireWire позволяет пентестеру получить физический доступ к целевой машине для обхода парольной защиты в операционной системе путем перезаписи области памяти, содержащей функции по контролю за доступом. DMA также позволит пентестеру загрузить первые 4 ГБ оперативной памяти. Подобный вид доступа представляет серьезную уязвимость в спецификации интерфейса IEEE 1394, хотя у FireWire есть доступ только к первым 4 ГБ оперативной памяти и этот интерфейс может быть защищен антивирусом для предотвращения доступа через DMA. Из-за того, что FireWire функционирует в режиме hot-plug, целевая машина может быть заблокирована во время проведения атаки. Кроме того, большинство операционных систем пытаются ограничить доступ к DMA только для известных устройств (например, iPod’ов), но подобную защиту относительно легко обойти и подделать эти устройства.

Несмотря на то, что в основном подобные атаки направлены на FireWire, их можно реализовать на любом устройстве, которое использует подобную шину: ExpressCard (EC), PC Card и интерфейс Thunderbolt, распространенный на всех новый продуктах от компании Apple.

Карстен Мартмэнн-Мо (Carsten Maartmann-Moe) разработал утилиту Inception, заметно упрощающую эксплуатацию FireWire. Саму утилиту можно загрузить по адресу http://www.breaknenter.org/projects/inception/. Inception необходимо запускать на рабочей станции под управление операционной системы Linux. В этом случае Linux не может использоваться как виртуальная машина, поскольку там не реализован мост к FireWire (по уважительной причине). Кроме того, пентестеру необходимо установить пакеты Python 3 и libforensic1394 (последний пакет создал Фредди Уитерден (Freddie Witherden)). И, наконец, на обеих машинах (целевой и той, с которой производится атака) должен быть какой-либо из следующих интерфейсов: FireWire, EC, Thunderbolt, или PC Card.

Как только Inception установлен и подготовлен к работе, пентестеру нужно просто соединить свою и целевую машины при помощи кабеля FireWire и запустить следующую команду с root-привилегиями:

Incept

После запуска Inception доберется до областей памяти, которые управляют доступом, и «пропатчит» их, после чего мы сможем получить доступ к целевой машине без пароля. Естественно, в оперативной памяти целевой машины есть много полезной информации, и пентестер может сдампить первые 4 ГБ оперативной памяти при помощи следующей команды:

incept –d

Анализ дампа памяти

Сделать дамп памяти – полдела. После этого предстоит его проанализировать. К счастью, существует несколько утилит для решения этой задачи, однако лишь малая часть этих инструментов спроектирована с прицелом для использования во время пентеста, а большинство разработаны для криминалистов, которые используют эти утилиты для поиска запущенных процессов, вредоносов и скрытой информации. Криминалистический анализ оперативной памяти – относительно новая область, в особенности для 64-битных систем. Многие полезные и мощные инструменты все еще ограничены использованием только среди представителей органов правопорядка. Исходя из этого, существуют такие задачи, которые могут выполнять с риском для клиента.

Авторы статьи «The Lest We Remember» также создали утилиту для анализа снятых образов оперативной памяти. Поскольку в основном статья была посвящена извлечению ключей шифрования из памяти, их утилита под названием AESKeyFind искала развертки AES-ключи и извлекала эти ключи. Эту утилиту можно загрузить с того же самого сайта. В составе этой утилиты также идет make-файл для упрощения компиляции. После компиляции запуск производится при помощи следующей команды:

./aeskeyfind –v memoryimage.raw

После запуска AESKeyFind перейдет к поиску AES-ключей, а затем отобразить их на экране. AESKeyFind найдет и 128 и 256-битные ключи. Даже если образ испорчен или содержит ошибки, утилита сможет достать ключи. На Рисунке 3 показаны ключи, найденные AESKeyFind, в образе, который содержит огромное количество ошибок:

Рисунок 3: Перечень ключей, найденных в испорченном образе оперативной памяти

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

Еще одна полезная утилита – Volatility, которая представляет собой фреймворк с открытым исходным кодом для выполнения криминалистического анализа. У Volatility есть несколько модулей, позволяющих пентестеру извлекать полезную информацию о запущенных процессах и настройках целевой машины. Если образ не содержит ошибок, пентестер даже может извлечь Windows-хеши.

Первым шагом необходимо опознать архитектуру образа памяти. Для этого используется модуль imageinfo. На Рисунке 4 показаны результаты работы модуля imageinfo и профили памяти, опознанные Volatility.

Рисунок 4: При помощи модуля imageinfo определяется архитектура образа оперативной памяти

Получив эту информацию, пентестер может использовать дополнительные модули для поиска ветвей SAM и System, находящихся в реестре. Windows хранит реестр в оперативной памяти во время работы системы. Модуль hivelist можно использовать для того, чтобы найти местонахождение каждой из ветвей в памяти. На Рисунке 5 показаны результаты работы модуля hivelist с использованием информации о наиболее вероятном профиле, который был найден модулем imageinfo.

Рисунок 5: Найдено местонахождение ветвей System и SAM

Для работы с 32-битными системами в составе Volatility идет модуль hashdump, который может автоматически извлекать хеши паролей, если этому модули передать адреса ветвей SAM и System. К сожалению, этот модуль не работает с 64-битными системами, тем самым ограничивая свою полезность. Тем не менее, утилита идет с открытым исходным кодом, и нет ни одной причины, чтобы этот модуль не был разработан. Кроме того, технически возможно извлечение ветвей SAM и System из образа памяти, как только опознано их местонахождение, а затем использовать другие утилиты для извлечения хешей паролей.

Заключение

У Security Response Center компании Microsoft есть десять непреложных правил безопасности. Правило 3 гласит: «Если злоумышленник получил неограниченный физический доступ к вашей системе, эта система больше не принадлежит вам». Многие клиенты уверены, что шифрование всего диска и стойкие пароли защитят их информацию даже в случае, если злоумышленник получил физический доступ к системе. Однако они не учитывают опасность, которая таит в себе оперативная память. В оперативной памяти хранится достаточное количество информации, используя которую пентестер может получить доступ к конфиденциальным данным или даже доступ ко внутренней сети. Подобная проблема никогда не принималась во внимание, поскольку не было практического способа получения образа памяти со стороны внешнего источника. Однако атака методом холодной перезагрузки и атака через Firewire делают возможным не только получение доступа к памяти, но и получение доступа к секретным ключам.

Ссылки

  • Dieterle, D. (2011). Memory Forensics: How to Pull Passwords from Memory Dump. Cyber Arms – Computer Security. Retrieved 2013-11-18.
  • Halderman, J. Alex; Schoen, Seth; Heninger, Nadia; Clarkson, William; Paul, William; Calandrino, Joseph A; Feldman, Ariel J.; Appelbaum, Jacob et al. (2008-02-21). Lest We Remember: Cold Boot Attacks on Encryption Keys. Princeton University. Retrieved 2013-11-18.
  • Maartmann-Moe (Last update 2013). Inception. Available at http://www.breaknenter.org/projects/inception/. Accessed 2013-11-18.
comments powered by Disqus