- [Digital Virus Labs #11] - [Page 26] - Влазим в ring0 под WinNT4 - WinNT5 (c) by Voodoo/SMF Приветствую тебя, уважаемый читатель. Бродя по извилинам всемирного разума, я нашел то, что уже давно искал. А искал я лазейку в ring0 под Windows NT. До недавних пор я считал, что попасть в ring0 под НТ возможно лишь написав SYS драйвер. Такой способ был предложен в 29a#5 [1]. Этот способ не очень подходит для звирей. Однако это вполне законный способ. Как и следовало ожидать, есть и незаконные способы вылезть в ring0. О нем я узнал здесь [2]. Суть заключается в открытии объекта по имени "\Device\PhysicalMemory" c помощью NtOpenSection. Открыв на RW, мы получаем доступ ко всей физической памяти. Далее мы получаем физический адрес GDT из GDTR. Открываем GDT в нашем виртуальном адресном пространстве. Находим неиспользуемый дескриптор. Описываем свой callgate. Вызываем наш callgate и мы в ring0. Попали мы в ring0, что дальше? Самое простое это устроить разнос флэшу, чмосу, винту и пр. Гораздо интереснее поселиться в ring0. Чтоб там жить, нужна связь с внешним миром. В качестве такой связи может служить NtCreateFile. Перехватив это функцию мы сможем фильтровать весь file I/O. При этом с файлами можно работать используя ZwCreateFile, ZwReadFile, ZwWriteFile. Параметры функции NtCreateFile можно посмотреть здесь [3]. В качестве примера написан R0RES.bat. Это резидентная программа, которая перехватывает NtCreateFile и бибчит при каждом обращении к файлам. Записывается она в начало физической памяти. Там НТя похоже, хранит таблицу векторов риал мода. Этот вид резидентности очень напоминает добрый DOS. Я думаю, уважаемый читатель, не за горами время win32&Ring0. НТя и ring0 - непаханое поле. Если в тебе, уважаемый читатель, есть дух исследователя + знание Pmode, то думаю это поле для тебя. Я надеюсь, что эта статья станет той искрой, из которой возгориться пламя. Что касается исходника. Написан на MASMe. В зависимости от операционки следует выставить OSVER (NT4 or NT5). PS. Да! Самое главное сказать забыл: все это работает лишь с админовскими правами. ;( И есче, прога заточена лишь для NT4 SP4 и NT2k ver 5.00.2195. В других версиях может появляться синий экран из-за отличия адреса функции NtCreateFile. Дополнительные источники информации: [1]: 29a-5.001 [2]: members.nbci.com/_XOOM/EliCZ/index.htm [3]: www.mp.dpt.ustu.ru/OSI/Literatura/www.osr.com/insider/1996/native.htm