Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2002.09.09;
Скачать: [xml.tar.bz2];

Вниз

Про уязвимости в окнах.   Найти похожие ветки 

 
Карлсон   (2002-08-11 01:22) [0]

Недавно нашел на одном из сайтов, хочется узнать мнение окружающих.



В ОС Windows обнаружено серьёзное уязвимое место: с его помощью злоумышленник может запустить на компьютере любую программу, даже не имея для этого достаточных прав. Ситуация осложнена тем, что устранить уязвимое место при помощи обычных заплаток не удастся. По мнению специалиста, обнаружившего дыру, ошибка была допущена ещё на этапе проектирования программного интерфейса Win32 (Win32 API).

Независимый консультант по вопросам компьютерной безопасности Крис Пейджет утверждает, что на мысль заняться поиском недостатков Windows его натолкнули слова вице-президента Microsoft Джима Оллчина. Доказывая недопустимость распространения исходных кодов Windows, Оллчин заметил, что национальной безопасности США будет нанесён серьёзный ущерб, если откроются некоторые недостатки этой операционной системы.

Пейджету стало любопытно, что же в действительности скрывается за этими словами. Итогом его исследований стала внушительная статья( http://security.tombom.co.uk/shatter.html), в которой подробно описывается несложный способ, позволяющий поднять свои полномочия в системе до уровня администратора.

Основой, на которой базируется пользовательский интерфейс Windows, являются сообщения( http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/messagesandmessagequeues/aboutmessagesandmessagequeues.asp) (messages). Каждое действие, предпринимаемое пользователем, порождает массу сообщений, передаваемых для обработки окнам (отдельные компоненты интерфейса, такие как кнопки или, например, поля ввода текста, с точки зрения Windows, также являются окнами). Некоторые сообщения генерируют работающие приложения или сама система.

Проблема заключается в том, что Windows никак не контролирует передачу сообщений между разными приложениями. Любое приложение может послать любое сообщение любому окну, и то, как правило, обработает его, не задумываясь. В Windows 95, где все пользователи и программы равны, это было нормально, но в Windows NT/2000/XP дело обстоит совсем не так. Некоторые программы имеют администраторские права, а другие - нет. Вредоносная программа может заставить выполнять программу с администраторскими правами действия, которые для неё самой запрещены.

Чтобы проверить реальность угрозы, Пейджет написал небольшую программу под названием Shatter. Она узнаёт идентификатор (handle) окна антивируса Network Associates VirusScan. Имея идентификатор, Shatter может послать антивирусу сообщение, устраняющее ограничение на длину текста, который можно ввести в текстовое поле в одном из его диалоговых окон. В этот момент требуется вмешательство взломщика: он должен поместить в буфер обмена (clipboard) исполняемый код программы, которую он хочет запустить. Сделать это можно при помощи какого-нибудь шестнадцатеричного редактора. Shatter перемещает данные из буфера обмена в текстовое поле VirusScan. Затем с помощью отладчика этот код можно найти, и, послав сообщение WM_TIMER, запустить его.

Единственная операция, которая требует администраторских прав - это использование отладчика. Но в демонстрационных целях, по мнению Пейджета, такое допущение простимо. В реальности для запуска вредоносного кода пришлось бы воспользоваться более сложным или менее надёжным способом - недостатка в возможностях нет.

О проблеме было сообщено в Microsoft. Там подтвердили, что знают об этой уязвимости, однако не склонны преувеличивать её опасность. В Microsoft считают, что если уж злоумышленник получил возможность поработать за чужим компьютером, остановить его невозможно. Так или иначе, но своего он добьётся.

Пейджет считает, что авторы Windows не улавливают сути. Главная опасность угрожает компаниям, у которых много компьютеров, пользователи которых имеют ограниченные права. Эти компьютеры не имеют ничего для защиты от атаки с помощью программы, похожей на Shatter. Вся система безопасности Windows теряет смысл.

Причина, по которой Microsoft ничего не делает, заключается, по мнению Пейджета, в ином. В компании осознают своё бессилие. Хотя проблема имеет решения, ни одно из них не лишёно недостатков.

Осторожность Microsoft можно понять. Несмотря ни на что, до сих пор её тактика оправдывала себя: за годы существования Win32 API случаев использования этой уязвимости не было.


 
drpass   (2002-08-11 12:10) [1]

Читал я статью этого Шаттера. Идея интересная, но цель не будет оправдывать средства. Чтобы взломать машину таким образом, тебе нужно иметь к ней прямой доступ, иметь право на отладку программ, и иметь собственно отладчик. А если все это есть, и ты обладаешь достаточными знаниями - то зачем морочиться с сообщениями, ты и так сможешь ее поломать, будь-то винда или Unix.
Такой взлом может быть осуществим только в одном случае - когда ты имеешь привилегии администратора или близкие к нему. Но тогда какой смысл взлома?


 
DiamondShark   (2002-08-11 17:39) [2]

Немного не понятно, причем здесь клипборд и поле ввода. То ли журналисты напутали, то ли специально смысл исказили.

Дыра есть, и дыра конкретная. И действительно имеет отношение к сообщениям.


> за годы существования Win32 API случаев использования этой
> уязвимости не было.


Здесь я дико хохотал. Так как не далее чем неделю назад пользовался этой уязвимостью. И миллионы любителей миллионы раз пользовались этой дырой, описание которой есть в Platform SDK.

Речь, как многие догадались, идет о хуках. Используя их можно внедрить ЛЮБОЙ код в ЛЮБОЙ процесс, имеющий окно.


 
DiamondShark   (2002-08-11 17:41) [3]

Да, кстати, никаких привелегий для этого не надо ;)


 
ZZ   (2002-08-11 17:45) [4]

