Специалисты Talon (S2W) выявили новые образцы вредоносного приложения BirdCall, созданного северокорейской группой ScarCruft. Вредоносное ПО маскируется под легитимный мессенджер Zangi Messenger; злоумышленники переупаковали официальное приложение, изменив точку входа. BirdCall представляет собой шпионское программное обеспечение, нацеленное на кражу информации с заражённых устройств. Анализ показал, что группа использует облачный сервис Zoho WorkDrive в качестве канала связи с командно-контрольным сервером (C2). Для этих целей применяются два отдельных аккаунта: один для отдачи команд, второй - для сбора похищенных данных.
Описание
Ранее ESET уже сообщал о подобных атаках ScarCruft, направленных на регион Яньбянь и определённые группы лиц. Новое исследование S2W подтвердило, что злоумышленники не ограничились игровыми приложениями, как предполагалось раньше, а также поразили и мессенджер Zangi. Механизм распространения BirdCall пока не установлен, однако известно, что после установки вредоносное ПО запрашивает расширенные разрешения (доступ к хранилищу, контактам, звонкам, SMS и другим данным). Если разрешения получены, приложение запускает три фоновых потока. Один из них каждые 15 минут собирает базовую информацию об устройстве и отправляет её в Zoho WorkDrive. Второй поток также раз в 15 минут собирает данные нажатий клавиш (кейлоггинг), контакты, файловую структуру, журналы звонков и SMS и загружает их в облако. Третий поток каждые 2 минуты опрашивает специальную папку для получения команд от злоумышленника.
Для скрытой передачи данных BirdCall применяет многослойное шифрование. Сначала собранная информация сжимается алгоритмом zlib, затем шифруется методом AES-256-CBC, а остаток данных, не кратный 16 байтам, обрабатывается операцией XOR. Мастер-ключ длиной 48 байт, используемый для генерации ключей AES и XOR, дополнительно шифруется открытым ключом RSA-2048, встроенным в приложение. Полученный зашифрованный поток данных упаковывается в пакеты с метаданными. Имена файлов, загружаемых в Zoho WorkDrive, кодируются по специальному алгоритму на основе Base-26, что позволяет встраивать в имя файла отметку времени и тип данных.
Согласно отчёту S2W, всего в приложении предусмотрено восемь типов удалённых команд (опкодов). Среди них - смена аккаунта, самоудаление приложения, кража выбранных файлов с определёнными расширениями (документы, электронные таблицы, PDF, архивы и другие), а также повторный сбор данных. Команды доставляются либо через имя файла (с кодировкой), либо через тело файла, загруженного злоумышленником в облачную папку. Расшифровать команду может только конкретное устройство, поскольку ключ дешифрования формируется на основе уникального идентификатора устройства (SSAID) и времени первого запуска.
Особый интерес представляет тот факт, что в коде BirdCall обнаружена логика для кейлоггинга, записи экрана и звука через сервис специальных возможностей Android. Этот код нацелен на перехват ввода в таких мессенджерах, как WeChat, Telegram и KakaoTalk. Однако, как отмечают аналитики, данный функционал неактивен: отсутствуют запросы соответствующих разрешений и не создаются необходимые экземпляры классов. Таким образом, пока злоумышленники не реализуют эту возможность в полном объёме.
В ходе анализа также обнаружены строки в классе NotificationUtils, связанные с другими приложениями: TELEBIT, WICKR, ZHUAGOU. Это указывает на то, что BirdCall может иметь несколько вариантов, маскирующихся под различные мессенджеры или сервисы. В частности, упоминается приложение "延边红十" (карточная игра), которое было описано ESET. Подобная модульность и возможность повторного использования кода позволяют группе ScarCruft быстро создавать новые модификации вредоносного ПО, адаптированные под разные цели.
Для пользователей, особенно проживающих в регионе Яньбянь или работающих с чувствительной информацией, угроза остаётся высокой. Использование легитимного облачного сервиса затрудняет обнаружение сетевой активности, поскольку трафик выглядит как обычная работа с Zoho WorkDrive. Поскольку BirdCall получает доступ к контактам, сообщениям и файлам, компрометация может привести к утечке персональных данных, корпоративной информации и перехвату переписки в популярных мессенджерах.
Эксперты S2W рекомендуют не устанавливать приложения из непроверенных источников, особенно если они якобы заменяют популярный сервис. Пользователям Android следует проверять запрашиваемые разрешения: если мессенджер требует доступ к контактам и хранилищу без явной необходимости, это сигнал опасности. Корпоративным службам безопасности стоит обратить внимание на нестандартные соединения к Zoho WorkDrive, особенно при отсутствии легитимных корпоративных учетных записей в этом сервисе. Дальнейший мониторинг вариантов BirdCall, вероятно, покажет расширение списка поддельных приложений, поэтому важно следить за обновлениями от вендоров антивирусных решений и исследовательских групп, таких как S2W.
Индикаторы компрометации
- christinejones62@zohomail.com
- stevenmcguire330@zohomail.com
MD5
- 361f538860fff78e6f61edbf83a03ee1
SHA256
- 23052beabefb76658efed8c4519060a5bca6cb4e7f7b78088186dc64222f66e2
YARA
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | rule APT_ScarCruft_BirdCall_DEX { meta: description = "Detection rule for BirdCall(Mobile) Malware" author = "khjisbest@s2w.inc" created_at = "2026-06-24" version = "v1.0" reference = "n/a" threat_actor = "ScarCruft" category = "Malware" malware_name = "BirdCall" serverity = "High" tlp = "TLP_WHITE" hash1 = "6a0f6cd22686a02aa43ed8e11695a637" strings: $dex_magic = {64 65 78 ??} $field1 = "configKey" $field2 = "cloudKey" $field3 = "defExt" $extension = ".hwp" $enc_package1 = "com.tencent.mm" base64 base64wide $enc_package2 = "org.telegram.messenger" base64 base64wide $enc_package3 = "com.kakao.talk" base64 base64wide $enc_package4 = "com.xxx.xxx" base64 base64wide $command1 = "MP_ACTION_FILE_OR_DIRECTORY" $command2 = "MP_ACTION_KILLME" $command3 = "MP_GET_DATA" $command4 = "MP_GET_TREES" $command5 = "MP_SEND_FILE" $command6 = "MP_SET_CLOUD" $command7 = "MP_SET_FILESEARCH_EXTENTION" $command8 = "MP_SET_MODE" $command9 = "MP_SET_THREADS" condition: $dex_magic at 0 and ((all of ($field*) and $extension) or (all of ($enc_package*)) or (4 of ($command*))) } |