Разработчики Ksplice, системы обновления Linux-ядра без перезагрузки, опубликовали любопытный документ, в котором показана техника имплантирования вируса в аппаратную часть компьютера. Подобный код в последующем будет очень сложно обнаружить и практически невозможно истребить (не поможет даже полная переустановка системы с нуля). Исследование содержит примеры работоспособного кода.

Чтобы произвести подобную атаку, нужно сначала разобраться с начальной загрузкой компьютера. Во время запуска компьютера, первым этапом загрузки является прохождение BIOS'ом самопроверки (POST) и запуск ROM-кода различных устройств компьютера. Эти ROM-программы позволяют правильно инициализировать устройство или позволить BIOS'у общаться с железом, про которое он ничего не знает (например, данная функция позволяет BIOS'у загрузить ОС с жёсткого диска, подключенного к SCSI адаптеру). Для этого у BIOS есть таблица прерываний, которую можно переопределить.

Суть атаки заключается в том, что атакующий записывает в ROM-память заданной платы компьютера вредоносный код, который производит следующие действия: он переопределяет прерывание, ответственное за чтение данных с жёсткого диска компьютера, что позволяет внедрить свой код в загружаемое Linux-ядро, путём переписывания части его кода. Поскольку ядро Linux является крайне сложной хорошо упакованной программой, нельзя переписать случайный кусок кода, ибо это может привести к неработоспособности системы. Поэтому зловредный код переписывает достаточно длинное сообщение об ошибке внутри ядра, при этом заменяя точку вхождения в ядро.

Этот зловредный код в свою очередь устанавливает в ядре Linux модуль для обработки обычно неиспользуемого 163 протокола и изменяет точку вхождения в ядро, чтобы модуль автоматически запустился. Затем ядро продолжает обычную загрузку. Нужно отметить, что все эти операции происходят совершенно незаметно для пользователя. Данный модуль заставляет Linux отвечать на запросы при обращении по 163 протоколу, запуская нужное приложение, например, /bin/bash с правами суперпользователя.

Чрезвычайная опасность этой атаки состоит в том, что найти зловредный код достаточно сложно, как и сложно отследить паразитный трафик, ведь он не принадлежит ни одному из популярных сетевых протоколов (ARP, TCP, UDP, ICMP). Другая не меньшая опасность состоит в том, что многие компоненты компьютера содержат так называемый firmware - ROM-программу, которую можно перезаписать, что позволит перевести обычный вирус в разряд необнаруживаемых.

Хотя данное исследование нацелено на взлом ядра Linux, описанную технику гораздо проще реализовать против других операционных систем с менее изменчивым кодом, например, ядро Windows обычно не меняется на протяжении минимум трёх лёт, тогда как новые версии Linux выходят почти каждые три месяца.

Источник: http://www.opennet.ru/opennews/art.shtml?num=28481