До поры до времени система OS X не представляла интереса для троянописателей, и вредоносы под нее проходили под термином lamware (ламерское malware). Но, как бы ни хотелось маководам этого избежать, в прошлом году беда пришла и в их гламурненькие домики. 2012 год открыл сезон: FlashFake (aka FlashBack), Imuler, SabPab и Crisis — что объединяет эти страшные слова? Да то, что все эти вредоносные программы разработаны для атаки компьютеров с эмблемой надкусанного яблока. Об этих вредоносах и пойдет речь.

 

Первая эпидемия

Фейковый флеш

Небезызвестная компания «Лаборатория Касперского» в марте 2012-го обнаружила ботнет на базе ни много ни мало около 600 тысяч компьютеров c OS X. Среди общего количества больше половины из них находились на территории США (см. рис. 1). Четверка лидеров:

  • США — 303 449;
  • Канада — 106 379;
  • Великобритания — 68 577;
  • Австралия — 32 527.

Все они были заражены трояном, который получил название FlashFake. Такое имя было выбрано потому, что он маскировался под установщик Adobe Flash Player. Первые версии FlashFake были обнаружены в сентябре 2011-го.

Рис. 1. Где «жил» FlashFake 4 апреля 2012 года
Рис. 1. Где «жил» FlashFake 4 апреля 2012 года

FlashFake использовал для связи со своими командными серверами механизм DGA (Domain Generation Algorithm — алгоритм генерации доменных имен), генерировавший случайные доменные имена в зависимости от текущей даты, по пять штук в день. Этим не преминули воспользоваться сотрудники антивирусных компаний для развертывания sinkhole-маршрутизаторов, чтобы оценить примерное количество заражений. Жаль, что компания Dr.Web не сообщила об этом компании Apple — последняя подала запрос на отзыв одного из доменных имен, используемого Dr.Web для работы своего sinkhole-маршрутизатора… Помимо DGA, в коде FlashFake имелось 25 жестко заданных С&C.

Основная «заслуга» FlashFake состоит в том, что теперь для заражения малварью не требовалось каких-либо действий со стороны пользователя Mac — кроме, разумеется, посещения странички с вредоносными редиректами. До него трояны для OS X маскировались под установочные файлы, и для их успешной работы пользователь должен был ввести пароль администратора, что существенно снижало риск заражения. Поначалу и FlashFake использовал похожую методику, заражение происходило достаточно примитивным и старым как мир способом: при посещении пользователем вредоносного сайта выдавалось сообщение, что для корректного отображения страницы нужно установить последнюю версию Flash Player. Если пользователь решал, что ему это жизненно необходимо, и соглашался, устанавливался поддельный инсталлятор с расширением dpg или mpkg. К слову сказать, инсталлятор выглядел достаточно презентабельно и правдоподобно (см. рис. 2). В каталог /Library/Preferences помещался файл Preferences.dylib, который и осуществлял всю вредоносную деятельность. В качестве идентификатора зараженной системы использовался MD5-хеш от UUID компьютера (Universally Unique Identifier — уникальный 16-байтный номер, генерируемый ОС). Чтобы затруднить жизнь сотрудников антивирусных компаний, вся коммуникационная деятельность между ботом FlashFake и командным сервером шифровалась по алгоритму RC4. Для защиты от подмены управляющий сервер должен был вернуть «правильный» отзыв, представляющий собой свой собственный адрес, подписанный RSA-2048 ключом злоумышленников c дайджестом MD5 и преобразованный в base64.

Рис. 2. Фейковый инсталлятор Adobe Flash — найди хоть одно отличие
Рис. 2. Фейковый инсталлятор Adobe Flash — найди хоть одно отличие

Понимая, что true malware должно запускаться автоматически, а не ждать, пока пользователь соблаговолит нажать кнопку «Установить», разработчики FlashFake с февраля 2012 года в, так сказать, второй версии начали использовать для распространения своего творения уязвимости виртуальной машины Java CVE-2011-3544 и CVE-2008-5353. Для их эксплуатации применялись вредоносные файлы rhlib.jar и clclib.jar соответственно. Кроме того, применялся еще файл ssign.jar, который не содержал в себе никаких эксплойтов, а просто был подписан недействительной подписью в надежде, что пользователь добавит эту подпись в список доверенных и тем самым разрешит выполнение кода.

