Cybersecurity
April 15

Безопасность macOS | Вирусология и способы защиты


Содержание:

  1. Введение
  2. Способы заражения
    2.1. Фальшивые приложения
    2.2. Фальшивые обновления
    2.3. Пиратские/взломанные приложения
    2.4. Зараженные приложения
    2.5. Атаки на разработчиков
    2.6. Макросы Microsoft Office
    2.7. Атаки на цепь поставок
    2.8. Эксплойты
  3. Механизмы защиты в macOS
    3.1. Карантин
    3.2. Подписи
    3.3. XProtect
    3.4. Нотаризация
    3.5. Gatekeeper
    3.6. TCC
  4. Закрепление в системе
    4.1. Login Items
    4.2. Launch Agents & Daemons
  5. Полезные утилиты
    5.1. LuLu
    5.2. KnockKnock
    5.3. BlockBlock
    5.4. What's Your Sign
    5.5. KeePassXC
  6. Анализ вируса Atomic macOS Stealer (AMOS)
    6.1. Распространение
    6.2. Статический анализ
    6.2.1. GrabChromium
    6.2.2. keychain
    6.2.3. FileGrabber
    6.2.4. GrabFirefox
    6.2.5. ColdWallets
    6.2.6. sendlog
    6.3. Динамический анализ
  7. Итоги

Подписывайтесь на канал cppmyk.inc.


1. Введение

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

Разумеется, это не соответствует действительности и вина в популярности этого заблуждения лежит на самой компании Apple: ее заявлениях о том, что их компьютеры не восприимчивы к вирусам, и на подобных рекламах.

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

Несмотря на это, количество вирусов для macOS постоянно увеличивается. Согласно ежегодным отчетам Objective-See, количество найденного ранее незамеченного вредоносного программного обеспечения за предыдущие года было следующим:

  • 2020 год - 7 экземпляров
  • 2021 год - 8 экземпляров
  • 2022 год - 13 экземпляров
  • 2023 год - 20 экземпляров

Одна из причин - доля компьютеров Apple на рынке увеличивается. Если раньше разработчикам подобного рода софта не было резона адаптировать его под macOS, так как ей пользуется незначительное количество людей, то сейчас этот смысл вырисовывается и все большее количество злоумышленников обращают свое внимание на эту систему.

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

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

В конце мы подробно разберем недавний и все еще популярный троян, ворующий данные - Atomic macOS Stealer (AMOS). На этом примере можно ознакомиться с процессом анализа вредоносных приложений, разработанных для macOS.


2. Способы заражения

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

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

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

Использование нескольких векторов атак одновременно не является редкостью, а их разделение достаточно условно. Тем не менее, давайте попытаемся подробнее рассмотреть наиболее часто встречающиеся среди них.

2.1. Фальшивые приложения

Вредоносное ПО часто маскируется под безобидные популярные приложения. Сайт, как и функционал зараженного приложения, могут один в один соответствовать оригиналу (за исключением URL сайта и подписей, которые мы рассмотрим далее), что не вызовет никаких подозрений у рядового пользователя.

Как пример, можем рассмотреть OSX.ZuRu - вирус, который маскировался под известный эмулятор терминала iTerm2.

Сайт, распространяющий вирус OSX.ZuRu под видом эмулятора терминала iTerm2

Сайт идентичен тому, с которого можно скачать оригинальное приложение.

Можно выделить следующий интересный момент с точки зрения вектора атаки: ссылка на фейковый сайт была первой в списке китайского поисковика Baidu за счет приобретенного спонсорства (у Google также есть такой функционал):

Результаты поиска по запросу 'iterm2' в поисковике Baidu

2.2. Фальшивые обновления

Похожий на предыдущий вектор атаки - представление вируса в виде обновления знакомого вам приложения.

Маскировка под Adobe Flash Player стара как мир, но при этом не перестает использоваться злоумышленниками, что, вероятно, говорит о ее эффективности - пользователи продолжают вестись на этот обман.

Фальшивое обновление Adobe Flash Player (вирус OSX.Shlayer)

2.3. Пиратские/взломанные приложения