Привет любителям окошек в сервисах :)))


 
drpass   (2002-08-11 18:01) [5]

Нет, не исказили - идея была в том, чтобы поместить исполняемый код в адресное пространство другого процесса, того, который имеет системные привилегии. То-есть, код заносится в контрол, как обычный текст, а потом отладчик ищет адрес памяти, с которого этот контрол хранит свои данные, и через WM_TIMER управление передается на этот адрес. Смысл этого в том, что твой код, исполняемый в адресном пространстве системного процесса, имеет все привилегии системы.
А вот хук - это совсем другое. Если ты имеешь привилегии юзера, и хучишь своей прогой другой процесс, будь он админским или системным, тебе это ничего не даст - твоя прога не сможет сделать ничего противозаконного. Только то, что дозволено юзерскими привилегиями.


 
Suntechnic   (2002-08-11 18:21) [6]

>drpass © (11.08.02 12:10)
Такой взлом может быть осуществим только в одном случае - когда ты имеешь привилегии администратора или близкие к нему. Но тогда какой смысл взлома?
...иметь право на отладку программ...

Не совсем так. В приведённом примере дебаггер используется для упрощения процесса, но существуют и другие пути. Тот же автор их предлагант как миимум 2:

At this point, you might be thinking that attaching a debugger is a privileged operation. It is. However, much the same as when
writing a buffer overflow exploit, you can do that part on any system; all you need is the load address which should then work on any system running the same version of the software. In actual fact, you needn"t actually do this at all. Most applications have their own exception handlers (VirusScan certainly does), so if they generate an access violation, they just deal with it and move on rather than crashing. So, there"s nothing to stop you pasting in a few hundred kilobytes of NOPs and then just iterating through memory until you finally hit the right address and your shellode executes. Not particularly elegant, but it"ll work.

>DiamondShark © (11.08.02 17:39)
Немного не понятно, причем здесь клипборд и поле ввода.
В приведённом примере как раз понятно зачем это надо. Доступа то в адресное пространство чужого процесса никто ведь не получал, а код то надо откуда-то выполнять. Вот и используют клипборд и поле вводе, чтобы хранить там исполняемый код и передать этот адрес сообщению WM_TIMER.


 
DiamondShark   (2002-08-13 12:58) [7]


> Suntechnic © (11.08.02 18:21)


Ну-ка, ну-ка, по-подробнее, пожалуйста. Как это по WM_TIMER заставить выполнить призвольный код? По вашему заявлению понятно, что вам это -- как два пальца об асфальт. Фрагмент кода в студию !


> drpass © (11.08.02 18:01)


> Только то, что дозволено юзерскими привилегиями.


Процедура хука выполняется в контексте процесса, для которого произошло событие, отлвалвиваемое хуком. Например, WH_GETMESSAGE срабатывает при вызове GetMessage/PeekMessage, и выполняется в контексте процесса, вызвавшего GetMesage.
Так что сделать можно то, что дозволено другому процессу.


 
Игорь Шевченко   (2002-08-13 13:41) [8]


> Как это по WM_TIMER заставить выполнить призвольный код?


Вообще-то достаточно просто...

The WM_TIMER message is posted to the installing thread"s message queue or sent to the appropriate TimerProc callback function after each interval specified in the SetTimer function used to install a timer.

WM_TIMER
wTimerID = wParam; // timer identifier
tmprc = (TIMERPROC *) lParam; // address of timer callback


Parameters

wTimerID

Value of wParam. Specifies the timer identifier.

tmprc

Value of lParam. Points to an application-defined callback function that was passed to the SetTimer function when the timer was installed. If the tmprc parameter is not NULL, Windows passes the WM_TIMER message to the specified callback function rather than posting the message to the thread"s message queue.



 
Suntechnic   (2002-08-13 15:56) [9]

>DiamondShark © (13.08.02 12:58)
Вам Игорь Шевченко © достаточно полно ответил или нужны пояснения?



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2002.09.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.006 c
14-27198
Fant
2002-08-14 18:02
2002.09.09
console-mouse


3-26888
michael_b
2002-08-20 09:12
2002.09.09
безопастность и санкционирование доступа


1-26992
CrazyAngel
2002-08-27 14:55
2002.09.09
Sleep но не sleep


14-27188
AL2002
2002-08-13 18:37
2002.09.09
Кто-то там апач с ПХП хотел


1-26944
andrey_pst
2002-08-29 06:59
2002.09.09
Help-файл





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский