Pull to refresh

Уязвимость «физического присутствия» в UEFI

Information Security *

Новые стандарты UEFI предполагают, что физическое присутствие человека (оператора) позволит защититься от автоматизированных действий вредоносного ПО по модификации различного рода ключей (которыми проверяется валидность загружаемого ПО), заливки неправильных версий БИОСа и т.д.

Логика такая: разрешить эти действия (которые позволят загрузить что попало) только при физическом подтверждении с клавиатуры. Мол, ни один злобный вирус не сможет физически нажать кноку на клавиатуре для биоса.

Я сейчас даже не буду рассматривать вероятность взлома прошивок USB-устройств для отправки нужных комбинаций кнопок.

Я хочу поговорить о такой страшной вещи, как IPMI и iLO со встроенными KVM'ами. И о том, как легко обходится задача «физического присутствия» в современном серверном железе.

Итак, давайте взглянем на IPMI. Для примера я взял первую попавшуюся лабораторную машинку с IPMI на борту. Что он предоставляет?

1) Отдельный сетевой интерфейс на материнской плате.
2) Отдельный компьютер, питающийся от standby напряжения с блока питания, работающий независимо от основного.
3) Встроенные возможности по управлению питанием основного компьютера (power on, power off, reset)
4) IPMI (плата видеозахвата плюс виртуальные мышь и клавиатура, так же есть возможность подключить виртуальные floppy и оптические диски).

Всё это делалось для благих целей. Чтобы сисадмин мог посмотреть на работу компьютера так, как будто он подключил монитор и клавиатуру, но не сходя со своего рабочего места. Просто заходишь на IP-адрес IPMI устройства, тыкаешь «remote console» — и оно на экране. Включая, заметим, менюшку биоса.

Так как IPMI — это обычный (хоть и хиленький) компьютер, то у него есть свой ssh.

Зайдём туда.

На одной модели мы увидим довольно скудное зрелище из текстового меню с опциями.
А вот на втором…
BusyBox v1.1.3 (2009.08.12-22:19+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

 # uname -a
Linux SMC003048F209F5 2.6.24-ami #1 Wed Aug 12 15:18:58 PDT 2009 armv5tejl unknown



Да-да, вы правильно поняли. Обычный линукс. С работающими командами, каталогом, куда можно скопировать свой исполняемые файлы и запустить их.

Но там же пароль!

В силу устройства IPMI им можно управлять с хоста:

ipmitool -I open user set password 2 ADMIN mynewpass


Ну и прочие вещи, типа warm reboot, cold reboot и т.д. В принципе, есть даже возможность загрузить свою версию фирмвари.

Сценарий атаки


1. Через дырку в похапе и локальный right escalation вредоносное ПО получает root'а.
2. ПО обнаруживает и подгружает модули под хардварную конфигурацию сервера.
3. ПО устанавливает сетевое соединение с IPMI (адрес можно посмотреть) или просто подменяет фирмваре и перезапускает IPMI
4. ПО в IPMI слушает POST-коды с материнской платы и ждёт перезагрузки.
5. При перезагрузке в клавиатуру отсылаются нажатия (магию OCR'а картинки мы пока исключаем, так же как и людское участие во взломе).
6. Посредством нажатий (заметим, нажатия выбираются под конкретную модель БИОСа и скачиваются в виде модулей на этапе проникновения) устанавливается в качестве доверенного ключ к bluepill (rootkit гипервизору).
7. Малваря полностью удаляет все первичные следы (себя в IPMI, себя в виде PHP и эксплоита для ядра)
8. PROFIT????

К чему всё это?

К тому, что в условиях современных серверных технологий нельзя полагаться на «физическое присутствие» как защиту от автоматического исполнения кода.
Tags:
Hubs:
Total votes 50: ↑44 and ↓6 +38
Views 7.9K
Comments Comments 52