20.12.2012

Как я нашел 0-day в ОС Windows

image

В 2010 году после обнаружения Stuxnet и уязвимости CVE-2010-2568 я впечатлялся красотой данной уязвимости и решил проверить: а не осталась ли где-либо еще возможность запустить произвольный код при обычной работе пользователя из dll?

Автор: Марков Павел (http://habrahabr.ru/users/0xA0/)

В 2010 году после обнаружения Stuxnet и уязвимости CVE-2010-2568 я впечатлился красотой данной уязвимости и решил проверить: а не осталась ли где-либо еще возможность запустить произвольный код при обычной работе пользователя из dll?

Как точку отсчета начал изучать возможность выполнить произвольный код при помощи ярлыков в контексте процесса explorer.exe. Для этого я взял программу API-monitor (в принципе можно было любой отладчик взять) и стал контролировать API-функции в explorer.exe, которые могут выполнять код (CreateProcess,WinExec,LoadLibrary) и стал смотреть не проскочит ли где-либо наша библиотека.

Рисунок 1: настраиваем фильтр API-monitor на конкретные API-функции

Для тестов была написана библиотека(dll),содержащая в себе ресурс (иконку) и код

BOOLWINAPIDllMain(
_In_HINSTANCEhinstDLL,
_In_DWORDfdwReason,
_In_LPVOIDlpvReserved
)
{
WinExec("cmd.exe",SW_SHOW);
return true;
}

И в один прекрасный момент я увидел в API-мониторе следующее:

Рисунок 2: результаты работы API-monitor

Давайте разберёмся что же произошло. Происходил вызов библиотеки при попытке сменить значок для каталога (для файлов или ярлыков вызов библиотеки происходил безопасным образом при помощи LoadLibraryEx) и выборе в качестве источника нашей библиотеки. Причем менять значок было даже не обязательно! Всё это приводило к выполнению кода, заложенному в тестовой dll. В результате можно было наблюдать следующую картину:

Рисунок 3: код из тестовой dll отработал

Видео демонстрацию можно посмотреть ниже:

Саму уязвимость я обнаружил в том же 2010 году. И за это время я так и не смог найти каким образом можно автоматизировать использование уязвимости без активного взаимодействия с жертвой. Единственный вариант использования, который я вижу – социальная инженерия.

Уязвимость присутствует в ОС Windows XP\7. В Windows 8 уязвимости уже нет.

Вывод можно сделать следующий: даже если появилась информация о закрытой уязвимости, то не поленившись и «покопав» в том же направлении можно найти 0-day даже у ведущих вендоров!

или введите имя

CAPTCHA
Страницы: 1  2  3  4  5  
Sp0Raw
21-12-2012 12:17:05
Странно, что какой-то идиот в MS не сделал подгрузку модуля с флагом AS_RESOURCE (не помню точное название, DATA_bla-bla), это решает проблему полностью.
0 |
m.pavel
21-12-2012 12:20:55
Это как раз LoadLibraryEx с флагом LOAD_LIBRARY_AS_DATAFILE. Почти во всех сценариях так и есть.Кроме этого
0 |
Sp0Raw
21-12-2012 12:19:19
Собственно, вот: LoadLibraryEx LOAD_LIBRARY_AS_DATAFILE Ваш К.О.
0 |
Хвост
22-12-2012 00:56:22
"без активного взаимодействия с жертвой" А если с дллкой распространять ини файл с настройкой для отображения данной папки?
0 |
m.pavel
23-12-2012 18:49:56
отрабатывает только в момент выбора dll(
0 |
r0
22-12-2012 07:41:56
На семёрке sp1 с последними апдейтами уже не работает
0 |
Чорт
24-12-2012 22:06:56
фуле, индусы пейсали
0 |
Страницы: 1  2  3  4  5