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

убийство часового

КРИС КАСПЕРСКИ, АКА МЫЩЪХ

Спецвыпуск: Хакер, номер #072, стр. 072-072-3


mov eax, cr0 ; грузим управляющий регистр cr0 в регистр eax

and eax, 0FFFEFFFFh; сбрасываем бит WP, запрещающий запись

mov cr0, eax ; обновляем управляющий регистр cr0

Листинг 2. Код, включающий защиту ядра

mov eax, cr0 ; грузим управляющий регистр cr0 в регистр eax

or eax, 10000h ; сбрасываем бит WP, запрещающий запись

mov cr0, eax ; обновляем управляющий регистр cr0

«Политически корректная» программа должна не просто отключать/включать

защиту от записи, а запоминать текущее состояние бита WP перед его изменением, а затем восстанавливать его обратно «как было», иначе можно непроизвольно включить защиту в самый неподходящий момент, серьезно навредив вирусу или rootlit'у.

Запись в физическую память осуществляется сложнее (к тому же, необходимо предварительно найти код самого ядра, что можно сделать, например, поиском сигнатуры модифицируемой функции в PhysicalMemory, при этом сама функция должна присутствовать в памяти, а не валяться в страничном файле, то есть прежде чем модифицировать функцию, ее необходимо вызывать хотя бы с фиктивными аргументами):

Листинг 3. Открытие псевдоустройства PhysicalMemory

// разные переменные

NTSTATUS ntS; HANDLE Section; OBJECT_ATTRIBUTES ObAttributes;

INIT_UNICODE(ObString, L"\\Device\\PhysicalMemory");

// инициализация атрибутов

InitializeObjectAttributes(&ObAttributes, &ObString,

OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE, NULL, NULL);

// открываем секцию PhysicalMemory

ntS = NtOpenSection(&Section, SECTION_MAP_READ|SECTION_MAP_WRITE, &ObAttributes);

В частности, soft-ice работает, используя первый способ, большинство антивирусов, брандмауэров и rootkit'ов — второй и третий. Четвертый способ в основном встречается в rootkit'ах (и программах, предназначенных для борьбы с ними, типа SDTRestore). Пятый способ обычно используется для превращения 180-дневной версии Windows в «лицензионную».

Первое наступление на rootkit'ы Microsoft предприняла в Windows 2003 Server SP1, закрыв доступ к PhysicalMemory не только администратору, но даже приложениям с привилегиями SYSTEM! Следующий шаг, предпринятый уже в Висте — защита ядра цифровой подписью, предотвращающей его модификацию на диске. Во всяком случае, теоретически. На практике же хакеры модифицируют ядро вместе с механизмом проверки цифровой подписи, отламывая последний за ненадобностью.

Предпринятые меры не слишком-то усилили защищенность системы, да и не могли ее усилить, поскольку закрытие всех лазеек привело бы к неработоспособности огромного количества легальных программ, на что Microsoft пойти не могла, поэтому даже 32-битная редакция Висты по-прежнему остается незащищенной.

[атака на ядро в 64-битных системах.]

Воспользовавшись появлением новых процессорных архитектур x86-64 (AMD) и IA64 (Intel), Microsoft перенесла на них свои системы: XP, Висту, Server 2003 и Server Longhorn, провозгласив новую политику модификации ядра — то есть, никакой модификации. Действуйте только через легальные средства или до свидания! В добавок к этому, Microsoft заблокировала загрузку драйверов без цифровой подписи, пообещав, что никакой неавторизованный код не сможет проникнуть на уровень ядра. Типа, никаких червей и rootkit'ов отныне не будет, спите спокойно! (Более подробно об этом рассказывают следующие официальные документы: http://download.microsoft.com/download/c/2/9/c2935f83-1a10-4e4a-a137-c1db829637f5/windowsvistasecuritywp.doc, http://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/KMCS_Walkthrough.doc,

Назад на стр. 072-072-2  Содержание  Вперед на стр. 072-072-4