Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #82, ОКТЯБРЬ 2005 г.

Подключим - поиграем!

Хаштамов Адиль (adi1@ok.kz)

Хакер, номер #082, стр. 082-064-1


Описание бага и создание сплоита для сервиса Plug'n'Play

Ты, конечно же, знаешь, что такое Plug and Play. А если и не знаешь, то это не мешает тебе пользоваться этой технологией изо дня в день, подключая новые девайсы, mp3-плееры, цифровики, usb-флешки и прочие электронные железки. Эта замечательная технология серьезно упрощает жизнь миллионам юзеров, сводя усилия, необходимые для установки и настройки новых устройств к минимуму. Но недавно эта же технология послужила причиной для возникновения серьезной вирусной эпидемии, поразившей системы таких компаний, как Microsoft, CNN и New York Times. Пришло время разобраться, почему так произошло, где косяк в P'n'p, как это можно использовать и чего следует бояться.

[доигрались]

Plug and Play - это стандартный сервис системы Windows NT, который устанавливается по умолчанию. Предназначен этот сервис для облегчения жизни стандартного виндового пользователя: с его помощью операционная система обнаруживает новые девайсы и помогает юзеру установить необходимые драйвера и софт. Этот детский минимализм длился вплоть до 9 августа 2005 года, когда на сайте корпорации Microsoft был опубликован бюллетень, описывающий критическую брешь в сервисе Plug'n'Play. В сообщении было указано, что уязвимыми считаются все версии систем Windows NT, в которых установлен этот сервис. Как выяснилось позже, атаковать P'n'P можно было и удаленно. Это могло означать только одно: в Сети грядет новая волна эпидемий. Впрочем, далее по тексту было замечено, что критической данная уязвимость считается только для систем семейства 2k. Конечно же, во всеми любимой XP брешь тоже существует, но, как оценили исследователи, для данной системы она не является критической, поскольку для эксплуатации ошибки нужно иметь какие-то локальные права на удаленной машине, а для win2k иметь права не требуется, в результате чего анонимный пользователь может легко поднять свои привилегии на атакуемой машине.

[уязвимость]

Сама по себе уязвимость очень проста. Это стековое переполнение буфера. В отведенный буфер сервис P'n'P копирует входящие сообщения, не проверяя и не ограничивая их длину. Поэтому специальным образом сформированное сообщение может вызвать переполнение буфера, что повлечет за собой сбой service.exe, или выполнение зловредного кода на стороне атакуемой машины. Сервис P'n'P построен на DCE RPC протоколе и доступен через 445/tcp порт. На всякий случай напомню, что RPC, Remote Procedure Call (удаленный вызов процедур), представляет из себя механизм, при помощи которого любое приложение может вызывать процедуры на удаленной машине. Думаю, у абсолютного большинства читателей аббревиатура RPC неразрывно связана с RPС DCOM-багом, который попортил им немало крови. Но сегодня мы говорим не об этом баге, на повестке дня - дырка в Plug'n'Play, так что не будем отвлекаться.

Удаленный доступ к сервису P'n'P осуществляется с использованием так называемых «именованных каналов» через NULL-сессию, то есть по протоколу SMB без аутентификации. Именованные каналы в Windows - это один из способов для межпроцессного взаимодействия. Доступ к ним может осуществляться как локально, так и удаленно, при помощи протокола SMB. Ты, конечно же, помнишь о странном общем ресурсе с названием IPC$, который немало мозолил тебе глаза. Нелишним будет пояснить, что IPC расшифровывается, как Inter-Process Communication и именно этот ресурс содержит в себе именованные каналы. Поэтому для того, чтобы удачно проэксплуатировать уязвимость в сервисе Plug and Play достаточно создать соединение по NULL-сессии, после чего появится возможность вызывать RPC процедуры на удаленной системе. Когда соединение будет установлено, нужно соединиться с IPC$ и открыть именованный канал. IPC$ используется для того, чтобы сконфигурировать список именованных каналов. Для анонимного доступа используется канал \pipe\browser. После всего этого нужно забиндить DCE RPC интерфейс, для чего используются функции Uuid* и вызовы для работы с сетью.

Содержание  Вперед на стр. 082-064-2