Apple предоставляет множество встроенных механизмов, которые обеспечивают безопасность системы (рассмотрим их в следующей главе). macOS по умолчанию считает приложение небезопасным и препятствует его распространению различными способами. Для создания доверия к своему приложению, разработчик должен провести ряд действий, таких как получение сертификата для подписи, подпись содержимого и его нотаризация (проверка на серверах Apple).

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

Один из надежных способов заразить свой компьютер - скачивание и установка пиратского приложения.

Пиратское приложение Little Snitch, зараженное вирусом OSX.EvilQuest

2.4. Зараженные приложения

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

Рассмотрим на примере вируса OSX.ElectroRAT.

Для него был создан правдоподобный сайт, который предоставлял торговый терминал для криптовалютных бирж, поддерживащий три операционные системы (Windows, macOS и Linux).

Веб-сайт, распространяющий OSX.ElectroRAT под видом торгового терминала

После скачивания версии для macOS, пользователь мог увидеть приложение eTrade.app, выглядящее вполне себе легитимно.

Интерфейс eTrade.app (OSX.ElectroRAT)

Одновременно с появлением интерфейса, пользователь также получал к себе в систему полнофункциональный Remote Access Trojan (RAT) с практически неограниченным доступом к системе.

Разбор OSX.ElectroRAT можно найти тут.

В качестве следующего примера рассмотрим стиллер OSX.PureLand, который был также таргетирован на крипто-пользователей.

Pure Land, на первый взгляд, имела все признаки типичной Play-To-Earn игры:

  • Веб-сайт, показывающий трейлер геймплея
Веб-сайт Pure Land
  • Закрытая альфа-версия, для доступа к которой необходим код
Веб-сайт Pure Land требует код для доступа к альфа-версии
  • NFT коллекция
NFT коллекция Pure Land
  • Twitter с фейковой или проплаченной поддержкой проекта
Twitter Pure Land

Для распространения "игры" некий Satomi See, у которого в описании профиля было написано "Project Manager: Pure Land", писал личные сообщения пользователям твиттера и предлагал протестировать игру за различные плюшки - NFT, токены и подобное.

Пользователь Twitter, распространяющий OSX.PureLand

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

Рассылка со взломанной почты сотрудника The Sandbox

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

2.5. Атаки на разработчиков

Злоумышленники обычно используют этот метод распространения для заражения библиотек, инструментов разработки или проектов, хранящихся на платформах с открытым исходным кодом, таких как GitHub, GitLab и другие.

Из примеров можем выделить Python пакеты, которые после установки подарят вашей системе дополнительный бэкдор (ссылка).

Вредоносный Python пакет pymafka

А также непроверенные Xcode проекты, которые во время сборки приложения выполняют произвольный вредоносный код (ссылка).

Проект Xcode, зараженный вирусом OSX.XCSSET

2.6. Макросы Microsoft Office

Microsoft Office предоставляет возможность автоматизировать рутинные действия в своих документах с помощью макросов (код, обычно написанный на Visual Basic). И хоть макросы сами по себе не являются злом, при желании их можно применить во вред и установить вредоносное программное обеспечение на компьютер жертвы.

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

Окно, появляющееся при открытии документа, который содержит макросы

2.7. Атаки на цепь поставок

Атаки на цепь поставок (Supply chain attacks) изначально направлены на распространителей добропорядочных приложений. Если хакер получает доступ к инфраструктуре разработчика, он может манипулировать процессом сборки, внедряя вирусное содержимое в оригинальные пакеты.

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

Примером такой атаки может служить инцидент с компанией 3CX в начале 2023 года. Были заражены сервера компании, на которых собирались приложения, готовые к распространению. Apple успешно проверила сборку и нотаризовала ее, тем самым дав добро на запуск на всех современных операционных системах macOS. Подробнее здесь.

2.8. Эксплойты

Эксплойт - это вредоносный код, который использует уязвимости в приложении для распространения вирусов.

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

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

В 2019 году была обнаружена zero-day уязвимость в браузере Firefox, позволяющая выполнить произвольный код, содержащийся на вредоносном сайте (ссылка).

