barons89 | Дата: Вторник, 03.01.2012, 22:23 | Сообщение # 1 |
| Исследователь Radim "EliCZ" Picha (Bugs@EliCZ.cjb.net) обнаружил серьезную уязвимость в безопасности Windows NT и Windows 2000. Им была написана программа (exploit), демонстрирующая очевидную слабость локальной подсистемы безопасности NT/2000 и полностью компрометирующая всю систему безопасности этих операционных систем.
Программа, названая DebPloit (от английских слов Debug и Exploit), использует "дыру" в подсистеме отладки (debugging subsystem) и позволяет ЛЮБОМУ пользователю с ЛЮБЫМИ привилегиями (даже пользователям входящим в группы Guests и Restricted Users), выполнять программный код с правами администратора и/или локальной системы. Другими словами, любой человек имеющий доступ к локальному компьютеру может стать администратором и делать на этом компьютере все, что угодно.
Принцип работы DebPloit: программа "просит" отладочную подсистему (smss.exe) вернуть описатель (handle) процесса, запущенного с правами администратора или локальной системы (в системе всегда находится большое кол-во процессов, работающих с правами локальной системы):
Становимся dbgss-клиентом (функция DbgUiConnectToDbg).
Подключаемся к LCP-порту DbgSsApiPort (ф-ция ZwConnectPort). Любой пользователь имеет доступ к этому порту!
Посылаем запрос на отладку процесса к dbgss, точно так же как это делает CreateProcess (ф-ция ZwRequestPort).
Ожидаем овета (CREATE_PROCESS_DEBUG_EVENT) от dbgss (ф-ция WaitForDebugEvent). Ответ будет содержать описатель (handle) процесса.
Переключам свой текущий контекст безопасности на контекст безопасности описателя, полученнго на шаге 4.
Исполняем код (например запускаем внешнюю программу) с правами выбранного для отладки процесса.
Загрузить DebPloit можно с сайта EliCZ`а - http://www.anticracking.sk/EliCZ/bugs/DebPloit.zip (исходный код прилагается).
Что бы проверить свою систему на эту уязвимость, надо:
Загрузить DebPloit.zip и распаковать его на диск.
Выйти из системы и вновь зайти с минимальными правами (например используя учетную запись Guest).
Запустить программу ERunAsX.exe из командной строки и указать ей в качестве параметра любую внешнюю программу (например "ERunAsX.exe cmd").
Теперь программа, указанная на шаге 3, выполняется с правами локальной системы.
HOTFIX
Что бы закрыть эту "дыру" в безопасности NT/2000, я написал специальный драйвер DebPloitFix, который устанавливает новые права для LPC-порта DbgSsApiPort. После запуска DebPloitFix, доступ к DbgSsApiPort будет иметь только локальная система.
Загрузить DebPloitFix и исходный код к нему можно с www.smartline.ru/software/DebPloitFix.zip
| |
|
Эти пользователи поблагодарили barons89'a за это полезное сообщение: | |
|