убийство часового КРИС КАСПЕРСКИ, АКА МЫЩЪХ Спецвыпуск: Хакер, номер #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, |