Анализ атак перехвата DLL

В конце августа 2010 года работники в области безопасности начали выпускать подробную информацию о классе уязвимостей, имевших достаточно широкий диапазон последствий. Уязвимость, рассматриваемая словенской компанией безопасности Acros, получила достаточно неприятную репутацию, когда исследователь безопасности и Metasploit создатель HD Moore нашел сотки приложений, которые были уязвимы для атак этого вектора. Атака, использующая эти уязвимости, представляла собой копию перехвата DLL. В этой статье я расскажу об строительных недочетах, позволяющих делать перехват DLL, о том, как определять уязвимость применяемых приложений и о тех шагах, которые можно сделать для предотвращения этой атаки.

Механизм работы

Перехват DLL является вероятным, так как фактически все приложения Windows в собственной работе полагаются на библиотеки Dynamic Link Libraries (DLLs), как часть их основной функциональности. DLL’s содержат модульные составляющие кода, которые разработчики могут использовать снутри приложения для выполнения разных функций. Сама Windows полагается на таковой же тип архитектуры и содержит огромное количество DLLs, выполняющих различные функции.

Кроме DLL’s файлов, встроенных в Windows, разработчики программ нередко делают собственные DLLs, содержащие функции, которые употребляются программкой. Когда это делается, сделанные разработчиком DLLs файлы пакуются и инсталлируются совместно с приложением. Неувязка состоит в том, как приложение загружает DLLs. По дефлоту, когда для приложения не указан статический путь к DLL, требуемый для этого приложения, оно производит процесс его динамического поиска. Выполняя эту функцию, приложение поначалу делает поиск в каталоге, из которого оно производилось, а потом делает поиск в системном каталоге, 16-разрядном системном каталоге, каталоге windows, в текущем каталоге, а позже в каталогах, перечисленных в переменной среды ПУТЬ операционной системы. При поиске по этим путям приложение будет использовать 1-ый DLL, который оно отыщет.

Зная это, давайте представим для себя ситуацию, в какой мы выполнили приложение, требующее динамический поиск нужного DLL файла при загрузке. Приложение немедля делает поиск по пути, с которого оно было выполнено и находит подходящий DLL. К несчастью для конечного юзера, действительный DLL файл, связанный с приложением, размещен в системном каталоге Windows. DLL-файл, помещенный в каталог с приложением, представляет собой файл, который был изменен злоумышленником и который позволяет удаленно делать командную оболочку в системе. Естественно, приложение никогда не получит действительный DLL файл, так как оно уже отыскало нужный файл. Шах и мат.

Определение уязвимых приложений

Основной неувязкой с атаками перехвата DLL будет то, что компания Microsoft не можно выпустить единое исправление для всех уязвимых приложений. Это нереально поэтому, что это просто может привести к неправильной работе (либо полному отказу в работе) неких приложений. Беря во внимание это, исправление заморочек является делом 2-ух сторон. С одной стороны, компании и разработчики, создавшие уязвимые приложения, должны поправить собственный код и предоставить юзерам обновления. С другой стороны, юзеры (а именно системные админы) должны найти, употребляются ли в их сети уязвимые приложения, и отыскать и установить исправления, предоставляемые поставщиками программ.

Есть пара методов определения уязвимости применяемых приложений. Самым обычным методом является проверка общественных ресурсов, выложенных исследователями в области безопасности, которые уже выполнили основную работу. Одним из таких нужных ресурсов является этот ресурс, содержащий достаточно большой перечень.

Анализ атак перехвата DLL

Набросок 1: Перечень уязвимых приложений Exploit DB

2-ой метод просит больше работы, но должен производиться в средах с высочайшей степенью безопасности. Вы, может быть думаете, что эти вещи чисто технические и обычно с ними работают спецы безопасности высочайшего уровня, и, обычно, вы будете правы. Но в собственной бескрайней мудрости HD Moore знал о величине этого вектора атак и разработал набор аудита, который может употребляться для поиска уязвимых приложений в системе.

