DMA-атака через порт USB-C и Thunderbolt 3

DMA-атака через порт USB-C и Thunderbolt 3

В целях демонстрации атаки на мой MacBook Air на конференции я использовал Sonnet Echo ExpressCard Thunderbolt 2 подсоединенный к адаптеру ExpressCard совместно с PCILeech ExpressCard.

Автор: Ulf Frisk

Недавно я приобрел мини-компьютер Intel NUC Skull Canyon, у которого есть порт USB-C с контроллером Thunderbolt 3. Thunderbolt интересен тем, что поддерживает PCI Express с возможностью прямого доступа к памяти (Direct Memory Access; DMA). Ранее на конференции DEFCON в своем докладе под названием «Direct Memory Attack the Kernel» я уже рассказывал о DMA-атаках через интерфейс Thunderbolt 2.

В целях демонстрации атаки на мой MacBook Air на конференции я использовал Sonnet Echo ExpressCard Thunderbolt 2 подсоединенный к адаптеру ExpressCard совместно с PCILeech ExpressCard.

Кроме того, я подсоединил Thunderbolt 3 к адаптеру Thunderbolt 2 через переходник Startech, и мне захотелось попробовать эту связку в сочетании с мини-компьютером NUC, чтобы понять, возможна ли реализация DMA-атак, или Thunderbolt защищен. Схема установки выглядит следующим образом: мини-компьютер NUC -> Startech TB3 подсоединен к адаптеру TB2 -> Sonnet TB2 подсоединен к адаптеру ExpressCard -> PCILeech ExpressCard.

Уровень безопасности Thunderbolt настраивается через BIOS. Настройка по умолчанию - Unique ID. Другие возможные уровни безопасности: Legacy Mode, One time saved Key и DP++ only. Режим Legacy представляет для нас особый интерес, когда речь заходит о DMA-атаке.


Рисунок 1: Настройка уровня безопасности Thunderbolt (значение по умолчанию - Unique ID)

Условия работы при уровне безопасности Unique ID (стандартный)

Невозможно получить доступ к памяти перед началом загрузки операционной системы, когда компьютер находится в режиме BIOS/UEFI. Устройство PCILeech не инициализировано.

Невозможно получить доступ к памяти в Linux. Ubuntu определяет, что адаптер Sonnet Echo ExpressCard подсоединен, но возникает большое количество ошибок. Возможно, из-за отсутствия драйверов.


Рисунок 2: Ошибки, возникающие при подсоединении адаптера Sonnet Echo ExpressCard к адаптеру Startech

В режиме Unique ID невозможно получить доступ к памяти в стандартной версии Windows 10. Вначале Windows 10 никак не реагирует на подсоединенные устройства Thunderbolt. Затем устройства были отсоединены и установлены лицензионные драйвера от Intel. При подсоединении адаптера Startech Thunderbolt 3 к адаптеру Thunderbolt 2 ничего нового не произошло.

При подсоединении Sonnet Echo ExpressCard Thunderbolt 2 к адаптеру ExpressCard в Windows появилось сообщение с вопросом о разрешении адаптера (для чего требуются административные привилегии). Подключение Thunderbolt 3 к адаптеру Thunderbolt 2 через устройство Startech произошло наиболее гладко, чего не скажешь об адаптере Sonnet, который требует одобрения администратора.


Рисунок 3: Сообщение для одобрения адаптера Sonnet

После одобрения Sonnet Echo ExpressCard в адаптер Sonnet было вставлено устройство PCILeech. В ОС Windows не последовало никакой реакции, но все заработало. Скорее всего, если уровень безопасности выставлен в Unique ID и одобрен адаптер Sonnet, то вы находитесь под угрозой DMA-атак, даже если устройство PCILeech до этого момента никогда не подсоединялось к вашей системе.

С другой стороны, если вы только что запустили Windows 10 и никогда не подсоединяли адаптер PCI Express, так же как и Sonnet Echo ExpressCard, то должны находиться в безопасности.

Условия работы при уровне безопасности Legacy

Как и в режиме Unique ID невозможно получить доступ к памяти перед началом загрузки ОС (когда компьютер находится в режиме BIOS/UEFI). Устройство PCILeech инициализировано не было.

Выгрузка памяти через порт Thunderbolt 3 при заблокированной системе Ubuntu 16.04 LTS работает прекрасно, учитывая, что уровень безопасности установлен как Legacy. В этом случае просто вставляете устройство PCILeech через адаптеры в порт Thunderbolt 3 в мини-компьютере NUC. Проще не бывает. К тому же, на целевой системе не требуется установка драйверов. В примере ниже адаптеры и устройство PCILeech были подсоединены в системе Linux в самый первый раз.


Рисунок 4: Выгрузка 32 Гб памяти через порт USB-C/Thunderbolt 3 в системе Ubuntu 16.04 LTS

В Windows 10 к памяти также есть доступ в режиме Legacy. Достаточно вставить адаптеры и устройство PCILeech. На целевой системе не требуется установка драйверов (в частности, драйверов для Intel Thunderbolt)


Рисунок 5: Организация шелла через порт Thunderbolt 3 к системе Windows 10

Другие режимы безопасности

Установка оказалась не совместима с остальными двумя режимами безопасности.

Не все коннекторы USB-C поддерживают Thunderbolt 3.

Заключение

Стандартные настройки безопасности Thunderbolt допустимы до тех пор, пока вы не разрешите подсоединение Thunderbolt к адаптеру PCI Express (например, Sonnet Echo ExpressCard).

Кроме того, не помешает установка пароля на BIOS, чтобы злоумышленник не смог поменять режим безопасности без вашего ведома.

Если вам нравится играть в опасную игру, присоединитесь к нам - мы научим вас правилам!

Подписаться