Также, в марте 2024 года, был обнаружен бэкдор в open-source библиотеке xz, которая предоставляет функционал сжатия и используется огромным количеством пользователей (ссылка).


3. Механизмы защиты в macOS

После того, как мы разобрались со способами заражения, пришло время понять, какие встроенные защитные механизмы предоставляет macOS.

В отличие от операционной системы Windows, где роль защитника выполняет привычный всем антивирус Windows Defender (теперь известный как Microsoft Defender Antivirus), в macOS нет одного основного приложения, ответственного за безопасность. Вместо этого система предоставляет набор механизмов и утилит, тесно взаимосвязанных. Каждый из них является своего рода строительным блоком целой системы безопасности, создающей множество преград для вредоносного программного обеспечения.

Все эти компоненты мы рассмотрим отдельно.

3.1. Карантин

Карантин - это функция безопасности в macOS, предназначенная для защиты компьютера от потенциально опасных файлов, полученных извне. Она появилась в Mac OS X Leopard (версия 10.5) в 2007 году.

Когда пользователь загружает файл из Интернета, получает его по электронной почте или через AirDrop, приложение, ответственное за это действие, устанавливает на файл атрибут карантина (com.apple.quarantine).

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

Предупреждение при первом открытии файла с атрибутом карантина

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

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

Отобразить список атрибутов файла и проверить, есть ли у него атрибут карантина, можно таким образом:

xattr -l <path-to-file>

Также, атрибут можно удалить вручную:

xattr -d <path-to-file>

Карантин сам по себе никак не связан с проверкой файла на вирусы, тем не менее, он является важным строительным блоком, на который опираются другие механизмы.

До появления карантина файлов macOS имела некоторые базовые механизмы защиты от вредоносного ПО, но они не были столь надежными, как функции, появившиеся благодаря карантину файлов и дальнейшим усовершенствованиям системы безопасности.

3.2. Подписи

Следующим важным строительным блоком безопасности является подпись исполняемого кода. Apple впервые представила данный функционал в Mac OS X Leopard (версия 10.5), которая вышла в октябре 2007 года.

Механизм подписи кода основан на асимметричной криптографии. Разработчик, который планирует распространять свои программы, получает от Apple сертификат, связанный с приватным ключом. Эта пара образует так называемую Digital Identity, с помощью которой можно подписывать исполняемые файлы, что в конечном итоге дает возможность любому проверить эту подпись.

Из этой возможности вытекают следующие плюсы:

  • Идентификация кода как исходящего от конкретного источника, так как из подписи можно однозначно узнать владельца сертификата. Из чего следует закономерное доверие к известным разработчикам
  • Уверенность в том, что код не был никак модифицирован после подписания изначальным разработчиком, так как малейшее изменение делает подпись невалидной

Проверить подпись можно как с помощью CLI утилит:

spctl -a -vv <path-to-file>
codesign -dvvv <path-to-file>

Так и с помощью приложения What's Your Sign (WYS):

What's Your Sign (Steam)

Если сертификат каким-то образом был скомпроментирован, или замечен в подписании вредоносного ПО, он будет отозван.

Отозванный сертификат Proton RAT

Система безопасности macOS в лице Gatekeeper-а по умолчанию запрещает пользователю запускать приложения с невалидной или полностью отсутствующей подписью.

Попытка запуска неподписанного приложения, скачанного с Telegram
Следует понимать, что подпись, хоть и значительно повышает доверие к исполняемому файлу, не является гарантией его добропорядочности. Digital Identity может быть как украдена, так и создана на подставном/взломанном аккаунте.

3.3. XProtect

XProtect, изначально представленный в Mac OS X Snow Leopard (версия 10.6) в 2009 году, призван защищать пользователя от известных угроз. На текущий момент он состоит из трех компонентов.

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

XProtect обнаружил экземпляр вируса OSX.Shlayer

Работая на основе сигнатур известных вирусов, XProtect имеет значительные проблемы с реагированием на новые образцы, которые еще не попали к нему в базу.

Если раньше XProtect исследовал исключительно файлы с установленным атрибутом карантина, то сейчас, начиная с macOS Catalina, он проверяет все исполняемые файлы.

