nekogram-phone-exfiltration

Analysis of Nekogram 12.5.2 decompiled source - phone exfiltration backdoor discovered

Анализ декомпилированных исходников Nekogram 12.5.2 - обнаружен бэкдор для сбора номеров телефонов

code

English

Summary

A phone number stealing backdoor has been identified within the Nekogram Android client. The investigation reveals that the application contains obfuscated logic designed to silently collect and upload the phone numbers of all accounts logged into the app. This malicious behavior is present in distributed versions, including the version available on the Google Play.

The Backdoor: Extra.java

The malicious code is concealed within Extra.java. While the public GitHub repository displays a “clean” example version of this file, the compiled binaries used by the public contain the exfiltration logic.

Analysis

1. Data Collection & Account Linkage

The core logic (found in function uo5.g(), restored as logNumberPhones) iterates through every Telegram account active in the app (up to 8 accounts).

for (int i2 = 0; i2 < 8; i2++) {
    UserConfig userConfig = UserConfig.getInstance(i2);
    if (userConfig.A() && (currentUser = userConfig.o()) != null && (phoneNumber = currentUser.f) != null) {
        mapWithAccounts.put(String.valueOf(currentUser.a), phoneNumber);
    }
}

Impact: This allows the developer to link multiple accounts to a single physical user/device.

2. Silent Exfiltration via Inline Queries

The data is exfiltrated using Inline Queries. This is a highly stealthy method because it does not leave a trace in the user’s chat history.

The final exfiltrated string looks like: 741ad2...ae1b1{"123456789": "+79001234567", ...}

3. Decrypted Constants

Using a custom decryption tool, we recovered hidden strings used by the backdoor:

ID Decrypted Value Context
-7227028090432512756 873ffaceba76e791ff2491224a3cdb49 APP_HASH
-7227026067502916340 nekonotificationbot Primary Exfiltration Target
-7227026153402262260 tgdb_search_bot OSINT Bot Reference
-7227025642301154036 usinfobot OSINT Bot Reference
-7227027729655259892 741ad2...ae1b1 Shared Secret / Hash

Found APP_ID: 442495

GitHub Issue for awareness

Conclusion

Nekogram is harvesting private user data. By sending phone numbers and User IDs to a centralized bot, the developers can build a database and later sell it to creators of well-known OSINT bots, this is destroying Telegram’s anonymity concept. The use of obfuscation and inline queries demonstrates a clear intent to hide this behavior from both users and security researchers. Always use only the official Telegram client if you don’t want your private data to be leaked!


RU

Обзор

В Android-клиенте Nekogram обнаружен бэкдор, ворующий номера телефонов. Расследование показало, что приложение содержит обфусцированный код, предназначенный для скрытого сбора и выгрузки номеров телефонов всех аккаунтов, вошедших в приложение. Это вредоносное поведение присутствует в публичных сборках, включая версию из Google Play.

Бэкдор в Extra.java

Вредоносный код спрятан в файле Extra.java. Примечательно, что в публичном репозитории GitHub этот файл представлен в виде «чистого» примера, однако скомпилированные бинарные файлы, распространяемые среди пользователей, содержат логику кражи данных.

Анализ

1. Сбор данных и связывание аккаунтов

Основная логика (функция uo5.g(), восстановленное название: logNumberPhones) перебирает все учетные записи Telegram, активные в приложении (до 8 штук).

for (int i2 = 0; i2 < 8; i2++) {
    UserConfig userConfig = UserConfig.getInstance(i2);
    if (userConfig.A() && (currentUser = userConfig.o()) != null && (phoneNumber = currentUser.f) != null) {
        mapWithAccounts.put(String.valueOf(currentUser.a), phoneNumber);
    }
}

Последствия: Это позволяет разработчику связать несколько аккаунтов с одним физическим пользователем/устройством.

2. Скрытый слив через Inline-запросы

Данные передаются с помощью Inline-запросов (инлайн-запросов). Это крайне скрытный метод, так как он не оставляет следов в истории чатов.

Итоговая строка с похищенными данными выглядит так: 741ad2...ae1b1{"123456789": "+79001234567", ...}

3. Расшифрованные константы

С помощью кастомного инструмента дешифровки были восстановлены скрытые строки, используемые бэкдором:

ID Расшифрованное значение Контекст
-7227028090432512756 873ffaceba76e791ff2491224a3cdb49 APP_HASH
-7227026067502916340 nekonotificationbot Основной бот для слива
-7227026153402262260 tgdb_search_bot Упоминание OSINT-бота
-7227025642301154036 usinfobot Упоминание OSINT-бота
-7227027729655259892 741ad2...ae1b1 Общий секрет / Хеш

Найден APP_ID: 442495

Issue на GitHub с оглаской

Заключение

Nekogram занимается сбором личных данных пользователей. Отправляя номера телефонов и User ID централизованному боту, разработчики могут создать базу данных, чтобы в дальнейшем продать её создателям известных OSINT-ботов. Это полностью разрушает концепцию анонимности в Telegram. Использование обфускации и инлайн-запросов (inline queries) явно свидетельствует о намерении скрыть подобную активность как от рядовых пользователей, так и от специалистов по кибербезопасности. Всегда используйте только официальный клиент Telegram, если не хотите, чтобы ваши личные данные попали в открытый доступ!