24.07.2011

Уязвимость загрузки DLL на практике

image

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

Бруно Филип (bmilreu[]at[]gmail.com))

Загрузка DLL (dll hijacking) является новым типом атаки Windows. Эта уязвимость, насколько мне известно, вызвана неправильным функционированием во всех версиях Windows. Объяснение этого поведения можно найти на этой странице MSDN. Стоит отметить, что многие считают этот недостаток лишь возможностью, но не настоящей ошибкой, потому что таким образом это и задумывалось в Microsoft. Я категорически не согласен с этим, т.к. не могу представить ни одного разумного использования процедуры загрузки DLL из той же директории, что и открываемый файл.

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

Подобные уязвимости присутствуют во многих известных программах. Таким образом, можно приложить DLL к файлу почти любого типа, например, к таким как PDF, HTML, JPG, MP3, AVI и другим. Даже некоторые Windows приложения уязвимы. Peter Eeckhoute из команды corelan начал составлять неофициальный список, с которым можно посмотреть здесь. Скорее всего, вы используете многие уязвимые приложения. Вы должны ознакомиться с этим списком, если вы используете Windows вне зависимости от версии или редакции.

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

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

  • Использование общей папки SMB/WebDav

Наверное, это наиболее широко применяемый способ DLL загрузки, возможно, потому что он может быть использован удаленно. Существует модуль для Metasploit, который использует это направление. Он помещает вредоносный DLL вместе «чистым» файлом, который запускает его в общей папке, открывая этот «чистый» файл. Помните, что ссылка на общую папку всегда начинается с двойной черты (\\123.45.67.890).

Практические примеры:

  1. Злоумышленник отправляет ссылку на общую папку жертве. Жертва открывает ее и видит несколько .html файлов и открывает один из них. Когда уязвимый браузер или приложение открывает этот файл, он загружает dll напрямую из общей папки и заражает жертву.
  2. Злоумышленник размещает ссылку на форуме, которая выглядит как http ссылка, но перенаправляет жертву на общую папку. Жертва открывает простой .pdf файл и заражается.
  3. Злоумышленник получает доступ к доверенному веб-сайту, и вставляет iframe или перенаправление на общую папку. Жертва доверяет этому сайту и открывает .mp3 файл внутри общей папки и… так же заражается.
  4. Злоумышленник использует ошибку в файлах ссылок .lnk или любую уязвимость браузера вместе с описанными выше примерами и таким образом повышает шанс заражения.

Совет: Этот тип атак может быть нейтрализован закрытием любых исходящих подключений к общим папкам SMB/WebDav. Порты 445 и 135.

  • Архив (.zip, .tar.gz, .rar, и т.д.)

Для использования данного направления достаточно запаковать множество «чистых» файлов и вредоносный DLL в сжатую папку/архив. Жертва извлечет эти файлы и откроет один из них, запустив DLL злоумышленника.

Практический пример:

  1. Злоумышленник сжимает 30 jpg картинок и dll в zip файл. Жертва извлекает все в папку и открывает одну из картинок. Жертва заражена.

Не буду описывать остальные примеры, потому что они похожи.

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

  • Торренты

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

Практические примеры:

  1.  Злоумышленник размещает торрент на публичном трекере, который содержит много mp3 файлов и вредоносный DLL. Жертва собирается послушать новый альбом и заражается.
  2. Злоумышленник получает доступ администратора к базе данных торрент трекера (недавно это случилось с ThePirateBay) и заменяет торрент с высоким трафиком на зараженный. Это может вызвать крупное заражение в течение нескольких минут.

Совет: Тот же совет, что и выше. Убедитесь, что в папке нет DLL файлов прежде чем открывать файл любого типа. Если у вас трекер или база данных, убедитесь, что веб-сервер или база данных не подвержены любым типам уязвимостей, как например SQL-инъекции, XSS и т.д.

  • Использование уязвимостей нескольких приложений

Я еще не встречал на практике вредоносное ПО, которое использовало бы загрузку DLL по максимуму. Но один из способов, которым злоумышленники могут воспользоваться (и воспользуются)- размещение нескольких DLL файлов.

Практический пример:

  1. Злоумышленник открывает доступ к общей папке, которая содержит много .avi файлов и три вредоносных DLL: одну для VLC, другую для Media Player Classic и последнюю для Winamp. Злоумышленник может воспользоваться уязвимостями трех приложений, увеличивая шанс заражения жертвы.

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

CAPTCHA
27-07-2011 08:22:46
"Я категорически не согласен с этим, т.к. не могу представить ни одного разумного использования процедуры загрузки DLL из той же директории, что и открываемый файл." Как то писал прогу на QT. Удобно было, когда QtCore.dll и прочие работали сразу рядом с exe.
0 |
Евгений
27-07-2011 09:20:58
Я тоже не сразу понял особенности формулировок, видимо перевод кривой (или автор). Речь идет не о загрузке dll из того каталога, где сам exe'шник (это как раз нормально и используется большинством), а о самой возможности загрузки dll из текущего каталога, причем в первую очередь.
0 |
27-07-2011 16:46:34
так никто и не посмеялся над IP 123.45.67.890 по сабжу: вроде хотели о интересной вещи рассказать, а получилось: "не нажимайте на кнопки, которые не стоит нажимать"
0 |
termnator1990
27-07-2011 19:24:09
Интересно... Но если статья про практику, то почему нет слова Filemon ? По моему, лучший способ узнать, что хочет "скушать" процесс.
0 |
27-07-2011 23:08:02
Вы из какого века? Файлмон дааааавным давно уже не поддерживается и имеет название процесс монитор.
0 |
Металлист
01-08-2011 09:46:01
Ожидал от статьи большего. Известно что все паблик способы dll-инжекта(манипуляция потоками,создание новых потоков и т.п.)палевны. Нормальный (относительно)только через APC,однако изобрести самому что-нибудь новое за недельку труда не составит. Это то что малвара касается,а если через сплоит грузить то способ конечно неплохой.
0 |