Как видно уже из названия, CVE-2008-5353 — уязвимость достаточно старая, да и о CVE-2011-3544 информация была опубликована еще 18 октября 2011 года, то есть была ни разу не zero day на момент распространения FlashFake. Oracle выпустила патч для нее в том же месяце. В настоящее время CVE-2011-3544 лидирует по успешному «пробиву» защиты браузеров и используется в большинстве эксплойт-паков, например BlackHole. После 16 марта стал применяться эксплойт для уязвимости CVE-2012-0507. И опять-таки Oracle закрыла эту уязвимость в феврале, а корпорация Apple выпустила исправление для нее только 3 апреля 2012 года.

Каким же образом происходило заражение? Есть сведения, что в поисковой выдаче Google присутствовало около четырех миллионов веб-страниц, содержащих редиректы на вредоносный jar-файл. Некоторые пользователи даже отмечали случаи заражения FlashFake при посещении сайта компании D-Link! В качестве площадок для размещения вредоносных редиректов использовались взломанные через неизвестную уязвимость блоги, функционирующие под управлением WordPress.

Прежде чем загрузить троян, вредоносный Java-апплет проверял систему на наличие пакета разработчика X Code или файрвола LittleSnitch (а также некоторых других приложений антивирусной направленности). Если нежелательные программы присутствовали, установка не производилась. Вероятно, таким образом зло- умышленники пытались отодвинуть момент обнаружения FlashFake каким-либо «продвинутым» пользователем.

В случае успешного запуска загрузчик FlashFake, находящийся в jar-файле, связывался с командным центром и загружал два модуля, один из них был основным и отвечал за дальнейшее взаимодействие с C&C и обновление себя, а второй использовался для внедрения в браузер.

Основной модуль копировался в каталог $HOME под случайным именем, в начале которого была точка, например .null. Для автозапуска FlashFake использует фичу OS X под названием Scripting additions. Изначально она была предназначена для расширения функционала установленных приложений другими приложениями. Фактически это механизм легального внедрения кода в другие процессы, что и было использовано злоумышленниками. Ссылка на основной модуль помещалась в файл $HOME/Library/LaunchAgents/.plist, это обеспечивало передачу ему управления при запуске любого приложения. Административные права для этого не требовались, так как запись производилась в каталог текущего пользователя.

Рис. 3. FlashFake «просит» пароль
Рис. 3. FlashFake «просит» пароль

Внедряемый модуль, используемый для перехвата трафика и подмены страниц в браузере, устанавливался одним из двух способов. Пойдя по пути наименьшего сопротивления, первым делом он пытался внедриться в браузер Safari. Правда, для этого ему необходимы были права root. Для их получения перед пользователем демонстрировалось окно ввода административного пароля (рис. 3), якобы для нужд обновления программного обеспечения. Если такой вариант не проходил, существовал план B. Согласно ему внедряемый модуль под именем .libgmalloc.dylib помещался в /Users/Shared, а в файл environment.plist в $HOME/.MacOS вносилась следующая информация:

<key>DYLD_INSERT_LIBRARIES</key>
<string>/Users/Shared/.libgmalloc.dylib</string>

В результате .libgmalloc.dylib внедрялся во все приложения. План B не использовался, если в системе обнаруживались приложения из состава Microsoft Office 2008/2011 и Skype. Apple прикрыла фичу с DYLD_INSERT_LIBRARIES, начиная с версии Lion 10.7.4.

Последние (на момент сдачи статьи в печать) версии FlashFake отметились использованием механизма поиска своих управляющих центров через Twitter. Также, очевидно, разработчики решили упростить себе работу по написанию кода и вынесли функционал перехвата и подмены контента для браузера Firefox в отдельный плагин xpi, маскирующийся опять-таки под Adobe Flash.

Вволю поэксплуатировав вычислительные мощности ничего не подозревающих пользователей, неустановленные злоумышленники свернули лавочку в мае 2012-го. Именно тогда перестали функционировать командные центры. Профит заключался в накрутке трафика посещения сайтов (доход от рекламы) и манипуляциях с поисковой выдачей (сервис продвижения сайтов «запрещенными» методами BlackSeo). Вера пользователей Маков в свою «безопасную» платформу несколько пошатнулась, а Apple даже удалила установку Java по умолчанию из стандартной конфигурации установки системы.

 

