TikTok广告SDK上传指纹加密信息破译

admin 2026-03-11 03:13:15 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 文章逆向分析了TikTok旗下PangleSDK的加密机制,发现其cypher:3方案存在致命设计缺陷。虽然采用了AES-256-CBC算法,但密钥与初始化向量被嵌入消息明文头部传输,且原生库中存在硬编码密钥。作者成功编写解密程序,对694个载荷实现百分百解密,证实该加密形同虚设,仅为流量混淆,无法保护用户设备指纹等敏感隐私数据,揭示了严重的安全隐患。 综合评分: 88 文章分类: 逆向分析,移动安全,漏洞分析,应用安全,数据安全


cover_image

TikTok广告SDK上传指纹加密信息破译

二进制空间安全

2026年3月10日 10:47 北京

将二进制空间安全设为”星标⭐️”

第一时间收到文章更新

技术背景

#

#

Pangle SDK是TikTok for Business(字节跳动旗下)推出的程序化移动广告平台Pangle提供的软件开发工具包。它的主要作用是帮助全球移动应用开发者在其App中集成广告功能,从而实现流量变现和用户增长。

在使用过程中,SDK会收集用户终端的一些指纹信息, 并将数据以“cypher:3”为标记进行加密传输,大致格式如下:

{"cypher": 3, "message": "3eT2HZkAvtEl4Z1cgNmwq7mfXKhJdLTi..."}

SDK逆向工程

Pangle SDK 通过字节跳动的 Maven 仓库artifact.bytedance.com公开分发。本次试验的版本为 6.5.1.2 版本,首先分析本地库和 Java 类。通过前期静态分析,该SDK包含四个本地库:

libtobEmbedPagEncrypt.so(8KB加密库)

libpglarmor.so (61KB加密封装器)

libnms.so(281KB网络库)

libtt_ugen_layout.so(广告布局引擎)

利用jadx 工具反编译Java 类,并通过四个关键文件追踪加密流程, 定位到四个关键文件:

(1).PangleEncryptManager.java

(2).PglCryptUtils.java

(3).PangleEncryptUtils.java

(4).aT.java

其中aT.java是经过混淆的类, 里面实现了cypher:3 加密方法, 加密原理如下:

(1).生成一个随机的 32 字符密钥和一个 16 字符初始化向量 (IV)。

(2).使用 AES-256-CBC 加密,并采用 PKCS5 填充。

(3).连接:版本字节 + 打乱的密钥 + IV + Base64(密文)

其生成的消息格式如下图:

加密密钥和初始化向量 (IV) 都嵌入在每条消息中。 要解密任何cypher:3有效载荷,只需读取字符位置1-32的密钥,位置33-48的初始化向量,以及位置49及之后的密文即可。

这相当于把前门锁上,然后把钥匙用胶带粘在门框上。这种方案与其说是加密保护,不如说是对SDK流量的混淆,因为任何阅读过公开代码的人都可以解密每条消息。

该SDK还包含第二条加密路径,即通过名为libtobEmbedPagEncrypt.so 的原生库实现的加密。反汇编这个8KB的二进制文件后发现,.rodata部分中硬编码了一个以明文形式存储的AES密钥:UK*@3oKpFlVVnads 。该密钥在SDK版本5.3.1.0和6.5.1.2中完全相同,这意味着每个使用Pangle SDK的应用程序在其二进制文件中都包含相同的静态密钥。

确认算法

Cb/aT.java 中的底层密码算法是标准的 Java 加密技术:

Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");cipher.init(1, secretKeySpec, new IvParameterSpec(str2.getBytes()));

AES-256-CBC 在密钥保持机密的情况下是一种非常强的加密算法。但在这里,密钥却与密文一起传输。

利用其加密原理很容易写出解密程序, 通过对捕获到的694 个cypher:3 载荷进行了测试。结果是:694个请求全部成功解密,成功率达到100%

解密后的指纹信息大致如下:

{  "device": {    "device_model": "iPhone15,3",    "os_version": "18.7.2",    "battery_remaining_pct": 83,    "total_space": "255413800960",    "free_space": 66881117072,    "screen_bright": 0.71,    "ip": "192.168.x.x",    "device_city": "America/New_York",    "idfv": "[redacted]",    "darkmode": 1,    "rooted": 0  },  "app_id": "8139319",  "sdk_version": "7.2.0.4",  "mediation": "google"}

大致包含的信息有:设备型号、CPU核心数、总内存、总存储容量、可用存储容量、屏幕尺寸和像素密度、电池电量和充电状态、屏幕亮度、音量、耳机是否连接、飞行模式、低功耗模式状态、内部IP地址、网络连接类型、时区、运营商名称等。

(全文完)


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:二进制空间安全 《TikTok广告SDK上传指纹加密信息破译》

通知:二次元收收味 网络安全文章

通知:二次元收收味

文章总结: 该文档截取自一篇网络文章的发布通知页,标题涉及二次元相关话题,作者显示为棉花糖糖糖,发布时间为2026年3月。文档正文部分为图片占位符,无法获取具体
评论:0   参与:  0