Описание вредоносного ПО

LianSpy: новая программа-шпион для Android, нацеленная на российских пользователей

В марте 2024 года мы обнаружили кампанию, направленную на пользователей в России. В кампании использовалась ранее неизвестная шпионская программа для Android, которую мы назвали LianSpy. По нашим данным, эта вредоносная программа проявляет активность с июля 2021 года и способна записывать экран, красть документы пользователя, сохранять данные журналов вызовов и собирать списки приложений. Злоумышленники, стоящие за этим вредоносным ПО, действуют очень скрытно: вместо собственной инфраструктуры они используют российский облачный сервис «Яндекс Диск» в качестве командного сервера, а также задействуют различные средства защиты шпионского ПО от обнаружения. По некоторым признакам можно предположить, что LianSpy, скорее всего, внедряется после эксплуатации неизвестной уязвимости или при физическом доступе к телефону жертвы.

Технические подробности

При запуске вредоносное приложение проверяет, запущено ли оно как системное, — в этом случае необходимые для работы разрешения выдаются автоматически. В противном случае приложение запрашивает разрешения на отображение поверх других окон, доступ к уведомлениям и выполнение в фоновом режиме, а также такие необходимые права доступа, как чтение списка контактов и журналов вызовов. После получения всех необходимых разрешений зловред проверяет, выполняется ли он в отладочной среде. Если в среде выполнения отсутствуют какие-либо признаки использования отладчика, LianSpy запускает свою конфигурацию заранее заданными значениями. Конфигурация сохраняется на устройстве в виде набора пар «ключ — значение» с помощью SharedPreferences, встроенного механизма Android, который обычно используется для запоминания настроек приложения. Эти данные остаются доступными даже после перезагрузки устройства. В конфигурации LianSpy ключами являются целочисленные значения, которые соответствуют настройкам программы-шпиона. Полный список параметров конфигурации с описанием и значениями по умолчанию приведен ниже.

ID (ключ) Описание Значение по умолчанию
100 Первый запуск false
110 Разрешать работу при подключении к Wi-Fi true
111 Разрешать работу при подключении к сети мобильного оператора true
113 Яндекс ID злоумышленника Данные скрыты
115 OAuth-токен «Яндекс Диска» злоумышленника Данные скрыты
121 Собирать сведения об установленных приложениях на устройстве жертвы true
123 Собирать данные журнала вызовов true
124 Собирать данные из списка контактов true
128 Делать скриншоты от имени суперпользователя с помощью бинарного файла screencap false
136 Захватывать экран с помощью Media Projection API true
302 Интервал между скриншотами в миллисекундах 5000 (5 с)
308 Интервал между задачами эксфильтрации данных в миллисекундах 1200000 (20 мин)
400 Разделенный запятыми список приложений (подстрок с именами пакетов), в которых программа-шпион должна захватывать экран через Media Projection API или делать скриншоты с помощью бинарного файла screencap whatsapp, viber, skype, chrome, vkontakte, telegram, android.gm, gallery, thoughtcrime.securesms, facebook, tencent.mm, snapchat, icq, tencent.mobileqq, imoim, mailapp, instagram, kakao.talk, discord, chrome, internet, browser, dolphin, firefox, opera, safari, uc browser, maxthon, baidu, yandex
420 Не используется
450 ID пользователя

После инициализации программа-шпион скрывает свой значок и регистрирует встроенный широковещательный приемник для получения команд от системы. Этот приемник отвечает за запуск и остановку различных вредоносных задач: захват экрана через Media Projection API, создание скриншотов от имени root-пользователя, эксфильтрация данных и обновление конфигурации.

LianSpy регистрирует вредоносный широковещательный приемник

LianSpy регистрирует вредоносный широковещательный приемник

Для обновления конфигурации LianSpy каждые 30 секунд ищет на «Яндекс Диске» злоумышленника файл, соответствующий регулярному выражению ^frame_.+\\\.png$. Если файл найден, он загружается во внутренний каталог данных приложения. Затем вредоносная программа расшифровывает оверлей (данные, записанные после полезной нагрузки) в загруженном файле с помощью заданного в коде ключа для AES-шифрования. Наконец, средство обновления конфигурации пытается найти в расшифрованной полезной нагрузке набор подстрок, изменяющих конфигурацию LianSpy. Полный список доступных параметров приведен ниже.