Вторая эпидемия

Цель — Тибет

Весь 2012 год прошел под девизом «побольше маковских троянов в Тибете, хороших и разных». Речь идет об эпидемиях с политическим подтекстом, связанных с давней борьбой Тибета за независимость от Китая. Первой ласточкой было семейство Revir/Imuler по классификации F-Secure, двойное название которого объясняется так: Revir — это дроппер, а Imuler — бэкдор (Dr.Web его называет Muxler), устанавливаемый дроппером. Обнаруженный еще осенью 2011 года первый вариант Revir.A, скорее всего, был пробным шаром. Да и вообще, все его семейство модификаций как нельзя лучше подходит под определение lameware, методы он использовал донельзя примитивные. Однако, если рассматривать все через призму политической направленности, возникает впечатление, что создатели руководствовались принципом Оккама — не нужно ничего усложнять без надобности. В самом деле, зачем все эти новомодные эксплойты и куча кода, когда методы социальной инженерии и так прекрасно работают?

Но вернемся к нашему Revir.A — он представлял собой исполняемый файл, который маскировался под PDF. В диком виде образец так и не был найден, так что остается только догадываться, под каким соусом его подавали пользователю, есть мнение, что через целенаправленную рассылку конкретным лицам. Запущенный Revir.A извлекал из себя PDF-файл на китайском языке и демонстрировал его пользователю. Одновременно с удаленного сервера скачивалась и запускалась полезная нагрузка — Imuler.A.

В результате в каталоге /Users/{имя пользователя}/library/LaunchAgents оказывался основной модуль checkvir, создавалась ссылка на него в checkvir.plist, а в /Users/{имя пользователя}/library — файл .confback с адресами командных центров. Инструкции, получаемые с С&C, предусматривали выполнение следующих команд:

  • загрузить файл с удаленного сервера;
  • запустить файл на выполнение;
  • собрать и отправить системную информацию — внешний и внутренний айпишник, MAC-адрес, версию ядра ОС и имя юзера;
  • отправить интересующие файлы в архиве;
  • отправить скриншот экрана.

Вариация Revir.B, так же как и Revir.A, скрытно устанавливала Imuler.A, но маскировалась уже под JPG.

Судя по всему, авторы не унывали, вдумчиво почитали журнал FHM South Africa за март 2012-го с российской моделью Ириной Шейк на развороте и замутили очередную попытку обмана доверчивых пользователей. Нагугленные сочные скриншоты были помещены в архив FHM Feb Cover Girl Irina Shayk H-Res Pics.zip. Кроме того, туда же был помещен Revir.C, обладающий миниатюрой картинки (рис. 4). По умолчанию расширения файлов в OS X не отображаются, так что шансы на запуск увеличивались. Для усложнения жизни антивирусным исследователям полезная нагрузка была зашифрована по алгоритму RC4, в качестве ключа вредоносное приложение использовало первые 2048 байт картинки, отображаемой пользователю при запуске. Архив с Revir.D и другим набором картинок назывался Pictures and the Ariticle of Renzin Dorjee.zip. Бэкдор сменил название своих файлов (но не функционал) и стал идентифицироваться как Imuler.B. Уже тогда было сделано предположение, что распространение данных угроз связано с китайско-тибетским конфликтом и направлено против различных активистских организаций, борющихся за независимость Тибета. Архив, рассылаемый в октябре 2012-го, уже не оставлял в этом никаких сомнений. Все три фотографии с изображениями представителей тибетских организаций были на самом деле вредоносными приложениями Revir.E.

Рис. 4. Содержимое архива с Revir.C — исполняемый файл прячется среди JPG-ов
Рис. 4. Содержимое архива с Revir.C — исполняемый файл прячется среди JPG-ов

Весной против тибетских активистов использовались и более технологичные разработки, относящиеся к классу APT. По горячим следам уязвимости Java, используемой Flashback (CVE-2012-0507), в апреле 2012 года в свет выходит еще одна разработка, троян SabPub.

 

Что такое APT?

