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