информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Сетевые кракеры и правда о деле ЛевинаSpanning Tree Protocol: недокументированное применениеАтака на Internet
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[Win32 hack] Ну, да конечно!!! 19.08.02 03:18  Число просмотров: 3777
Автор: Biasha <Бяша> Статус: Member
<"чистая" ссылка>
Сразу: у меня ХР про ру.

> Долго я голову ломал над этом багом, и вот что надумал. Не
> надо никаких интерактивных сервисов, наша цель -
> winlogon'овое окно "NetDDE Agent" (по крайней мере, в w2k),
> находящееся в десктопе default.

Хе. Действительно :)
Это гораздо веселее. Хотя и интерактивных сервисов хватает с головой.
У меня сейчас (не просто интерактивных, а с окнами, запущены - всё как надо): PGP, NU2002, AtGuard. Наверняка и антивирусы грешат, у меня онлайнового не стоит, так что не знаю. Могу прогу дать свою, которая выдаёт грешников, если кому интересно.

> 1. WM_COPYDATA копирует туда что хочешь.

Да, я никак не мог вспомнить название сообщения. Мне казалось WM_DATA..., я даже решил, что глючу.
Сообщение замечательное, но, к сожалению, память после его обработки очищается... :(
If the receiving application must access the data after SendMessage returns, it must copy the data into a local buffer.

> Эмпирически (айсом
> ;) узнавал, куда, и

У меня:
Если данных не много (1Кб ещё немного) - в стеке. Если много (16Кб - уже много) - специально отдельно выделяется регион, освобождается после обработки :(.

> бомбил winlogon коллами на ту страницу
> с интервалами в 10б.

10б?!!! Не Кб? Чё так мелко то?

> Однако вылетает.

Как натыкается на валидный код, который в конце приводит к ExitProcess - так и вылетает. Правда не ясно, где ты его в стеке нашёл... Наверное натыкался на jmp в код.

> 2. WM_GETTEXT на caption почему-то не пашет, хотя в
> качестве адреса я что только не ставил...

И не будет. У меня выдаёт "сообщение должно использоваться с функциями синхронизации". А ты ведь его PostMessage'ом туда ставишь, передавая адрес не в своём адресном пространстве. Это и правильно, иначе это был бы способ писать в чужой процесс :)

> 3. Я заметил, что по адресу, равному хэндлу окна (у моего
> winlogon'а - 1001c, у csrss или какого-то его друга - 20040
> или что-то в этом роде) страница всегда
> проинициализирована.

У них может и всегда, а вообще не всегда. Причём не ясно когда, иногда на ней R стоит только - ничего не попишешь, иногда вообще не выделена, как мне показалось.
Кстати, а кто-то знает, что по адресу хэндела окна?

> Это есть гут, так как куча функций

Да, хоть что-то приятное :)

> первым параметром получает адрес, в который что-то пишет.

Только вот редкая функция посчитает нормальным 113h вторым :(
Ох, как оно мешает. Ну нафига оно им было нужно - в TimerProc передавать WM_TIMER?.. :)

> 4. Есть кульная функция GetCursorPos, с одним параметром, в
> который она пишет 2 небольших числа

Я вот сейчас думаю, а реально ли увеличить допустимые положения мыши? Сейчас кажется, за экран нельзя вылазить :(
Или может кто знает ещё одну такую кульную функцию?

> (и трет, тем самым, 8
> байт). Если я поставлю курсор у себя, скажем, так:
> call SetCursorPos,'\',0
> то GetCursorPos, будучи исполненным таким макаром:
> call PostMessage,winlogon_wnd,WM_TIMER,0,getcurpos_addr
> напишет по адресу winlogon_wnd '\',0,0,0,0,0,0,0

Учти, что этим ты оставил в стеке 3 DWORD'а. И одной винде известно, что она там с ними сделает... Хорошо, если SEH нас спасёт всегда, но может же и не повезти, мало ли что там у них.

> 5. Есть кульная функция SetCurrentDirectoryA/W, коия,
> будучи исполненная точно таким же способом (в winlogon'е)
> после GetCursorPos, установит его куррент директори на
> корневуху %systemroot% диска. Это тоже есть гут.
>
> Теперь кульминация: при релогоне winlogon любит грузить
> либыбез_указания_пути_к_ним!!
> В частности, этим балуется msgina.dll.
> То есть мы делаем так: пишем в корневуху нашу либу,
> обзываем ее так, как больше нравится msgina, переставляем
> текущий какталог у winlogon'а и делаем релогон. Телемаркет
> ;))) наша либа в винлогоне.

Славно.

> Все это конечно, хорошо, но пока я дизазмил\трейсил
> winlogon (w2k), я обнаружил преинтереснейшую вещь: msgina
>самапри логоне ставит curdir winlogon'а на '\', и после
> делает LoadLibraryW на es.dll без указания пути. То есть
> просто пишем es.dll в корень системного диска и
> релогинимся...

Ещё лучше :) Не ошибка привела к обнаружению ошибки :)

> Ух, как по ламерски, но ведь работает... Или это только у
> меня? В любом случае, с переброской каталога - это эксплоит
> еще тот. Но защититься просто - залочить писанину в корень
> системы и все ;)

А так ведь обычно и есть :( Редко кто даст гостю писать в C:\

> wbr, 90210//HI-TECH

Что-то столько новых идей ты написал, а я ни одну применить не смог :( Всегда чуть-чуть не хватает.

Но уже лучше - есть куда писать (будем считать hWnd нормальным указателем:). Осталось найти способ писать.

Пойду искать кульную функцию...
<programming> Поиск 






Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach