PDA

Просмотр полной версии : переполнение буфера в ХР сервиспак2



SDA
29.01.2005, 20:40
28 января 2005
Обход встроенных механизмов защиты от переполнения буфера в куче и технологии DEP в Windows XP SP2
Программа: Windows XP

Опасность: Высокая

Наличие эксплоита: Да

Описание: Positive Technologies сообщает о возможности обхода встроенных механизмов защиты от переполнения кучи и выполнения кода в области данных в Windows XP Service Pack 2.

Несколько уязвимостей обнаружено в механизме проверки маркера ("cookie") введенного для определения целостности заголовка блока памяти:

1. Проверочный маркер проверяется только тогда, когда выделяется свободный блок, однако такая проверка не выполняется при его освобождении. В результате возможно изменить размер блока и поместить его в произвольный freelist.

2. При работе с lookaside списками не реализовано никаких проверок целостности заголовка - нет даже проверки достоверности значения проверочного маркера. В результате этого, теоретически, появляется возможность перезаписать до 1016 байт в любой области памяти.

Подробнее об уязвимости и практических примерах ее эксплуатации можно прочитать тут: http://www.securitylab.ru/52238.html

URL производителя:www.Microsoft.com

Решение: Способов устранения обнаруженной уязвимости не существует в настоящее время. В качестве временного решения, компания Positive Technologies выпустила бесплатную утилиту, которая для определенных приложений устанавливает глобальный флаг, который будет запрещать использование ассоциативных списков. Скачать программу можно отсюда: http://www.ptsecurity.ru/ptmshorp.asp

Geser подскажи какие системные программы уже защищены по показаниям ptmshorp.asp (я не силен):
enc98.exe
prwin8.exe
ps80.exe
qfinder.exe
qpw.exe
ua80.exe
wpwin.exe
и какие на твой взгляд системные программы
нужно указать для защиты, правда учитывая, что они будут подтормаживать.Заранее благодарю.

Geser
29.01.2005, 21:38
Ксожалению я не в курсе. Может Олег знает.

Зайцев Олег
30.01.2005, 15:58
К сожалению я не в курсе. Может Олег знает.