2. XProtect Remediator (XPR) - дополнение к стандартному XProtect, введенное в macOS Monterey 12.3 (март 2022), отвечающее за периодическое сканирование системы для поиска и удаления известных вредоносов (тоже базируется на сигнатурах).

3. XProtect BehaviorService (XBS) - самый новый компонент защиты, представленный в macOS Ventura 13 (октябрь 2022). В отличие от своих предшественников, базирующихся на статическом анализ, XBS нацелен на выявление вредоносного поведения (динамический анализ). Под таким поведением можно понимать, например, доступ к внутренним папкам браузеров, которые содержат конфиденциальные данные.

На текущий момент XProtect BehaviorService не принимает никаких действий по обезвреживанию вредоносного поведения, а только регистрирует такие события.

3.4. Нотаризация

Нотаризация - процесс, представленный в macOS Mojave (версия 10.14.5) в 2019 году, который обязывает всех разработчиков, желающих распространять свои приложения вне App Store, предварительно отправлять его на сервера Apple для обследования на вредоносный контент, проверку корректности подписей и некоторых других требований. Приложения из App Store проходят ручную проверку перед допуском с магазину, поэтому не нуждаются в автоматической нотаризации.

Успешно нотаризованое приложение, скачанное из интернета, при запуске отображает следующее окно:

Нотаризованое приложение при первом запуске (с атрибутом карантина)

В противном случае, если приложение не было нотаризовано, его запуск на современных системах будет запрещен Gatekeeper-ом по умолчанию.

Приложение не нотаризовано. Запуск запрещен
Из случая атаки на инфраструктуру 3CX, описанного выше, мы можем понять, что Apple не всегда корректно проверяет исполняемые файлы во время нотаризации и вредоносное ПО также может быть успешно нотаризовано в некоторых ситуациях.

3.5. Gatekeeper

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

Он существует еще со времен OS X Mountain Lion (версия 10.8), июль 2012. При этом постоянно улучшается и обрастает новым функционалом.

В качестве составных частей Gatekeeper-а можно выделить механизмы, рассмотренные выше. Поэтому, говоря о нем, в основном имеют в виду связку Quarantine + Notarization + Gatekeeper + XProtect.

Безопасность обеспечивается следующим образом:

  • Сканирование вредоносного контента (XProtect) - Gatekeeper сканирует загруженное программное обеспечение на наличие известного вредоносного контента перед его запуском
  • Проверка подписи - Gatekeeper проверяет, что программное обеспечение было подписано определенным разработчиком и не было изменено
  • Проверка нотаризации - Gatekeeper смотрит, была ли нотаризована программа. Если разработчик вложил нотаризационный билет, проверка может быть осуществлена локально, в ином случае - необходимо обратиться на сервера Apple для верификации
  • Проверка политик безопасности - Gatekeeper обеспечивает следование правилам безопасности, установленных пользователем. Например, разрешая запускать только программное обеспечение из Mac App Store или от известных разработчиков
  • Первоначальное предупреждение при запуске (Карантин) - Gatekeeper запрашивает разрешение у пользователя при первой попытке открыть загруженное приложение, чтобы убедиться, что он намерен его запустить.

Важно заметить, что практически все проверки, за исключением XProtect, проводятся только когда файл находится в карантине (имеет атрибут com.apple.quarantine).

Если какое-то обязательное требование безопасности не было удовлетворено - Gatekeeper запрещает запуск приложения. Но, если пользователь очень хочет это сделать, то у него никто не забирает эту возможность. Рассмотрим несколько способов, как это можно осуществить:

1. Отключить Gatekeeper

sudo spctl --master-disable

2. Удалить атрибут карантина

xattr -dr com.apple.quarantine <path-to-file>

3. Открыть исполняемый файл через контекстное меню (ПКМ + Open)

Запуск недоверенного файла через контекстное меню

4. Запустить файл, заблокированный Gatekeeper-ом, после чего перейти в настройки безопасности и нажать Open Anyway

Запуск недоверенного файла через настройки безопасности

