Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #95, НОЯБРЬ 2006 г.

Зверский взлом Windows Vista

Крис Касперски

Хакер, номер #095, стр. 095-068-2


Технология обхода цифровой подписи драйверов актуальна только для 64-битных версий Windows (в 32-битных загрузить неподписанный драйвер можно и так), а механизмы аппаратной виртуализации никак не связаны с конкретной осью и замечательно работают на Linux, BSD, Mac OS и т.д. (разумеется, при поддержке со стороны процессора). Любая ось, позволяющая хакеру пробиться на уровень ядра, может быть атакована. Таким образом, Голубая Пилюля состоит из двух компонентов, лишь один из которых по-настоящему «голубой». Он-то и отвечает за погружение операционной системы в виртуальный мир. Другой компонент - независимая «затравка», специально спроектированная для обхода защиты 64-битных версий Windows. Она забрасывает (точнее, сбрасывает) на ядерный уровень любую полезную нагрузку, в роли которой вполне может выступать и обычный rootkit.

Обход цифровой подписи

Механизм обхода цифровой подписи, предложенный Жанной, основан на модификации файла подкачки на секторном уровне (назовем его page file attack). Сама атака состоит из шести этапов:

1. Находим в каталоге /WINNT/System32/Drives редко используемый драйвер (например: NULL.SYS), считываем его содержимое и выделяем уникальную последовательность байт (сигнатуру), позволяющую однозначно идентифицировать его. Сигнатура должна находиться в ветке IRP_MJ_DEVICE_CONTROL процедуры DeviceDispatcher (адрес последней легко определить путем дизассемблирования драйвера), причем она не имеет права пересекать границы страницы (в файле подкачки соседние страницы не всегда оказываются рядом друг с другом). То есть должно выполняться условие: (virtual_address_of_signature % 1000h) + sizeof(virtual_address_of_signature) < 1000h.

2. Запускаем программу memory-eater, «съедающую» всю доступную память (например путем вызова API-функции VirtualAlloc) и вынуждающую операционную систему свопиться на диск, вытесняя в том числе и ядерные компоненты. Внимание! Если параметр DisablePagingExecutive, находящийся в следующей ветке реестра HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\MemoryManagement, равен 1 (по умолчанию - 0), ядерные компоненты вытесняться не будут! Изменения вступают в силу только после перезагрузки.

3. Открываем устройство \\.\C: (логический диск) или \\.\PHYSICALDRIVE0» (физический диск) API-функцией CreateFile и читаем/пишем на секторном уровне API-функциями ReadFile/WriteFile соответственно. Также можно воспользоваться хорошо документированным интерфейсом SPTI, позволяющим передавать диску SCSI-команды через API-функцию DeviceIoControl, за что отвечает IOCTL-код IOCTL_SCSI_PASS_THROUGH_DIRECT (4D014h). Ось автоматически транслирует команды pseudo-SCSI в native-команды конкретного накопителя (например: IDE HDD). Два недокументированных IOCTL-кода IOCTL_IDE_PASS_THROUGH и SCSIOP_ATA_PASSTHROUGH позволяют передать IDE-накопителям команды native-ATA, что дает над ними неограниченную власть, но ухудшает совместимость (что если у жертвы установлен SCSI-диск?). Все вышеупомянутые интерфейсы требуют администраторских прав, которые не всегда у нас есть. Но ASPI-интерфейс, разработанный компанией Adaptec, не отягощен такими ограничениями! И хотя корректно установленный ASPI-драйвер (кстати говоря, исключенный из штатной поставки Windows много лет назад) дает доступ только к ATAPI-устройствам (таким как CD, DVD), достаточно часто в этот список попадают и жесткие диски, то есть атаку (теоретически) можно реализовать даже без администраторских прав! Если ASPI-драйвер на целевой машине не установлен, rootkit должен либо установить его самостоятельно (кстати, сам драйвер подписан и предоставляется бесплатно), либо поискать другие драйверы, установленные приложениями, работающими с HDD-, CD- или DVD-дисками на низком уровне (дисковые редакторы, копировщики защищенных дисков, программы для прожига CD/DVD). Многие из них позволяют манипулировать жесткими дисками, не требуя прав администратора (подробнее обо всем этом можно прочитать в моей книге «Техника защиты лазерных дисков от копирования», черновая версия которой находится на ftp://nezumi.org.ru).

Назад на стр. 095-068-1  Содержание  Вперед на стр. 095-068-3