XcodeGhost
XcodeGhost (вариант — XcodeGhost S) — модифицированные версии среды разработки Xcode от компании Apple, считающиеся вредоносным ПО[1]. Программа привлекла широкое внимание в сентябре 2015 года, когда в ряде приложений, распространявшихся из Китая, был обнаружен вредоносный код[2]. По данным BBC, это расценивалось как «первая атака на App Store Apple в больших масштабах»[3]. Проблема была впервые обнаружена исследователями из Alibaba, крупного китайского предприятия в сфере электронной коммерции. По данным FireEye, было заражено более 4000 приложений — существенно больше, чем 25, которые первоначально признавала компания Apple[4], в том числе программы, авторы которых находились за пределами Китая.
По мнению компании Palo Alto Networks, из-за медленного интернет-соединения в Китае многие разработчики вместо скачивания Xcode с серверов Apple обращались к локальным копиям среды разработки, зачастую размещённым на внутренних китайских ресурсах; эти копии были изменены злоумышленниками, которые добавили вредоносный код. В результате вредоносное ПО попало в популярные приложения для устройств на iOS[5][6].
Даже спустя два месяца после первых сообщений компания FireEye отмечала, что сотни организаций продолжают использовать заражённые приложения, а XcodeGhost остаётся значимой угрозой безопасностии[7][8]. FireEye также обнаружила новую версию вредоносной программы (XcodeGhost S); среди наиболее известных заражённых приложений были мессенджер WeChat и приложение «Music 163» от NetEase[9].
Обнаружение
16 сентября 2015 года китайский iOS-разработчик сообщил[10] в социальной сети Sina Weibo, что одна из версий Xcode внедряет сторонний код в собираемые приложения.
Исследователи Alibaba затем опубликовали[11] подробный анализ вредоносной программы, впервые употребив название XcodeGhost.
17 сентября 2015 года Palo Alto Networks выпустила серию отчётов о вредоносном ПО[12][13][14][15].
Принцип действия
Из-за низкой скорости скачивания файлов с серверов Apple китайские разработчики загружали установщики Xcode с альтернативных сайтов (например, Baidu Yun, ныне Baidu WangPan), либо получали копии от коллег. Злоумышленники воспользовались ситуацией, распространяя на подобных файловых ресурсах заражённые версии Xcode[16].
Согласно исследованию Palo Alto Networks, вредоносная программа могла распространяться с марта 2015 года[15].
Атака была реализована по принципу закладки в компилятор. Особенность заключалась в модификации компилятора Xcode. Согласно рассекреченным документам, исследователи из Sandia National Laboratories в рамках ЦРУ утверждали, что им удалось создать изменённую версию Xcode, способную внедрять шпионские «закладки» в любое приложение, собранное с её помощью[17].
Известные версии XcodeGhost добавляли к оригинальному приложению Xcode дополнительные файлы[12]:
- Базовая сервисная библиотека для iOS, iOS-симулятора и платформы macOS
- Фреймворк IDEBundleInjection для iOS, iOS-симулятора и macOS
XcodeGhost также модифицировал компонент компоновщика, подключая вредоносные модули[15] к собранному приложению. Эта операция отражается в логах сборки, но не отображается в IDE Xcode.
Уязвимыми к XcodeGhost оказались приложения для iOS и macOS.
XcodeGhost поражал слой CoreServices, в котором сконцентрировано множество часто используемых приложениями сервисов и библиотек[18]. При сборке приложения через заражённый Xcode эти вредоносные CoreServices интегрировались в приложение прозрачно для разработчика.
Злоумышленники также добавляли дополнительный код к классам UIWindow и UIDevice. Класс UIWindow представляет собой объект, отвечающий за управление окнами и координацию отображения элементов интерфейса[19].
Класс UIDevice предоставляет singleton — экземпляр, представляющий текущее устройство; из него можно получить имя, модель и версию операционной системы устройства[20].
XcodeGhost способен принимать команды управления от атакующего с помощью командно-контрольного сервера через HTTP. Передача данных шифруется с помощью алгоритма DES в режиме ECB, который считается устаревшим и небезопасным; ключи шифрования можно подобрать методом обратного анализа. Потенциально злоумышленник может организовать атаку типа Man-in-the-middle и отправлять устройству ложные HTTP-команды (например, открытие окна или запуск определённого приложения).
При запуске приложения, заражённого XcodeGhost (как на реальном устройстве, так и в симуляторе Xcode), вредоносная программа автоматически собирает следующую информацию:
- Текущее время
- Название заражённого приложения
- Идентификатор пакета приложения (bundle id)
- Имя и тип устройства
- Язык и страна системы
- Уникальный идентификатор устройства
- Тип сети
Собранные данные шифруются и отправляются на сервер команд и управления. Для разных версий XcodeGhost могут использоваться разные сервера; анализ Palo Alto Networks выявил следующие URL:
- http://init.crash-analytics.com
- http://init.icloud-diagnostics.com
- http://init.icloud-analysis.com
Последний домен использовался также малварью KeyRaider[12].
Каждый раз при запуске приложения, заражённого XcodeGhost, малварь может получать данные из буфера обмена iOS и изменять их содержимое. Это особенно опасно, если пользователь хранит там пароли или использует приложения для управления паролями.
XcodeGhost может инициировать открытие специфических URL-адресов при запуске заражённого приложения. Поскольку в iOS и macOS действует механизм взаимодействия между приложениями через специальные URL-схемы[21] (например, 'whatsapp://', 'Facebook://', 'iTunes://'), злоумышленник может открыть любое установленное на устройстве приложение или даже реализовать фишинговую атаку.
Среди заражённых оказались приложения для обмена сообщениями, мобильного банкинга, работы операторов мобильной связи, карты, торговые платформы, социальные сети и игры. К наиболее известным относится мессенджер WeChat, приложение для сканирования документов CamScanner, архиватор WinZip.
По оценкам Pangu Team, всего было инфицировано 3 418 приложений[22].
Голландская компания Fox-it сообщала, что обнаружила тысячи заражённых устройств за пределами Китая[23][24].
Удаление вредоносного ПО
После публикаций компаний Alibaba и Palo Alto Networks компания Amazon отключила все обнаруженные управляющие серверы XcodeGhost. Baidu также удалил из своего облачного хранилища все вредоносные установщики Xcode.
18 сентября 2015 года компания Apple признала факт заражения и обратилась к разработчикам с просьбой пересобрать приложения с «чистой» версией Xcode перед повторной подачей в магазин приложений.
Pangu Team выпустила утилиту[25] для проверки устройств на наличие заражённых программ, однако как и другие антивирусы, она работает только на устройствах с джейлбрейком. При этом Apple не допускает антивирусные утилиты в App Store для iOS[26].
Apple рекомендует разработчикам проверять[27][28] подлинность своей среды Xcode и всегда держать включённой функцию Gatekeeper в macOS.