В то время как перечисленные способы отключения Gatekeeper-а требуют явного вмешательства пользователя, исследователи безопасности также периодически обнаруживают обходы этого механизма. Любой способ обойти Gatekeeper, то есть заставить пользователя загрузить что-то и выполнить, когда Gatekeeper должен это запретить, считается уязвимостью macOS.

В 2021 году Patrick Wardle нашел одну из таких уязвимостей, которая позволяла запускать недоверенный код. Выглядело это примерно так:

Эксплуатация уязвимости, которую обнаружил Patrick Wardle

Apple быстро исправила проблему, но это, разумеется, не гарантирует, что создатели вредоносного ПО не найдут нового изысканного эксплойта.

3.6. TCC

TCC (Transparency, Consent, and Control) - механизм, отвечающий за доступ приложений к пользовательским данным. Был введен в OS X Mojave (сентябрь 2018) и улучшен в OS X Catalina (октябрь 2019).

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

Среди основных можно выделить:

  • Микрофон
  • Камера
  • Полный доступ к диску
  • Запись экрана
  • Захват нажатий клавиш

Для примера можем попытаться отобразить содержимое внутренней директории браузера Safari через Python скрипт.

import os
os.listdir("/Users/user/Library/Safari")

В том случае, если мы не предоставили скрипту разрешение на доступ ко всему диску, следующая ошибка будут отображена:

PermissionError: [Errno 1] Operation not permitted: '/Users/user/Library/Safari'
Стоит воспринимать этот функционал как дополнительный слой защиты, который может предотвратить атаку. При этом не стоит бездумно полагаться на него, так как существуют варианты обхода, которыми успешно пользуются опытные разработчики вредоносных приложений.

4. Закрепление в системе

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

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

Если вирус использует один способ закрепления в системе, это совсем не означает что он не использует другой в дополнение. Таким образом, пользователь, заметив и удалив один элемент автозагрузки, может ошибочно подумать что ему ничего не угрожает. Такое предположение не всегда является правдой.
Просканировать свое устройство можно при помощи утилиты KnockKnock.

4.1. Login Items

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

Список приложений, использующих эту функцию можно проверить в
Settings -> General -> Login Items.

Login Items

4.2. Launch Agents & Daemons

Launch Agents и Launch Daemons - это два механизма в macOS, которые дают возможность запускать и управлять фоновыми процессами на компьютере.

  1. Launch Agents: Это механизм, который позволяет запускать процессы от имени пользователя при входе в систему.
  2. Launch Daemons: Это механизм, который позволяет запускать процессы от имени системы (root) при запуске компьютера, независимо от того, вошел ли в систему пользователь.

Оба этих механизма используют специальные файлы конфигурации типа plist, строго размещаемого по определенному маршруту, чтобы определить, какие программы следует запускать, когда и с какими параметрами.

Файлы списка свойств (Property list, plist) - это тип файлов, используемых в macOS для хранения данных конфигурации в структурированном формате. По сути, это XML или бинарные файлы, содержащие пары ключ-значение.

Пример простого plist файла, который определяет демона:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
	<dict>
		<key>Label</key> <!--Имя демона-->
		<string>com.example.app</string>
		<key>Program</key> <!--Путь к исполняемому файлу-->
		<string>/opt/directory/executable</string>
		<key>RunAtLoad</key> <!--Булевое значение, определяющее будет ли система запускать демона после автозагрузки-->
		<true/>
	</dict>
</plist>

Конфигурационные файлы для Launch Agent могут быть замещены по следующим маршрутам:

  • ~/Library/LaunchAgents (Пользовательские агенты)
  • /Library/LaunchAgents (Глобальные агенты)

В то время как для демона существует только одна локация, так как они по умолчанию глобальные:

  • /Library/LaunchDaemons

Launch Agent для какой-то вспомогательной утилиты Steam-а выглядит так:

Steam Launch Agent

5. Полезные утилиты

Как мы теперь знаем, компоненты, обеспечивающие безопасность macOS, далеко не идеальны и имеют свои изъяны. Пришло время рассмотреть утилиты, которые могут помочь рядовому пользователю усилить защиту системы.