Термин APT (Advanced Persistent Threat) был введен Военно-воздушными силами США в 2006 году для описания нового класса атак. Вредоносы, подпадающие под эту категорию, отличаются точным целенаправленным воздействием и постоянной ручной корректировкой процесса получения информации, что подразумевает тщательный сбор данных о будущей жертве. В качестве примера можно привести случай, когда в ходе проведения пентеста аудиторы узнали о пристрастии администратора сети к аниме, создали свой сайт, раскрутили его и завлекли на него админа. После этого были украдены куки и осуществлен вход в систему от его имени. Пример, конечно, не совсем корректный. В современных реалиях на сайте бы разместили эксплойт уязвимости браузера, который использует админ. В настоящее время под APT подразумевают вредоносное ПО, адресно рассылаемое конкретным лицам через электронную почту и внедренное в файлы DOC, RTF или PDF. Запуск осуществляется через эксплойт уязвимостей приложений, которые открывают файлы данных форматов.

Java-дроппер извлекал в каталог /Users/{имя пользователя}/Library/Preferences полезную нагрузку под именем com.apple.PubSabAgent.pfile и прописывал ее в файле com.apple.PubSabAGent.plist в этом же каталоге для последующей загрузки. Нагрузка выполняла типично шпионские функции: формирование списка файлов, отправку интересующих файлов, а также скриншотов на удаленный сервер. В качестве средства доставки, кроме Java-апплета, также использовался файл doc, содержащий в себе эксплойт уязвимости MS09-027. Помимо SabPub, уязвимости CVE-2012-0507 и MS09-027 использовались для распространения вредоносов Olyx и Macontrol. Антивирусные компании любят все усложнять, и в их статьях можно встретить наименование Lamadai, под ним скрываются Olyx.B (Lamadai.A) и Sabpab.A (Lamadai.B).

В общем, несмотря на наличие многих технологических решений защиты компьютеров, атаки на OS X не слишком сильно отличаются от атак на Windows. Технологии меняются, пользователи — нет. Многие не следят за появлением исправлений системы, не устанавливают вовремя обновления безопасности, переходят по всякого рода сомнительным ссылкам и рассматривают фотографии эротического содержания, непонятно откуда скачанные. И еще раз, для скептиков: права root для всего этого не нужны.

 

Третья эпидемия

Опять какой-то Crisis

Crisis — именно такая строка содержалась внутри кода очередного образца вредоносной программы, обнаруженного компанией Intego в июле 2012 года на известном сайте проверки подозрительных файлов VirusTotal. Подобный образец был прислан также в компанию «Доктор Веб». Crisis был кросс-платформенным трояном и мог инсталлироваться на компьютеры как с ОС Windows, так и с OS X. В то время Crisis не был обнаружен in the wild, да и Kaspesrky Lab в своей сети Kaspersky Security Network, работающей на базе компьютеров с установленным антивирусом Касперского, ничего похожего не детектировал. Так что был сделан вывод, что Crisis — инструмент для проведения точечных атак. В настоящее время существуют несколько образцов, которые отличаются используемыми внутри себя именами файлов.

Инфицирование компьютера начинается с запуска вредоносного Java-апплета с названием AdobeFlashPlayer.jar, который имеет цифровую подпись, созданную при помощи самоподписанного сертификата, якобы принадлежащего компании VeriSign. Если пользователь будет достаточно беспечен, он, несмотря на все предупреждения системы о недоверенном сертификате, нажмет кнопку «Принять», что и приведет к внедрению вредоноса в систему. В зависимости от целевой платформы, из Java-апплета извлекается, сохраняется на диск и запускается установочный модуль Win- или Mac-архитектуры. Стоит заметить, что Crisis не использует для своей работы никаких эксплойтов уязвимостей. Это, вероятно, сделано для затруднения будущих детектов по сигнатуре эксплойта. Кроме того, после массового пропатчивания уязвимостей Crisis перестал бы нормально запускаться. А так все работает — социальная инженерия рулит! К тому же недостаток эксплойтов с лихвой перекрывается встроенным функционалом слежения за деятельностью пользователей зараженных компьютеров. Вот краткий перечень:

  • download и upload произвольных файлов;
  • запуск исполняемых файлов;
  • аудио- и видеосъемка с использованием обнаруженных микрофона и веб-камеры;
  • запись нажатий клавиш клавиатуры;
  • сохранение содержимого буфера обмена;
  • снятие скриншотов экрана;
  • кража информации из адресных книг;
  • слежение за активностью пользователя в браузере;
  • перехват сообщений в приложениях Instant Messenger и Skype;
  • получение Wi-Fi-информации (в Windows-версии), такой как идентификатор сети SSID и мощность сигнала RSSI, это позволяет определять расположение зараженного компьютера.

