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, чтобы злоумышленник не смог поменять режим безопасности без вашего ведома.

Наш канал защищен лучше, чем ваш компьютер!

Но доступ к знаниям открыт для всех

Получите root-права на безопасность — подпишитесь