Анализ свеженьких уязвимостейАндрей Комаров (komarov@itdefence.ru) Рубрику можно переименовывать в «Как страшно жить», учитывая, что с каждым номером, днем и даже часом число обнаруженных брешей в различных системах и ПО не уменьшается, а неизменно растет. Между прочим, к читателям, деловое предложение на перспективу - если занимаешься анализом кода, изучением аспектов безопасности ПО и можешь чем-то поделиться, то присылай свои замечания или предложения на мою почту. Наиболее интересные из них попадут на страницы рубрики и порадуют глаз. Интереснее всего, если это будут еще неопубликованные нигде эксплоиты или бреши безопасности. Обход ограничений в CISCO VPN SSLBRIEFCISCO VPN SSL - модуль к CISCO ASA и целой линейке продуктов CISCO, который предназначен для расширения сетевого функционала девайса. Он позволяет организовать распределенную VPN-сеть, увеличив сетевые ресурсы инфраструктуры за счет разнесенных через интернет клиентов. EXPLOITCISCO VPN Clientless - ограничивающий клиента опционал, который разрешает или запрещает пользователю VPN обращаться к ресурсам виртуальной частной сети. Реализация механизма ограничений воистину выполнена очень криво. CISCO шифрует ресурс в ужасную строку, затем подставляет к ней специальное слово, конструирует линк и только тогда доверенный пользователь, открывая ее, получает доступ к ресурсу. Как выяснилось, любой желающий может спокойно обратиться к любому интернет/Intranet-узлу, обходя ограничения системы. редположим, желанный ресурс - http://intranet. Чтобы обратиться к нему, следует произвести следующие действия:
Все! Для упрощения процесса злодеи написали скрипт:
TARGETS SOLUTIONАктивируй дополнительные типы ACL-листов (webtype/filter), а также ознакомься с документом «Cisco Understanding Features NotSupported in Clientless SSL VPN». Обход ограничений безопасности в Microsoft IISBRIEFУязвимость найдена в известнейшем WEB-сервере от Microsoft. Путем загрузки специально сформированных ASP-файлов на узел существует возможность выполнить произвольный код, пробекдорить систему и далее — делать практически, что угодно. Вызвано это недостаточными ограничениями при проверке расширений файлов. EXPLOITIIS нормально воспринимает имена файлов с расширениями: .asp;.gif, .asp;.jpg, .asp;.exe. При проверке сервер обращает внимание только на первое расширение, а что стоит за «;» - ему без разницы. Методика состоит в том, что, используя такое обстоятельство, мы предварительно готовим злонамеренный файл, загружаем его на сервер (идеально, если это будет картинка), затем обращаемся через WEB для запуска шелл-кода на исполнение. Разработчиками известного дистрибутива Backtrack было создано средство, работающее именно по такой схеме (backtrack.it/~emgent/exploits/IIS-asp.py):
Опционально, под номером шелл-кода подразумевается 0 - shell_bind_tcp, 1 - meterpreter_bind_tcp, 2 - vncinject_bind_tcp, собственно, одни из самых известных payloads из пакета Metasploit.
На выходе получаем image.asp;.jpg, которую требуется прогрузить на WEB-сервер. Конечно, такая возможность бывает далеко не всегда. Тем не менее, если она есть, через форму обзора выбираем наш файл, льем на сервер (например, в папку «images», «avatars», «uploads»). После чего обращаемся к ней:
Порядок! TARGETSMicrosoft Internet Information Services (IIS) 5.x/6.x. SOLUTIONТщательнее фильтровать прогружаемое на сервер содержимое на прикладном уровне. Инжект кода в файлы проектов BlenderBRIEFBlender (blender.org) - это известный продукт для 3D-разработчиков и аниматоров, который позволяет использовать средства моделирования, рендеринга, постобработки видео и многое другое! На самом деле полноценно пользоваться им умеют только профессионалы, потому что он непрост в использовании. Попал он в рубрику по той простой причине, что существует возможность использовать его выходные файлы (формат .blend) в качестве вредоносных. EXPLOITОткрой текстовый редактор кода Blender (Text Editor), правый клик, «New». В появившемся поле, пишем свой код на Python, например:
В поле «Text Name» (TX:Text.001) заменяем значение на свое с указанием нашего скрипта TX:myscript. Затем переходим на панель «Buttons Window», из выпадающей панели (panel) выбираем «Script», при этом проверив, что графа «enable script links» активна. Жмем на «New», выбираем нами созданное скриптовое описание (myscript). Из выпадающего меню событий выбери «OnLoad». Теперь сохраняем файл в выходной, это делается из «User Preferences -> File -> Save». TARGETSBlender 2.49b, Blender 2.40, Blender 2.35a, Blender 2.34. SOLUTIONПроизводитель был уведомлен о подобном способе внедрения злонамеренного кода в свои продукты, но никакой ответной реакции не последовало. Из практических советов можно дать способ изучения .blend-файла - парсить проект на предмет SDNA Scriptlink (http://www.atmind.nl/blender/blender-sdna.html#struct:ScriptLink), куда помещается сам код. Уязвимости в Linux-версии SkypeBRIEFСразу после нового года двое итальянских исследователей обнаружили странный косяк в Skype (и даже несколько). Скорее, эти уязвимости я бы причислил не к каким-то классам конкретных брешей безопасности, а к ошибкам проектирования (design error). Касаются они только Linux-версии, GUI-интерфейс которой написан с использованием средств библиотеки QT (qt.nokia.com/products). EXPLOIT1. Реализация pseudo-XSS. Многие поля программы воспринимают теги HTML из-за того, что они не урезаются программно. Возможно, разработчиками подразумевалось, что пользователь может сделать свой ник жирным или добавить контакт в другом цвете с помощью средств разметки, но, по моему мнению - просто не уследили. Попробуй использовать тэг «"><h1><"» в поиске контактов, обзоре для выбора файлов для отправки, полях профиля. Увидел? Конечно, эксплуатировать такое - достаточно трудно, но, если проявить смекалку, можно добиться интересного. Например, поле «Домашняя страница» в профиле доступно для клика сторонним пользователям. Это значит, если мы сумеем засунуть туда реализацию XSS, то вполне вероятно, что, когда интересующийся нашей домашней страницей юзер кликнет по ней, просматривая наш профиль, его ждет беда, хотя бы на уровне «phishing»-атаки:
При таком раскладе в профиле в качестве страницы будет виднеться google.it, а вот после клика пользователь угодит на наш сайт журнала! Естественно, в реалиях место «Хакер.ру» займет ресурс с вредоносным кодом, на котором в том числе может располагаться сценарий проведения XSS-атаки. 2. Denial Of Service - загрузка ЦП на 100%. Для изучения атаки требуется установка xdotool (semicomplete.com/projects/xdotool) - средства имитации виртуальных мыши и клавиатуры. Часто его используют для автоматизации ручных задач в Linux/FreeBSD, например, повторяющихся действий в рамках браузера, какой-то программы и так далее. Впрочем, для Windows таких средств навалом (Automize).
Соответственно, 0x44801 - пробельный заменитель в хексе. Вследствие этого произойдет отказ в обслуживании программы из-за недостаточной проверки входных данных. При некоторых обстоятельствах был замечен «вылет» собеседника из программы. Более безобидные примеры переполнений были обнаружены при организации звонков или посылке SMS на номера, превышающие 89601-символ. TARGETSВерсии <=2.1 Beta. SOLUTIONВ настоящее время исправлений уязвимости не имеется. Множественные переполнения буфера в SUN Solaris (snoop)BRIEFВ августе прошлого года были обнаружены критические уязвимости в утилите snoop (docs.sun.com/app/docs/doc/819-2240/snoop-1m?a=view) ОС SUN Solaris. Snoop представляет собой средство сетевого мониторинга и анализа, некий аналог tcpdump/ethereal. Нетрудно догадаться, что уязвимости, эксплуатируемые в сниферах, как правило, связаны с неправильной обработкой анализируемых пакетов стека разных протоколов. На примере Wireshark:
Поверь, список можно продолжать еще долго. Из-за обилия и разнообразия протоколов и их структур разработчики иногда здорово халтурят, забывая, что могут допустить огромные бреши в безопасности при таком подходе. На этот раз уязвимость связана с обработкой SMB-пакетов (
Обратив внимание на строку 16, можно понять, что, если SMB-пакет не является ответом сервера, то ветвление перейдет на «else» условие и механизм по парсингу пакета (get2()). Продолжается считывание и заполнение структуры данных пакета (27), до метки F_SUM. После чего выполняется копирование части элементов управляемого пользователем пакета в буфер (dialect) с помощью функции sprintf. При этом сам буфер ограничен всего 256 байтами, а никаких проверок на него не производится. EXPLOITРабочий код эксплоита можно скачать здесь - milw0rm.org/exploits/6328. Действия атакующего:
То, что при этом видит администратор системы:
Устройство самого эксплоита крайне просто! Рассмотрим его главную часть, отвечающую за эксплуатацию переполнения буфера. Сначала создается «сырой» сокет для формирования и инжекта своего пакета в сеть:
Далее происходит вставка своей исполняемой на удаленной машине команды в буфер, кстати, с помощью безопасной функции snprintf:
Цикл заполняет буфер dialect до нужной консистенции по структуре. Затем происходит перезапись нужных адресов за буфером для достижения EIP и его последующая перезапись на нужный нам адрес возврата:
Финал, отправка красоты:
TARGETSSun Solaris 8/9/10.
SOLUTIONПатчится это дело заменой небезопасной функции на безопасную - snprintf:
|