Новые стандарты 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????
К чему всё это?
К тому, что в условиях современных серверных технологий нельзя полагаться на «физическое присутствие» как защиту от автоматического исполнения кода.
Автор: amarao