Подстрока
(имя команды)
Описание
*con+ Включить сбор сведений о списке контактов
*con- Отключить сбор сведений о списке контактов
*clg+ Включить сбор данных журнала вызовов
*clg- Отключить сбор данных журнала вызовов
*app+ Включить сбор сведений об установленных приложениях
*app- Отключить сбор сведений об установленных приложениях
*rsr+ Запланировать создание скриншотов
*rsr- Прервать создание скриншотов
*nrs+ Включить запись экрана
*nrs- Отключить запись экрана
*swl Задать новый список приложений (указывается сразу после текста команды), в которых программа-шпион должна вести запись экрана
*wif+ Разрешать выполнение, если устройство подключено к Wi-Fi
*wif- Запрещать выполнение, если устройство подключено только к Wi-Fi
*mob+ Разрешать выполнение, если устройство подключено к сети мобильного оператора
*mob- Запрещать выполнение, если устройство подключено только к сети мобильного оператора
*sci Установить интервал захвата экрана в миллисекундах
*sbi Установить интервал между задачами эксфильтрации данных в миллисекундах

Собранные данные хранятся в зашифрованном виде в SQL-таблице Con001, которая также содержит тип записи (информация об устройстве, список контактов, журналы звонков и так далее) и ее хэш SHA-256. Данные шифруются по следующей схеме:

  • Ключ AES для шифрования данных генерируется с помощью безопасного генератора псевдослучайных чисел (PRNG). Это позволяет избежать чтения данных сторонними лицами в случае атаки по времени.
  • Заданный в коде LianSpy открытый ключ RSA используется для шифрования ключа AES.

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

Средства маскировки

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

  • Варианты зловреда маскируются либо под приложение Alipay, либо под системную службу.
  • Начиная с Android 12, в ОС присутствует функция под названием индикаторы конфиденциальности. Ее основная задача — отображать значок в строке состояния, если производится доступ к конфиденциальной информации (например, ведется запись экрана). Однако разработчикам LianSpy удалось обойти эту защиту, добавив к параметру настройки безопасности Android icon_blacklist значение cast, которое препятствует отображению значков уведомлений в строке состояния.
  • LianSpy скрывает уведомления от вызываемых фоновых сервисов с помощью службы NotificationListenerService, которая обрабатывает уведомления и может удалять их из строки состояния. Ниже приведен список ключевых фраз, используемых для удаления уведомлений из строки состояния.

  • LianSpy умеет делать скриншоты с помощью системной команды screencap, которая обычно используется для отладки, но также может быть доступна с привилегиями root-пользователя. Эта команда не выдает себя при выполнении скриншота, что позволяет злоумышленникам незаметно перехватывать содержимое экрана.
  • Шпион в значительной степени полагается на легитимные сервисы (облачное хранилище и pastebin), поэтому на зараженном устройстве не будет наблюдаться никакой подозрительной сетевой активности.
  • LianSpy шифрует похищенные данные с использованием надежного алгоритма. Даже если при анализе APK будут получены учетные данные «Яндекс Диска», жертв идентифицировать не удастся.
  • Зловред использует бинарный файл su, необходимый для получения root-доступа, с измененным именем. Исследованные образцы вредоносного ПО пытаются найти бинарный файл mu в стандартных каталогах su. Скорее всего, таким образом злоумышленник старается скрыть факт активации root-привилегий на устройстве жертвы. Такая зависимость от модифицированного бинарного файла позволяет предположить, что эта программа-шпион доставляется на устройство в результате эксплуатации неизвестной уязвимости или посредством физического доступа к телефону жертвы.

Инфраструктура

LianSpy не имеет собственной инфраструктуры. Зловред использует сервис «Яндекс Диск» для эксфильтрации похищенных данных и хранения команд конфигурации. Все данные жертвы загружаются в отдельную папку на «Яндекс Диске».

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

Учетные данные сервиса «Яндекс Диск» обновляются с заданной в коде страницы pastebin, которая может отличаться от варианта к варианту. Полный список страниц pastebin приводится в разделе «Индикаторы компрометации».

Жертвы

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

Заключение

Новая программа-шпион для Android, которую мы назвали LianSpy, обладает интересной функциональностью. Помимо стандартной для шпионского ПО кражи журналов вызовов и списка приложений, программа способна выполнять запись экрана и скрытно использовать права суперпользователя. Примечательно, что зловред в значительной степени полагается на бинарный файл su с измененным именем. Это позволяет предположить, что эта программа-шпион доставляется после другой успешной атаки на телефон жертвы. Также стоит отметить, что конфигурация по умолчанию позволяет LianSpy захватывать экран в ряде мессенджеров, а это говорит о том, что атаки не имеют финансовой подоплеки, а скорее ориентированы на получение данных — несомненный признак целевой атаки.

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

Индикаторы компрометации

