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

Discussion in 'Статьи' started by GoodGoogle, 1 Sep 2012.

  1. GoodGoogle

    GoodGoogle Moderator

    Joined:
    5 Aug 2011
    Messages:
    1,160
    Likes Received:
    366
    Reputations:
    226
    [​IMG]

    Новые стандарты 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????

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

    К тому, что в условиях современных серверных технологий нельзя полагаться на «физическое присутствие» как защиту от автоматического исполнения кода.

    http://habrahabr.ru​