0 кольцо защиты
кольцо защиты в Win XP (2000), но не исполь-
зуя банальную загрузку драйвера, а например
из сеанса с правами "гость", добраться до 0
кольца.
У кого есть информация о проникновении на 0
кольцо защиты в Win XP (2000), но не исполь-
зуя банальную загрузку драйвера, а например
из сеанса с правами "гость", добраться до 0
кольца.
Если бы такое было возможно, то вся система защиты XP не стоила бы и выеденного гроша
P.S. но вообще я не знаю, возможно такое или нет :)
У кого есть информация о проникновении на 0
кольцо защиты в Win XP (2000), но не исполь-
зуя банальную загрузку драйвера, а например
из сеанса с правами "гость", добраться до 0
кольца.
Не думаю, что ты как гость в ХР с можешь вообще куда-нибудь залазть! Тебе прийдется систему хакнуть, чтобы доступ получить!:)
программировать HDD ч/з порты, а вот
проникнуть даже не на 0 кольцо, а изменить
хоть 1 байтик по адесу выше 80000000h из
3 кольца (что вприципе в XP равносильно
проникновению на 0 уровень) этого я еще пока
не добился с правами "гостя".
Залезть можно куда хочеш, если можеш
программировать HDD ч/з порты, а вот
проникнуть даже не на 0 кольцо, а изменить
хоть 1 байтик по адесу выше 80000000h из
3 кольца (что вприципе в XP равносильно
проникновению на 0 уровень) этого я еще пока
не добился с правами "гостя".
Если не сложно, то нельзя ли написать как ты получаешь доступ к портам, поскольку, насколько я сам знаю, чтобы получить доступ к портам из 3-го кольца нужно изменять карту доступа IO Permission Bitmap - иначе все порты блокированы. Единственный способ изменения карты - через недокументированные функции (но перед их вызовом, надо указатель на процесс получить)
void Ke386SetIoAccessMap(int, IOPM *);
void Ke386QueryIoAccessMap(int, IOPM *);
void Ke386IoSetAccessProcess(PEPROCESS, int);
Вобщем, тебе надо искать по недокументированным функциям, официально на 0 уровень из 3 получить доступ нельзя.
Залезть можно куда хочеш, если можеш
программировать HDD ч/з порты, а вот
проникнуть даже не на 0 кольцо, а изменить
хоть 1 байтик по адесу выше 80000000h из
3 кольца (что вприципе в XP равносильно
проникновению на 0 уровень) этого я еще пока
не добился с правами "гостя".
Кстати, насколько я знаю НТФС (следует признать, что я не спец) - программирование винта через порты - для доступа к файлам - тоже не очень очевидная вещь. Придется все процедуры поисков файла переписывать.
Кстати, насколько я знаю НТФС (следует признать, что я не спец) - программирование винта через порты - для доступа к файлам - тоже не очень очевидная вещь. Придется все процедуры поисков файла переписывать.
Переписывать процедуры поиска не надо
вспомни NTFSDOS (ей нужны только ntoskrn.exe и
ntfs.sys, а вот файл слежения (log) NTFS, куда собствено говоря записываются все действия
угодные администратору найти и обнулить можно,
даже не сильно вдаваясь в подробности NTFS.
Что касается битовой карты разрешения, то
спасибо - проверю.
Переписывать процедуры поиска не надо
вспомни NTFSDOS (ей нужны только ntoskrn.exe и
ntfs.sys, а вот файл слежения (log) NTFS, куда собствено говоря записываются все действия
угодные администратору найти и обнулить можно,
даже не сильно вдаваясь в подробности NTFS.
Что касается битовой карты разрешения, то
спасибо - проверю.
так принадлежность файлов, вроде, как атрибуты файла записываются - как в юниксе и если у тебя нет прав доступа, то средствами винды не получится их прочитать. Через прямое управление винтом - через контроллер, я думаю можно, но фактически надо переписывать процедуры НТФСДОС.
так принадлежность файлов, вроде, как атрибуты файла записываются - как в юниксе и если у тебя нет прав доступа, то средствами винды не получится их прочитать. Через прямое управление винтом - через контроллер, я думаю можно, но фактически надо переписывать процедуры НТФСДОС.
Если ты имеешь права администратора, то я думаю
это не проблема. Да кстати [QUOTE] xelos
сейчас в и-нете появились статьи о Shatter Attacks, т.е. когда есть программа которая
выполняется с большими привелегиями (например
антивирус), и передавая ее окну WM_..., можно
повысить права своей программы. Да еще, по
поводу NTFSDOS, я не считаю последнюю панацеей,
поскольку она написана просто ужасно, и взаимо-
действие с DPMI у нее отвратительное (пришлось
запускать 4-ю версию без сер. номера), уж
лучше переписать заново, чем использовать.
Если ты имеешь права администратора, то я думаю
это не проблема. Да кстати [QUOTE] xelos
сейчас в и-нете появились статьи о Shatter Attacks, т.е. когда есть программа которая
выполняется с большими привелегиями (например
антивирус), и передавая ее окну WM_..., можно
повысить права своей программы. Да еще, по
поводу NTFSDOS, я не считаю последнюю панацеей,
поскольку она написана просто ужасно, и взаимо-
действие с DPMI у нее отвратительное (пришлось
запускать 4-ю версию без сер. номера), уж
лучше переписать заново, чем использовать.
С правами администратора доступ к файлам неограничен - я про то, как с правами гостя читать закрытые файлы.
А насчет НТФСДОС много сказать не могу, т.к. я ее достаточно поверхностно знаю - только общую структуру и организацию.
пишем приложение DPMI (int 31h), создаем
дескриптор с базой допустим 80000000h(надо
подбирать),загружаем этот дескриптор в ES.
Потом вызываем sysenter или int 2Eh, а
если его (int 2Eh) просмотреть soft-ice,
то видно что он не меняя селекторы ES и DS
пытается скопировать параметры в новый стек
коммандой movsb (ds:[esi]->es:[edi]), а
ведь база уже не 000000000h => он копирует наши
параметры практически куда угодно (хоть
само int 2Eh меняй), а поскольку это на кольце 0
исключения не возникает. Сам не могу проверить, т.к. у меня сейчас комп. на котором кроме 98
ничего не пойдет (я в отпуске), если что получится
то оправляйте на e-mail [email]profi_2000@tut.by[/email]
Дя еще я на форуме wasm.ru тоже поднимал этот
вопрос.
Всё правильно, только обработчик int 2Eh будет писать по другому физическому адресу. Тогда надо ещё будет каким-нибудь образом прочитать каталог и таблицы страниц процесса system, куда естесственно доступа нет.
А под ХР напрямую в память писать нельзя каким-нибудь образом? или все через Memory Manager только делается?
Всё правильно, только обработчик int 2Eh будет писать по другому физическому адресу. Тогда надо ещё будет каким-нибудь образом прочитать каталог и таблицы страниц процесса system, куда естесственно доступа нет.
Как нет, CR3 в ring 0 = 80039000h,но
в программе он будет другим, а линейные
адреса ntoskrnl.exe остануться те же, да я как-то
писал программу которая ищет CR3, причем
независима от расположения в памяти, и опрерационной системы. Просто досканальное знание CPU. Причем вариант с TLB (если вы знаете о чем
идет речь) не подходит, т.к. уж очень разные эти
TLB от процессора к процессору. А вот если прицепиться к сегменту стека, и биту доступ совершен, при этом перехватив прерывания по
отсутсвию станицы в памяти, то CR3 можно вычислить.
Если кого заинтерисует тема поиска линейного
адреса CR3 (в самом раг. хранится физический),
то я выложу исходник.
А по другому адресу он писать не будет.
А чему равен адрес обработчика int 2Eh в сеансе DOS? По моему он не равен тому же значению для Windows, хотя я могу ошибаться.
Ответ такой DOS в NT эмулируестся, а не существует. Я предлагаю, даже настаиваю
на использовании sysenter, а не int 2Eh
(мы говорим об XP). А селектор, смещение
обработчика sysenter - записывается в
модельно-специфич. регистры, и я не думаю
что их меняют при переходе в V86. Да кстати
ведь при использовать DPMI вы уже как бы не в DOSе