Перечень целевых приложений см. на рис. 5. Далее будет описываться одна из возможных Mac-версий инсталлятора Crisis, который имел внутри себя следующие файлы: * IZsROY7X.-MP — основной модуль; * eiYNz1gd.Cfp — конфигурационный файл; * lUnsA3Ci.Bz7 — модуль внедрения в целевые процессы; * WeP1xpBU.wA- — руткит для 32-битной платформы; * 6EaqyFfo.zIK — руткит для 64-битной платформы; * q45tyh — TIFF-файл с иконкой.

Рис. 5. Перечень целевых приложений Crisis
Рис. 5. Перечень целевых приложений Crisis

Конфигурационный файл eiYNz1gd.Cfp, содержащий, в частности, IP-адрес управляющего центра, зашифрован фиксированным 128-битным ключом по алгоритму AES.

Инсталлятор содержит в себе множество компонентов, про-цедура их установки зависит от того, имеются ли у текущего пользователя права администратора системы, а также от версии OS X. При установке с правами root пути имеют вид:

  • каталог для файлов Crisis /Library/ScriptingAdditions/appleHID/;
  • файл модуля внедрения /Library/ScriptingAdditions/appleHID/Contents/MacOS/{файл};
  • файл автозагрузки /Library/LaunchAgents/com.apple.mdworker.plist;
  • файл руткита /Library/ScriptingAdditions/appleHID/Contents/Resources/ {имя файла}.kext/Contents/MacOS/{имя файла}.

Для автозапуска Crisis использует сходную с FlashFake методику использования Scripting Additions — ссылка на основной модуль IZsROY7X.-MP помещается в файл com.apple.mdworker.plist, что обеспечивает передачу ему управления при запуске любого приложения. Режим установки руткита определяется специальной переменной — символьной строкой, принимающей значения «Ah56K» или «Ah57K». Одно из этих значений жестко задавалось в коде в виде константы. При значении «Ah57K» производится попытка установки руткит-компонента из-под учетной записи с ограниченными правами путем запроса у пользователя пароля через подложную форму. Эта форма отображала иконку «System Preferences», которая содержалась в TIFF-файле q45tyh. При значении «Ah56K» руткит устанавливался, только если пользователь сидел под рутом.

Функционально версии Crisis для Mac и Win почти идентичны, но Win.Crisis имеет несколько дополнительных фишек, о которых стоит упомянуть. Шпионский функционал дополнен кражей информации пользователя из facebook.com (друзья), twitter.com (фолловеры) и gmail.com (мыло), вероятно для использования в методах социальной инженерии. Windows-версия имеет механизмы самораспространения. В частности, Win.Crisis заражает мобильные устройства под управлением Windows Mobile и Windows Embedded (но не Windows Phone) и распространяется через USB Flash носители, используя метод Stuxnet — уязвимость в обработке ярлыков MS10-046. Кроме того, заражаются образы виртуальных дисков VMware. Остается только догадываться, зачем нужна такая функция, но она есть.

