Привет всем! Я тут новичок и в АЗМ-е я как свинья в помидорах ... Хотелось бв попросить чтоб Гуры по реверсированию \ Винды это прочли и высказали своё ИМХО. Но может кому-нить покажеться интересТным, и может кто помогёт? Проблема: Shatter. Поднятие привилегий локально на НТ \ ХР. Статей на эту тему было много ... все до которых я дотянулся я прочитал. 8) Смысл в двух словах: 1. Ищем окно работающее под nt_system etc. 2. Забрасываем в заголовок окна шеллкод. (SetWindowTextW + шеллкод - для этого не надо иметь НИКАКИХ привилегий) 3. Посылаем окну WM_TIMER с адресом возврата на шеллкод. 4. Шеллкод выполняеться с правами окна. Я собственно накатал программу автоматизирующую данный процесс. 1. Определяем адреса WInExec \ ExitProcess. 2. Формируем листинг. 3. Авто-Компилируем (NASM) + убиваем нули ... 4. Читаем в буффер + добавляем 10 Кб nop-ов. 5. Находим окно + Забрасываем в заголовок окна шеллкод. 6. Брутфорсим посылая WM_TIMER увеличивая параметр (адрес приземления на НОП-ы на 5к (т.е. 1/2 от шеллкода) Рискуем попасть на системкраш ... Но это работает! 7. Код выполняеться. 8). Теперь собственно проблема: Начиная с Сервис паков SP NT4.0 6а \ w2kSP 4.0 \ XP 2.0 \ 1.0 (вроде тоже). Это не работает. (До - работает на "ура" 8). На блокноте в частности ...) WM_TIMER проходит - не 0, но прыжка нету 8-(. Шеллкод не выполняетсья. Гипотезы и размышления. 1. WM_TIMER обязан работать. Или приложения поздыхают (?). 2. По-умолчанию оконная процедура должна его обрабатывать (?). Мой друг по-моеё просьбе это дело исследовал ... и пришёл к выводу что прохождение WM_TIMER-а зависит от второго параметра - к. должен соответствовать ID таймера ... ... я пасс ... ВОПРОС: может ли кто проверить КАКИМ ОБРАЗОМ реализована защита в этих сервис паках? Возможно ли это, или я где-то неправ? Прав ли мой друг? Если да - возможен ли брутфорс подбора ID Таймера? В принципе - если я прав (что маловероятно) - то это local_xploit 8). Помогите пожалуйста! Заранее огромное спасибо!
Скорее всего, что винда перед вызовом TIMERPROC (address of timer procedure) проверяет, создавала ли программа этот самый таймер (SetTimer), а блокнот имхо не обязан его создавать (раньше видимо не проверяла)
Даж более того, ядро проверяет совпадает ли address of timer procedure с тем, который был указан в SetTimer, т.ч. не судьба