Все нижеперечисленные программы бесплатны и имеют открытый исходный код.

5.1. LuLu

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

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

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

По моему мнению это абсолютный must-have для всех пользователей macOS

Ссылка: https://objective-see.org/products/lulu.html

Steam пытается получить доступ к серверу обновлений (LuLu)

5.2. KnockKnock

KnockKnock позволяет провести сканирование системы на существующие в ней закрепленные компоненты (Login Items, Launch Agents, Daemons и другие).

Если компьютер заражен вирусом с функцией автозагрузки - он, скорее всего, будет отображен тут.

Ссылка: https://objective-see.org/products/knockknock.html

Сканирование системы с помощью KnockKnock

5.3. BlockBlock

BlockBlock - утилита, которая замечает изменения в файлах автозагрузки аналогично KnockKnock, только в режиме реального времени.

Ссылка: https://objective-see.org/products/blockblock.html

Steam пытается установить Launch Agent

5.4. What's Your Sign

What's Your Sign (WYS) - утилита, позволяющая проверить цифровую подпись файла.

Ссылка: https://objective-see.org/products/whatsyoursign.html

What's Your Sign - проверка подписи

5.5. KeePassXC

KeePassXC - кросплатформенный менеджер паролей. База хранится локально, никаких облачных синхронизаций не используется.

То, как пользователь хранит пароли и обращается с ними напрямую влияет на его информационную безопасность. Несколько рекомендаций по этой теме:

  • Используйте менеджер паролей. Это позволяет иметь уникальный сложный пароль для каждой учетной записи без необходимости запоминать их все, а также избегать хранения важных данных в открытых местах
  • Создавайте надежные пароли, содержащие минимум 12 знаков - буквы различных регистры, цифры, спецсимволы. Лучше всего использовать генератор случайных символов, один из которых присутствует в KeePassXC
  • Никогда не используйте один и тот же пароль повторно

Ссылка: https://keepassxc.org/

Интерфейс KeePassXC

6. Анализ вируса Atomic macOS Stealer (AMOS)

Atomic macOS Stealer (AMOS) - вредоносное программное обеспечение, впервые обнаруженное в начале 2023 года. Принадлежит к семейству стиллеров, основная цель которого, при попадании на компьютер жертвы, собрать как можно больше данных, с помощью которых распространитель может извлечь выгоду (чаще всего финансовую).

На текущий момент стиллеры являются чрезвычайно популярными из-за нескольких факторов:

  • Простота. Данный вид вредоносного ПО предельно прост в реализации, не требует закрепления в системе и должен быть запущен всего один раз, в отличие от тех же троянов удаленного доступа, которые стараются оставаться активными как можно дольше и воровство данных обычно является только малой частью их функционала
  • Популярность криптовалют и онлайн-платежей. Все больше людей со временем начинают владеть цифровыми активами, что становится лакомой целью для злоумышленников. Стиллеры не упускают такой шанс и стараются собирать те данные, из которых можно впоследствии извлечь средства
  • Неосведомленность пользователей. Хоть вирусы для macOS существуют уже давно, рядовой пользователь все еще может наивно полагать, что система его защитит. Помимо этого, огромное владельцев техники Apple не заморачивается над созданием сложных и уникальных паролей и активно пользуется функцией сохранения паролей в браузере/Keychain-е

6.1. Распространение

Объявления о продаже можно встретить в телеграме и на различных форумах. Примечательно, что продавец организовал процесс предоставления доступа к админ панели стиллера по системе подписки (И ТУТ ТОЖЕ ПОДПИСКИ???).

В начале продаж (апрель 2023) цена составляла $1000/месяц, в то время как на момент написания статьи поднялась до $3000/месяц.

Объявление о продаже Atomic macOS Stealer

Каждый покупатель распространял полученный билд AMOS-а как ему вздумается, поэтому не было какого-то единого согласованного варианта.

Из известных на текущий момент можно выделить следующие способы распространения:

  • Зараженные приложения - TradingView, Notion, Slack. При таком методе закупалась реклама в поисковых сервисах, что автоматически ставило вредоносный сайт с вирусом на первые места выдачи.
  • Пиратский софт - Adobe Photoshop, Microsoft Office, Tor Browser и другие.