Для инфицирования виртуальных машин в файле %UserProfile%\Application Data\VMware\preferences.ini ищутся строки, ссылающиеся на файлы .vmx, которые содержат параметры отдельных виртуальных машин. Файл .vmx парсился для получения имени файла .vmdk, найденный файл монтировался как диск Z при помощи утилиты командной строки VMware vixDiskMountServer.exe, и на него записывался инсталлятор по путям Z:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup{имя файла} — для Windows Vista/Seven и Z:\Documents and Settings\All Users\Start Menu\Programs\Startup{имя файла} — для Windows XP. Правда, процедура для XP терпела неудачу, возможно, это баг разработчиков. Многие антивирусные конторы называют Crisis по-разному. Symantec пошел на поводу у злоумышленников и использует наименование Crisis, как и было задумано. Kaspersky Lab называет эту вредоносную программу Morcut, Microsoft на пару с Eset — Boychi. Или вот компания Dr.Web — имя, выбранное ими, DaVinci, не случайно. Сотрудники Intego утверждают, что Crisis является частью системы удаленного управления DaVinci, разработанной компанией Hacking Team из города Милана, Италия. Сами Hacking Team позиционируют свой продукт как средство слежения, разработанное для использования правительствами и правоохранительными органами различных государств. Ценник потрясает воображение — целых 200 килоевро! В цену заложены обязательства по постоянному обновлению и поддержке продукта, пока конечная цель атаки по получению нужной информации не будет достигнута. Конкурентом на этом поприще является контора Gamma International из Великобритании со своим продуктом FinFisher, под который даже собственный сайт запилили. В то же время эксперты Kaspersky Lab утверждают: никаких конкретных доказательств, что Crisis разрабатывали в Hacking Team, нет. Ну а лишних 200 тысяч евро, чтобы проверить, кто там и что разрабатывал, у нас в редакции не лежит :(.

При анализе Crisis выявилось большое количество багов проектирования. Например, инсталлятор проверял, не установлен ли уже Crisis в систему. Для этого производилось обращение к специально созданному руткитом символьному устройству /dev/pfCPU. Фишка в том, что руткит, по своей сути, должен скрывать все свои проявления в системе, в том числе не светиться /dev/pfCPU, а использовать другие пути выявления своей запущенной копии. Вот такой простенький код для демаскирования файлов после Crisis:

#include <fcntl.h>

void main(void) {
int fd = open("/dev/pfCPU", O_RDWR);
if (fd == -1) {
    printf("Crisis rootkit device not found!\n");
    return;
}

int ret = ioctl(fd, 0x80ff6b26, "XAKEP");
if (ret == -1)
    printf("Function ioctl failed!\n");
else
    printf("Files hidden by Crisis unmasked!\n");
}

Еще баг — руткит скрывал себя в списке процессов ядра, но не подправлял их общее количество. В результате чего можно было наблюдать следующую картину (см. рис. 6). Ну и наконец, для связи со своим командным центром он использовал жестко заданный в конфигурационном блоке данных сервер с IP-адресом 176.58.100.37. Канал передачи шифровался, однако никакой авторизации при обмене данными с C&C не было предусмотрено вообще! Исследователь внутренностей OS X под псевдонимом reverser провел некоторые изыскания и выяснил, что, если взять тушку Crisis и выдрать из нее конфиг, не составляет большого труда поменять адрес C&C на свой, зашифровать все обратно и внедрить конфиг на место. Правда, возникают трудности с управляющим центром. Для того чтобы его получить, нужно либо ломать сервак и сливать все скрипты с него, либо «немножко» отреверсить Crisis и написать свою версию. В любом случае это получится дешевле 200 тысяч евро. Кстати, на сайте reverser можно найти массу интересной информации на английском языке, касающейся исследований malware под OS X.

Рис. 6. Руткит Crisis «забыл» кое-что подправить
Рис. 6. Руткит Crisis «забыл» кое-что подправить
 

Заключение

Думаю, к этому моменту ты уже убедился, что компьютеры Mac не обладают абсолютным иммунитетом к вредоносным программам. Конечно, по сравнению с объемом вредоносного ПО для Windows количество зловредов для OS X пока незначительно. Но и масштабы распространенности платформы Mac несопоставимы с Windows. Со стороны пользователей Mac было бы наивно полагать, что они защищены от атак malware на все сто. Как показала практика, здесь тоже есть чем поживиться. Речь идет не только о массовых угрозах, таких как полумилионный ботнет FlashFake, принесший хозяевам некоторое количество зеленых бумажек путем монетизации сервиса BlackSeo и кликанья по рекламным баннерам. Тут вам и целевые атаки на конкретные цели, и шпионские схемы мониторинга пользователей отдельно взятых стран. Спрос есть, деньги солидные, за них можно и под OS X писать. Таким образом, угрозы для Mac вполне реальны, и в дальнейшем их число, скорее всего, будет только расти. Следите за нашими публикациями!

Оставить мнение

Check Also

Как сделать игру. Выбираем движок и пишем клон тех самых «танчиков»

С каждым днем игры становятся все сложнее и навороченнее. Быть инди, а точнее соло-разрабо…