Знаю ... но тут вообще несколько спорный вопрос, нужно ли вообще всерьез заниматься борьбой с этой проблемой ... Суть исследования http://www.securitylab.ru/52238.html в кратце такова - начиная с SP2 Windows XP поддерживает DEP - особый программно-аппаратный механизм, позволяющий защититься от выполнения программного кода из области данных (если уже вдаваться в теорию, большинство эксплоитов построены на основе переполнения буфера в той или иной программе - атакуемой программе или сервису передаются заранее подготовленные данные, содержащие программный код, который выполняется в результате переполнения буфера. В частности, если буфер находится в стеке, то можно выполнить срыв стека и выполнение произвольного кода).
Настройки DEP можно посмотреть на закладке "Предотвращение выполнения данных" окна "Параметры быстродействия" (которое в свою очередь вызывается из закладки "Дополнительно" окна "свойства системы". Там есть возможность включить DEP для всей системы (а по умолчанию она работает только для основных служб).
Однако в реализации DEP обнаружились уязвимости, в результате чего все-таки можно перехитрить защиту.
Что до программы (которая есть на ptsecurity), то она ничего таинтсвенного не делает - короче говоря, в XP ряд параметров запуска можно настраивать для каждой программы индивидуально. Для этого в реестре есть недокументированный ключ
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options. В этом ключе может существовать неограниченое количество подразделов, причем имя подраздела соответствует имени программного файла (замечу - любого PE файла - в частности, DLL. Причем имя указывается без пути, например "explorer.exe"). Параметр такого подраздела с именем DisableHeapLookAside типа RegSZ управляет применением "кучи" - (см. KB195008) - если он равен 1, то эксплоит не сработает (термином "куча" называется особая область памяти, которая выделяется программе для использования в своих целях). Если параметр равен 0 или отсутствует - для "кучи" возможно применение описанногов статье эксплоита. Так что работа утилиты как раз и сводится к добавлению таких подразделов с параметром DisableHeapLookAside = 1 ... Ключ естественно может поправить любая программа, так что отключить "защиту" не трудно.
Еще один момент - "cookie" в описание уязвимости не имеет отношения к cookis в Internet Explorer , несмотря на созвучие а названии.
Теперь мое отношение к DEP и этому эксплоиту (замечу - это мое личное мнение) - я никогда не рассматривал DEP как панацею от эксплоитов ... Да, DEP снижает вероятность их успешного применения. Теперь что касается измениням в настройке "кучи" - да, против этого конкретного эксплоита это поможет, но это не метод ... вероятно проще препятствовать проникнованию эксплоитав систему (Firewall, программы типа Process Guard, антииврусные мониторы и т.п.), а не бороться с ним

SDA
30.01.2005, 16:02
Олег! Огромное спасибо за разъяснения!

rav
31.01.2005, 16:30
Теперь мое отношение к DEP и этому эксплоиту (замечу - это мое личное мнение) - я никогда не рассматривал DEP как панацею от эксплоитов ... Да, DEP снижает вероятность их успешного применения. Теперь что касается измениням в настройке "кучи" - да, против этого конкретного эксплоита это поможет, но это не метод ... вероятно проще препятствовать проникнованию эксплоитав систему (Firewall, программы типа Process Guard, антииврусные мониторы и т.п.), а не бороться с ним


Ну, а я немного не соглашусь с данным утверждением. Да, действительно DEP (даже с NX-битом у процессора) не есть серьёзный барьер для эксплойтов. У DEP серьёзные проблемы с контролем переполнения кучи и "return-into-libc"-методиками атаки. Но! Пусть мне Олег скажет, как именно он собирается бороться с эксплойтами с помощью антивируса, FireWall или стандартной IPS? Это есть средства борьбы не с эксплойтами, а, скорее, с его последствиями. Типа, если найдём и опознаем. А если не найдём- выкручивайся, пользователь, как можешь.

Твоя позиция тоже понятна. Раньше не было средств борьбы с эксплойтами на виндовой платформе ВООБЩЕ. И каждый выкручивался как мог. Но сейчас ведь ситуация изменилась! Так что бороться с эксплойтами надо, и существуют серьёзные средства для этого (притом проактивные). Например, вышеназванный эксплойт не срабатывает против кучи, которую защищает мой Anti-Cracker Shield.

Geser
31.01.2005, 16:46
Например, вышеназванный эксплойт не срабатывает против кучи, которую защищает мой Anti-Cracker Shield.

Который конфликтует с кучей программ?

rav
31.01.2005, 16:51
Который конфликтует с кучей программ?


Нет, скорее DEP конфликтует с кучей программ.

Geser
31.01.2005, 16:53
Нет, скорее DEP конфликтует с кучей программ.

Потому по умолчанию и включен только для програм Майкрософта. А кроме ИЕ и пары системных процессов в общем никого защищать и не нужно.

rav
31.01.2005, 17:00
Потому по умолчанию и включен только для програм Майкрософта. А кроме ИЕ и пары системных процессов в общем никого защищать и не нужно.


Неправильно. Защищать нужно:
1. Браузер (любой)
2. Почтовый клиент(любой).
3. IM-клиент (любой).
4. Сервисы NT (любые).
5. Web/FTP-серверы (любые).
6. Программы документооборота, архиваторы и исполняемые модули показа файлов помощи.

И это только навскидку.

Geser
31.01.2005, 17:13
Неправильно. Защищать нужно:
1. Браузер (любой)
2. Почтовый клиент(любой).
3. IM-клиент (любой).
4. Сервисы NT (любые).
5. Web/FTP-серверы (любые).
6. Программы документооборота, архиваторы и исполняемые модули показа файлов помощи.

И это только навскидку.

Ну скажем так, у меня комп уже 1.5 года подключен к быстрому интернету, и большую часть времени в сети. Пока что стенка и антивирус меня не подвели ни разу. Так нужен ли мне еще один процесс в памяти, если он пригодится мне раз в несколько лет? Темболее процесс конфликтующий с частью программ? Вот если твоя програмка не будет ни с кем конфликтовать, и не будет тормозить комп, тогда можно будет о ней подумать. А пока, возможно только на серверах она и необходима.

rav
31.01.2005, 17:25
Ну скажем так, у меня комп уже 1.5 года подключен к быстрому интернету, и большую часть времени в сети. Пока что стенка и антивирус меня не подвели ни разу. Так нужен ли мне еще один процесс в памяти, если он пригодится мне раз в несколько лет? Темболее процесс конфликтующий с частью программ? Вот если твоя програмка не будет ни с кем конфликтовать, и не будет тормозить комп, тогда можно будет о ней подумать. А пока, возможно только на серверах она и необходима.


Ты сейчас назвал именно те характеристики, которыми моя программа и обладает. Гибкая система настройки уровня защиты позволяет избежать конфликтов. Комп не тормозится абсолютно. Плюс (ты это не учёл, а я знаю, что этот важно)- практически стопроцентая работа компа после атаки.

Geser
31.01.2005, 17:27
Ты сейчас назвал именно те характеристики, которыми моя программа и обладает. Гибкая система настройки уровня защиты позволяет избежать конфликтов. Комп не тормозится абсолютно. Плюс (ты это не учёл, а я знаю, что этот важно)- практически стопроцентая работа компа после атаки.

Ну и где ссылка на неё? Добавил бы в профайл или в подпись. Мы тут не страдаем параноидальной борьбой с рекламой ;) Конечно если не переходить границы разумного :)

rav
31.01.2005, 17:41
Ну и где ссылка на неё? Добавил бы в профайл или в подпись. Мы тут не страдаем параноидальной борьбой с рекламой ;) Конечно если не переходить границы разумного :)


www.softsphere.com. Дальше- по ссылкам.
Насчёт подписи- ну, если можно..... Ладно, не проблема. А как лучше, чтобы никого не раздражать?

Geser
31.01.2005, 17:44
Насчёт подписи- ну, если можно..... Ладно, не проблема. А как лучше, чтобы никого не раздражать?

Лучше не офтопить в чужей теме. Если есть вопросы пиши ЛС