Этот набор именуется DllHijackAuditKitv2 и его можно отыскать тут. После загрузки нужно зайти в систему с правами админа, извлечь составляющие из ZIP файла и выполнить 01_StartAudit.bat. Этот сценарий загрузит монитор Sysinternals Process Monitor и начнет проверку системы на уязвимые приложения. Запустив этот инструмент пару раз, я нашел, что загрузка монитора процессов почаще оказывается неуспешной, чем удачной, потому если такое происходит при выполнении сценария, вы сможете вручную загрузить монитор Process Monitor отсюда. После загрузки просто удостоверьтесь, что Process Monitor размещен в том же каталоге, что и сценарии аудита. Для пуска исходного сценария аудита будет нужно определенное время. Зависимо от количества приложений в вашей системе может потребоваться от 15 минут до часа.

Анализ атак перехвата DLL
Прирастить

Набросок 2: Аудит приложений, связанных с определенными расширениями файлов

После окончания работы сценария аудита нужно перейти на приложение монитора процессов, которое были инициировано сценарием и сохранить сгенерированный им отчет. Для этого нажмите Файл и Сохранить. Непременно сохраните файл в формате CSV с именованием Logfile.CSV в каталоге набора аудита.

Дальше запустите сценарий 02_Analyze.bat. Этот сценарий проанализирует CSV файл и обусловит потенциальные уязвимости. Если уязвимость будет найдена, приложение автоматом сгенерирует код средства атаки, который можно использовать для демонстрации уязвимости.

Анализ атак перехвата DLL

Набросок 3: 2-ой сценарий автоматом пробует использовать обнаруженные уязвимости

По окончании, интерпретатор команд, оставленный открытым сценарием, должен выдать перечень приложений, которые были удачно применены для атаки. Для каждого такового приложения сценарий создаст подкаталог в каталоге средств атаки. Эти подкаталоги содержат рабочие средства атаки для соответственных приложений. В недобрых руках эти средства атаки могут делать такие ужасные вещи, как пуск командных оболочек и прослушивателей темного хода (back door listeners). Это просто примеры способности использования средств атаки, потому они запускают приложение калькулятора (calc.exe), чтоб показать существование уязвимости.

Имея такую информацию, вы сможете найти наличие уязвимых приложений в вашей среде. На этом ранешном шаге игры, если вы используете Windows, то вы непременно отыщите уязвимости, потому что ряд исправлений еще выпущен. Кроме этого, если вы отыщите уязвимые приложения, для их необходимо проверить наличие исправлений у производителя. Если таких исправлений нет, то рекомендуется связаться с производителем и предоставить ему код средства атаки, чтоб разработчик мог поправить уязвимость приложения. Даже если производители уже знают об уязвимости собственных приложений, избыточное напоминание не повредит им и может ускорить процесс.

Предотвращение атак

Пока вы ожидаете выхода исправления приложений, есть ряд моментов, которые можно сделать для ограничения собственной подверженности атакам перехвата DLL.

Установка исправления CWDIllegalInDllSearch Fix

Первой реакцией компании Microsoft на этот класс уязвимостей стал выпуск модификации системного реестра, которая позволяет понизить потенциальную опасность таких атак методом конфигурации механизма работы динамической загрузки DLL. Это исправление необходимо устанавливать очень осторожно, так как оно может воздействовать на работоспособность установленных приложений, но его стоит протестировать, если вы обеспокоены атаками такового типа. Информацию об этом исправлении можно поглядеть тут.

Блокировка исходящих SMB в демилитаризованной зоне

Большая часть организаций уже делает это, но если в вашей организации это еще не практикуется, самое время начать. Это также позволит предупредить ряд других атак.

Деинсталляция уязвимых приложений

Это может быть не всегда вероятным, но если у вас есть уязвимые приложения, которые можно поменять более надежными приложениями, то лучше так и сделать.

Установка программ определения вторжения

В неких случаях вы просто не можете понизить возможный риск выполнения атак подабающим образом. В итоге, наилучшим вариантом будет поимка взломщика с поличным. Внедрение таких товаров, как Snort, является бесплатным (не считая издержки на аппаратное обеспечение) и делает хорошую работу для определения сигнатур активности после атак, которые могли появляться после того, как кто-нибудь использовал средство атаки на уязвимой машине.

Заключение

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

Аналогичный товар: Комментирование на данный момент запрещено, но Вы можете оставить ссылку на Ваш сайт.

Комментарии закрыты.