Хэши APK-файлов
084206ec8e6e5684a5acdcbd264d1a41
09088db5640381951e1b4449e930ff11
15222c61978f9133aa34b5972ce84e7e
1ccf5b723c38e30107d55040f10ce32a
22b013cfb95df6b4ba0d2d40dc4bddf4
23b9e5d4ab90506c6e9a42fa47164b84
36bc97ce040ada7142e4add4eb8cd3dd
38149658e5aba1942a6147b387f79d3f
3a4f780820043a8f855979d2c59f36f2
4c3e81bb8e972eef3c9511782f47bdea
5b16eb23a2f5a41063f3f09bc4ca47dd
69581e8113eaed791c2b90f13be0981a
707a593863d5ba9b2d87f0c8a6083f70
7de18a7dac0725d74c215330b8febd4e
842d600d5e5adb6ca425387f1616d6c4
86ea1be200219aca0dc985113747d5ea
86f7c39313500abfb12771e0a4f6d47a
8f47283f19514178ceb39e592324695a
966824d8c24f6f9d0f63b8db41f723b6
99d980a71a58c8ad631d0b229602bbe2
9f22d6bffda3e6def82bf08d0a03b880
a7142ad1b70581c8b232dc6cf934bda4
c449003de06ba5f092ee9a74a3c67e26
d46c5d134a4f9d3cd77b076eb8af28b3
d9e9655013d79c692269aeadcef35e68
da97092289b2a692789f7e322d7d5112
ec74283d40fd69c8efea8570aadd56dc
f13419565896c00f5e632346e5782be4
f37213a7ef3dc51683eec6c9a89e45af
f78eaca29e7e5b035dbcbabac29eb18d
fa3fecca077f0797e9223676d8a48391
fbc2c4226744c363e62fcfeaec1a47f1

Источники зашифрованных учетных данных сервиса «Яндекс Диск»
hxxps://pastebin[.]com:443/raw/X4CuaV5L
hxxps://pastebin[.]com:443/raw/0t2c1Djz
hxxps://pastebin[.]com:443/raw/8YXyQtp9
hxxps://pastebin[.]com:443/raw/hm78BGe9
hxxps://pastebin[.]com:443/raw/R509SydV
hxxps://pastebin[.]com:443/raw/dXXcZDF7
hxxps://pastebin[.]com:443/raw/81GhQUjK
hxxps://pastebin[.]com:443/raw/2PmX7Bgd
hxxps://pastebin[.]com:443/raw/zsY6tZLb
hxxps://pastebin[.]com:443/raw/rzMhGiFp
hxxps://pastebin[.]com:443/raw/85DMiWdE
hxxps://pastebin[.]com:443/raw/nSZaB3hw
hxxps://pastebin[.]com:443/raw/Wppem8U5
hxxps://pastebin[.]com:443/raw/KRqNqNrT
hxxps://pastebin[.]com:443/raw/47uLyg6q
hxxps://pastebin[.]com:443/raw/tUQFWtVY
hxxps://pastebin[.]com:443/raw/AgBMX16r
hxxps://pastebin[.]com:443/raw/wSzsbXpg
hxxps://pastebin[.]com:443/raw/e0SqYu41
hxxps://pastebin[.]com:443/raw/ZBFe2b4z
hxxps://pastebin[.]com:443/raw/cbLWwCbR
hxxps://pastebin[.]com:443/raw/fxqART5r
hxxps://pastebin[.]com:443/raw/hiAYisG8
hxxps://pastebin[.]com:443/raw/459bbu4H
hxxps://pastebin[.]com:443/raw/7kxADNLm
hxxps://pastebin[.]com:443/raw/417svXuD
hxxps://pastebin[.]com:443/raw/w4j6jNBV
hxxps://pastebin[.]com:443/raw/9eQJ8uUd
hxxps://pastebin[.]com:443/raw/zy8BKYyg
hxxps://pastebin[.]com:443/raw/uc5Ft4z6

LianSpy: новая программа-шпион для Android, нацеленная на российских пользователей

Ваш e-mail не будет опубликован. Обязательные поля помечены *

 

Отчеты

CloudSorcerer: новая APT-угроза, нацеленная на российские государственные организации

«Лаборатория Касперского» обнаружила новую APT-угрозу CloudSorcerer, нацеленную на российские государственные организации и использующую облачные службы в качестве командных серверов аналогично APT CloudWizard.

StripedFly: двуликий и незаметный

Разбираем фреймворк StripedFly для целевых атак, использовавший собственную версию эксплойта EternalBlue и успешно прикрывавшийся майнером.

Подпишитесь на еженедельную рассылку

Самая актуальная аналитика – в вашем почтовом ящике