Зайцев Олег
31.01.2005, 21:29
Но! Пусть мне Олег скажет, как именно он собирается бороться с эксплойтами с помощью антивируса, FireWall или стандартной IPS? Это есть средства борьбы не с эксплойтами, а, скорее, с его последствиями. Типа, если найдём и опознаем. А если не найдём- выкручивайся, пользователь, как можешь.

Твоя позиция тоже понятна. Раньше не было средств борьбы с эксплойтами на виндовой платформе ВООБЩЕ. И каждый выкручивался как мог. Но сейчас ведь ситуация изменилась! Так что бороться с эксплойтами надо, и существуют серьёзные средства для этого (притом проактивные). Например, вышеназванный эксплойт не срабатывает против кучи, которую защищает мой Anti-Cracker Shield.

Как бороться с помощью Firewall и антивируса - приведу пример: ПК защищен при помощи Firewall, к примеру встроенным в XP. Этот Firewall отсекает все пакеты, приходящие извне без запроса. Это означает, что пакет-эксплоит того-же Lovesan просто не достигнет уязвимого серсиса - и никакого вреда не будет. Аналогично с антивирусом - пусть Firewall прозевал эксплоит (Firewall от эксплоитов как известно не панацея) - тогда монитор антивируса зашибет результат работы эксплоита (порожденный им файл, процесс ...) налету. Дело в том, что переполнение буфера далеко не единственная уязвимость того-же браузера - у него существует куча дыр и без эксплоитов (вспомним хотя-бы знаменитый IFRAME).
Насчет Anti-Cracker Shield - принцип ее работы понятен и логичен - перехват функций работы с Heap и проверка, которая позволяет поймать переполнение буфера и блокировать его (на нее еще AVZ сработал - орет, что перехват функций ntdll.dll методом подмены первой команды на JMP). В сущности я как раз и имел в виду подобное ПО в заключительной фразе (хотя лично я не стал бы вешать в память драйвер+процесс только для борьбы с эксплоитом)

rav
01.02.2005, 22:54
Как бороться с помощью Firewall и антивируса - приведу пример: ПК защищен при помощи Firewall, к примеру встроенным в XP. Этот Firewall отсекает все пакеты, приходящие извне без запроса. Это означает, что пакет-эксплоит того-же Lovesan просто не достигнет уязвимого серсиса - и никакого вреда не будет. Аналогично с антивирусом - пусть Firewall прозевал эксплоит (Firewall от эксплоитов как известно не панацея) - тогда монитор антивируса зашибет результат работы эксплоита (порожденный им файл, процесс ...) налету. Дело в том, что переполнение буфера далеко не единственная уязвимость того-же браузера - у него существует куча дыр и без эксплоитов (вспомним хотя-бы знаменитый IFRAME).
Насчет Anti-Cracker Shield - принцип ее работы понятен и логичен - перехват функций работы с Heap и проверка, которая позволяет поймать переполнение буфера и блокировать его (на нее еще AVZ сработал - орет, что перехват функций ntdll.dll методом подмены первой команды на JMP). В сущности я как раз и имел в виду подобное ПО в заключительной фразе (хотя лично я не стал бы вешать в память драйвер+процесс только для борьбы с эксплоитом)



1. Файервол от эксплойтов не панацея- это правильно. Файервол предназначен для контроля сетевого траффика и не более того.

2. Антивирус сработает только на что-то, ему до боли знакомое. Стоит изменить исполняемый файл, сделать его нестандартным- и антивирь отвалится нафиг.

3. Самое интересное. Зачастую нужно только незаметно запустить cmd.exe на удалённой машине с правильными параметрами- и машина твоя. На cmd.exe ни один антивирь в здравом уме не среагирует, а встроенный файервол промолчит, как партизан (соединение идёт со стороны компьютера).

4. IFRAME- это типичный эксплойт. Посмотри его PoC. Моя программа от него защищает 100%. То, что ты имеешь в виду- это уязвимости JavaScript/VBScript. Да, это- не эксплойты, а ошибки в разграничении зон для этих скриптов, которые приводят к возможности записи на диск файлов и передачи на них управления. А это уже область антивирусного ПО. Файерволя пытаются фильтровать скрипты на страницах, но у них это не очень хорошо получается.

5. Ну, контроль кучи- это только малая часть. А то, что стек неисполняем без всяких NX-битов? А перебазирование системных бибилотек по случайным адресам? Там гигантская куча защитных механизмов.

6. AVZ срабатывает на мои перехваты? Ну что поделать, жизнь такая. И на Каспера она срабатывает. Кстати, Каспер- полный отстой. Делает джамп с уровня приложений в третий гигабайт на код своего драйвера. Кто понимает- тот ужаснётся.


В общем, подытоживая- у каждого ПО своя ниша. Не нужно пытаться решить проблему эксплойтов (если ты не считаешь эксплойты проблемой- могу только сказать, что это ошибка) с помощью программ, не предназначенных для этого. Для этого существует специализированное ПО (например, мой Anti-Cracker Shield). Оно эти проблемы успешно решает. И теми методами, которые необходимы.