Как белорусские власти отслеживают активистов и журналистов через ResidentBat.

Телефон может оказаться у представителей закона на несколько минут в самых разных ситуациях. Пограничник просит разблокировать устройство для проверки содержимого, сотрудник на КПП забирает аппарат в отдельную комнату под предлогом досмотра, телефон изымают и возвращают после краткого опроса. Для ResidentBat такого окна хватает: заражение происходит не через интернет и не дистанционно, а при физическом доступе к устройству.
ResidentBat описывают как шпионское ПО для Android, которое, согласно совместному расследованию Reporters Without Borders и RESIDENT.NGO, применяли против журналистов и представителей гражданского общества. Публично о ResidentBat сообщили в декабре 2025 года. Анализ кода указывает, что разработка могла начаться как минимум в 2021 году.
Распространение у ResidentBat точечное. Сервер управления не раздаёт установочные файлы и не заражает устройства сам. Для установки нужны физический доступ к телефону, загрузка APK через ADB, ручная выдача разрешений и отключение Google Play Protect. ADB, то есть Android Debug Bridge, обычно используют для отладки, но при атаке этот инструмент позволяет установить приложение в обход магазина. Такой способ не подходит для массовых заражений, зато даёт устойчивый контроль над конкретным устройством.
После установки ResidentBat даёт оператору длительный доступ к данным и функциям телефона. В перечне возможностей указаны журналы звонков и SMS, доступ к данным из зашифрованных мессенджеров, запись с микрофона, снимки экрана и выгрузка файлов из памяти устройства. Сервер управления принимает выгруженные данные, отправляет команды, передаёт обновления и меняет настройки агента.
Отдельный риск связан с удалённым стиранием. ResidentBat умеет вызывать DevicePolicyManager.wipeData и очищать устройство. Для журналистов и активистов это опасно не только утечкой, но и потерей материалов, переписок и контактов, включая источники.
Канал управления работает по HTTPS и оставляет набор стабильных признаков. Узлы ResidentBat используют самоподписанные сертификаты со значением CN=server и одинаковый отпечаток баннера. Censys добавил ResidentBat в Threat Module с идентификатором THREAT-240, чтобы находить такие узлы автоматически. По состоянию на февраль 2026 года в одном из представлений Censys инфраструктура ResidentBat была сосредоточена в Европе и России: Нидерланды (5 узлов), Германия (2), Швейцария (2), Россия (1). Управляющий трафик обычно идёт по портам 7000–7257, а часть узлов также использует порт 4022.
Один из индикаторов для поиска выглядит так:
banner_hash_sha256: 6f6676d369e99d61ce152e1e2b2eb6f5e26a4331f4008b5d6fe567edefdbeaca
При проверке открытых узлов исследователи увидели попытки усложнить идентификацию на уровне HTTP. Любой путь возвращает 200 OK с пустым телом, заголовки авторизации и тела POST-запросов не дают видимого отклика. В ответах встречается статический или поддельный заголовок Date, например Tue, 06 Jan 2026 01:00:00 GMT. Из-за такого поведения сигнатуры по HTTP-ответам почти бесполезны, поэтому основными признаками остаются TLS-сертификат и баннерный отпечаток. Описание инфраструктуры также допускает, что сервер проверяет клиента по сертификату, встроенному в APK, использует собственный протокол вместо обычного REST и принимает команды только от заранее разрешённых устройств.
Сопоставление по сертификатам помогает связывать узлы между собой. В зондированной части инфраструктуры наблюдались 5 разных SHA-256 отпечатков сертификатов, при этом часть сертификатов повторялась на двух и более комбинациях IP и порта. Такое повторное использование упрощает поиск связанных точек, если уже известен хотя бы один узел.
Настройки агента приходят в формате JSON. В параметрах упоминаются адрес сервера sars, период выгрузки spd и флаг asp, который включает отправку данных как можно быстрее.
Для поиска инфраструктуры Censys предлагает два пути. Первый опирается на готовую метку Threat Module:
host.services.threats.name = "ResidentBat"
Второй выражает ту же логику вручную, через сочетание CN=server и баннерного хеша:
host.services: (
cert.parsed.subject_dn = "CN=server" and
banner_hash_sha256 = "6f6676d369e99d61ce152e1e2b2eb6f5e26a4331f4008b5d6fe567edefdbeaca"
)
Инфраструктура размещается на виртуальных серверах у европейских и российских провайдеров. В отчёте выделяется AS29182 RU-JSCIOT, также упоминаются AS210976 TWC-EU, AS44812, AS51395, AS44051 и другие. Управляющие сервисы обычно сидят на портах из диапазона 7000–7257, например 7001, 7005, 7011, 7015, 7025, 7251–7257. На тех же IP часто присутствует SSH на порту 22, что похоже на обычное администрирование серверов.
Защита от ResidentBat начинается с того, чтобы не оставлять возможности для установки через физический доступ и ADB. Для людей из зоны риска важно отключить USB-отладку, не отдавать разблокированный телефон в чужие руки, не устанавливать приложения из непроверенных источников и следить, чтобы Google Play Protect оставался включён. В рекомендациях отдельно упоминается Android Advanced Protection Mode, режим, который блокирует установку приложений в обход магазина и усиливает другие настройки безопасности.
Для сетевого мониторинга полезно отслеживать исходящие HTTPS-подключения к узлам с самоподписанным сертификатом CN=server на портах 7000–7257, а также на 4022, где порт встречается. Для блокировок и оповещений можно использовать отпечатки сертификатов и баннерный хеш. На устройстве помогут контроль использования ADB, поиск пакетов, установленных в обход магазина, и проверка разрешений у приложений, которые маскируются под системные.