Отзыв довольного покупателя

6.2. Статический анализ

Реализация AMOS-а с ходом времени претерпела значительных изменений. Если смотреть по таймлайну, то технические решения выглядят примерно так:

  1. Первая замеченная версия написана на Go.
  2. Переписана на Swift.
  3. Переписана на C/C++, обсфусцирован код, зашифрованы строки.
  4. Добавлены существенные вкрапления Python и osascript.

Мы разберем относительно старую версию, которая была написана на Swift и мимикрировала под легитимное приложение для трейдеров TradingView. Выбор пал на нее, так как разработчик в то время еще не заморачивался над обфускацией и шифрованием содержимого бинарного файла, в следствие чего статический анализ значительно упрощается. Касательно функционала - с того времени он остается практически неизменным и по сей день.

Стиллер распространялся в формате дискового образа (TradingView.dmg), примонтировав который мы увидим следующую картину:

Примонтированный образ диска TradingView.dmg

Здесь нам любезно объясняют, каким способом нужно запускать приложение. Почему так? Давайте проверим подпись с помощью What's Your Sign.

Подпись Trading View (AMOS)

Исполняемый файл имеет adhoc подпись, которая обычно используется разработчиками для тестирования своих приложений без необходимости использовать сертификат, выданный Apple. При этом она абсолютно не подходит для распространения доверенных приложений, так как в таком случае macOS будет воспринимать его подпись как невалидную. Это означает, что запустить его можно только в обход Gatekeeper-а, то есть открыв файл через ПКМ + Open.

Анализ бинарного файла с помощью DiE
Результат сканирования на VirusTotal

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

Немного покопавшись в дизассемблере можно найти достаточно примитивную реализацию нужной нам логики в функции systeminfo, где вызывается нативная утилита macOS под названием system_profiler, которая собирает информацию о системе. После чего результат вызова проверяется на наличие строк "VMware" и "Apple Virtual Machine", которые там должны быть в случае запуска на виртуальной машине, и если они находятся, приложение попросту завершает свою работу. Обойти данную проверку можно пропатчив бинарный файл, изменив при этом строку инструмента виртуализации, который мы будем использовать.

Логика, препятствующая динамическому анализу (функция systeminfo)

В ходе исследования можно обнаружить, что функция main (точка входа) содержит в себе создание нового потока, где будет вызвана функция dotask. dotask, исходя из имен вызываемых процедур, вероятно, отвечает за основное поведение стиллера. Можно предположить, что при выполнении поведение будет следующим:

  • Извлекаются интересующие данные (GrabChromium, GrabFirefox, keychain, FileGrabber, ColdWallets)
  • Извлекается информация о системе и обрабатывается ситуация с анализом в виртуальном окружении (systeminfo)
  • Данные пакуются в zip архив с помощью утилиты ditto
  • Архив отправляется на сервер злоумышленнику (sendlog)
  • Следы работы подчищаются (removeDirectory)
Вызов основных функций стиллера (функция dotask)

Рассмотрим некоторые процедуры подробнее.

6.2.1. GrabChromium

Отвечает за сбор данных с Chromium-based браузеров.

Браузеры, поддерживаемые стиллером (функция GrabChromium)

Тут извлекаются пароли, Cookie, кредитные карты и криптокошельки, установленные в качестве расширения. Последнее можно понять по функции findWallet.

Извлечение файлов, хранящих данные от криптокошельков (функция findWallet)

В ней, на первый взгляд, содержится невнятный набор символов, но при детальном рассмотрении можно понять что это идентификаторы расширений. Для примера:

  • nkbihfbeogaeaoehlefnkodbefgpgknn - Metamask
  • bfnaelmomeimhlpmgjnjophhpkkoljpa - Phantom

Браузер хранит расширения в своих внутренних директориях. Расширения же в этих локациях содержат данные для доступа к цифровым активам - приватный ключ и/или seed-фразу.

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

6.2.2. keychain

Здесь происходит извлечение паролей из keychain.

