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