keychain - это зашифрованный контейнер, в котором хранятся данные от учетных записей, приложений, серверов и веб-сайтов, а также конфиденциальная информация, например номера кредитных карт или PIN-коды банковских счетов.

Окно, спрашивающее, желает ли пользователь сохранить пароль в keychain

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

Пароли, сохраненные в браузере, обычно хранятся не в keychain-е, а во внутренних директориях этих самых браузеров, в зашифрованном виде. При этом, достать пароль для их расшифровки можно из keychain-а (что и делает AMOS на скриншоте ниже).
Извлечение данных из keychain (функция keychain)

6.2.3. FileGrabber

Процедура, ответственная за сбор файлов из директорий Desktop и Documents. Интересующие расширения можно видеть на скриншоте.

Сбор файлов с компьютера жертвы (функция FileGrabber)

6.2.4. GrabFirefox

По логике функция похожа на GrabChromium, только для браузера Firefox.

6.2.5. ColdWallets

Финальным этапом является извлечение внутренних файлов из холодних кошельков - Exodus, Electrum, Coinomi и других. По аналогии с браузерными кошельками, данные зашифрованы и цифровые активы защищены до тех пор, пока злоумышленник не знает пароля.

Извлечение данных из холодных кошельков (функция ColdWallets)

6.2.6. sendlog

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

Отправка собранных данных на сервер (функция sendlog)

Здесь мы можем видеть как формируется запрос с отправкой zip архива на сервер с IP адресом 185.106.93.154.

6.3. Динамический анализ

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

После запуска "Trading View" мы увидим диалоговое окно, сгенерированное с помощью osascript. Его цель - получить пароль пользователя, имея который вирус получит полный доступ к keychain-у, базам данных браузеров и root-права соответственно.

Окно, сгенерированное для получения пароля пользователя. Маскировка под системные настройки

С помощью утилиты для отслеживания файловой активности, можем удостовериться, что данные собираются в папку, расположенную по маршруту /Users/<user>/<number>, из которой впоследствии создается архив с помощью ditto.

Создание архива /Users/malan/71707815.zip с украденными данными
Содержимое домашней директории
Содержимое папки 71707815
Содержимое папки FileGrabber
Содержимое папки Chrome

В случае если в системе установлен брандмауэр (например LuLu), можем заметить, что программа пытается установить соединение с удаленным сервером 185.106.93.154.

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

Уведомление LuLu

7. Итоги

Итак, статья подходит к концу.

Подытожить вышесказанное можно основными тезисами, которые являются важными компонентами в обеспечении безопасности macOS:

  • Запускать приложения следует только из доверенных источников. Это позволит уменьшить вероятность заражения вредоносным программным обеспечением.
  • Не стоит бездумно надеяться на встроенные механизмы безопасности macOS. Хоть Apple сейчас и предоставляет достаточно серьезную защиту по умолчанию, предотвращающую большинство примитивных атак, опытные разработчики вирусов все еще могут находить различные варианты ее обхода.
  • В нагрузку к стандартным системным средствам, можно рассмотреть также различные open-source утилиты вроде брандмауэра для создания дополнительного слоя защиты.
  • Использование менеджера паролей - очень важно для предотвращения взломов. Это позволяет пользователю иметь сложные и, что также существенно, уникальные пароли для используемых сервисов. Как мы уже знаем, криптокошельки хранят важные данные в зашифрованном виде, но если вы везде используете один и тот же простой пароль, то злоумышленнику обычно не составляет никаких проблем его подобрать.
  • Необходимо периодически обновлять пароли и проводить сканирование системы на наличие неизвестных элементов, имеющих функцию автозагрузки.
  • Нельзя хранить важные данные в открытом виде. В современных троянах существует функционал воровства файлов и, если они никак не зашифрованы, моментально становятся лакомым кусочком для злоумышленника.

При соблюдении вышеперечисленных рекомендаций, крайне маловероятно что вы заразите свой девайс вредоносным ПО. А если и заразите - вред будет минимизирован.


Подписывайтесь на канал и вступайте в Dead Engineering - чат, в котором можно обсудить темы, связанные с разработкой, информационной безопасностью и блокчейном.