写点什么

TikTok 的应用程序日志都记录了什么内容?

  • 2020-09-10
  • 本文字数:6281 字

    阅读完需:约 21 分钟

TikTok 的应用程序日志都记录了什么内容?

近日,TikTok 的命运可谓一波三折。本文,我们来看下黑客对 TikTok 的研究结果吧。


本文最初发表在 Medium 博客,经原作者 Elliot Alderson 授权,InfoQ 中文站翻译并分享。


自从我发表第一篇文章《TikTok 用什么算法传输并加密内容?》(TikTok: Logs, Logs, Logs)以来,发生了很多事情。



我们还是用事实说话,以更好地了解 TikTok。

免责声明

  • TikTok 为用户提供了大量功能,这要归功于它高达数百万行的代码。因此,仅靠一篇文章是不可能涵盖像“TikTok 是否对国家安全构成威胁?”这样宽泛而模糊的问题答案。因此,我计划在一系列文章中讨论该问题,每篇文章都有特定的主题。

  • 我是一名法国安全研究员,多年来,一直在分析移动应用程序。你可以在 http://fs0c131y.com/press 网站找到我的公开作品,在 http://twitter.com/fs0c131y 找到我。

  • 我的目标完全透明,就是分享我知道的所有内容。

  • 如果想跳过技术细节,可以在本文末尾找到总结。

前言

在我上一篇文章《TikTok 用什么算法传输并加密内容?》(TikTok: Logs, Logs, Logs)中,我对 TikTok 发出的 app_log 网络请求的内容进行了解密。



完成解密后,有一个问题仍然存在:


事件记录。我需要仔细研究一下他们认为的“事件”是什么,但就我所知,这似乎是一个相当标准的分析解决方案。


在本文中,我将回答以下问题:TikTok 的应用程序日志的定义是什么?

什么是 TikTok 的应用程序日志?

我们的起点是 app_log 这一关键字。为了解 TikTok 是如何处理应用程序日志的,我对应用程序进行了反编译,并分析了源代码。我很快在 DBHelper 类中找到了 ss_app_log.db 的定义。



这很有趣,TikTok 使用本地数据库来存储应用程序日志。我特意查看了测试用的手机才确认这一点。



正如你所见,TikTok 创建了许多数据库。如果你打开 ss_app_log.db 这个文件,你可以在事件表中找到一些数据。



这些方法的签名给我们提供了 3 个新对象:LogEvent、LogPage、LogSession。



这回答了我们最初的问题!TikTok 的应用程序日志可以是 LogEvent、LogPage 或 LogSession。

这些应用程序日志(实际上)里面有什么?

很好,我找到了不同日志对象的定义,但 TikTok 真正发送的是什么呢?


是时候用 Frida 拦截 DBHelper 类的 6 种插入方法了。



通过这种方法,我得到了 TikTok 在使用应用程序时创建的所有应用程序日志的详细信息。下面是日志会话、日志事件和日志以及杂项日志的示例。


[Log Session]active = falseapp_version =  17.2.4duration = 0eventIndex = 0id = 0launch_sent = falsenon_page = truepausetime = 1596980554524timestamp = 1596980554524value = 6630a167-4cf8-46a3-ac6c-c4b45aab0a00version_code = 2021702040[Log Event]category = event_v3ext_json =  {"is_cache":1,"is_timeout":1,"cache_num":1,"_event_v3":1,"ab_sdk_version":"1799896,185215011,1868782,1788470,1791623","nt":4}ext_value = 0id = 0instant_only = falselabel = nullmHasTimelySend = falsesession_id = 39tag = pull_out_cache_videoteaEventIndex = 1timestamp = 1596980554524user_id = 0value = 0[Log]value = {"event":[{"ad_extra_data":"{\"non_hb_ad\":0,\"hb_ad\":0}","is_ad_event":1,"is_i18n_sdk":1,"refer":"sdk","ab_sdk_version":"1799896,185215011,1868782,1788470,1791623","nt":4,"category":"event_v1","tag":"sdk_ad","label":"ad_sdk_bid_upload","session_id":"6630a167-4cf8-46a3-ac6c-c4b45aab0a00","datetime":"2020-08-09 15:42:34","event_id":655},{"nt":4,"category":"event_v1","tag":"launch_time","label":"perf_monitor","ext_value":858,"session_id":"6630a167-4cf8-46a3-ac6c-c4b45aab0a00","datetime":"2020-08-09 15:42:34","event_id":658}],"event_v3":[{"nt":4,"ab_sdk_version":"1799896,185215011,1868782,1788470,1791623","event":"pull_out_cache_video","params":{"is_cache":1,"is_timeout":1,"cache_num":1},"event_id":653,"tea_event_index":1,"local_time_ms":1596980554524,"session_id":"6630a167-4cf8-46a3-ac6c-c4b45aab0a00","datetime":"2020-08-09 15:42:34"},{"nt":4,"ab_sdk_version":"1799896,185215011,1868782,1788470,1791623","event":"caijing_iap_google_set_host","params":{"params_for_special":"caijing_pay_casher","set_host":"tp-pay-mva.byteoversea.com"},"event_id":654,"tea_event_index":2,"local_time_ms":1596980554600,"session_id":"6630a167-4cf8-46a3-ac6c-c4b45aab0a00","datetime":"2020-08-09 15:42:34"},{"nt":4,"ab_sdk_version":"1799896,185215011,1868782,1788470,1791623","event":"caijing_iap_google_upload_host","params":{"params_for_special":"caijing_pay_casher","upload_host":"tp-pay-mva.byteoversea.com","from":"confirm_task"},"event_id":656,"tea_event_index":3,"local_time_ms":1596980554729,"session_id":"6630a167-4cf8-46a3-ac6c-c4b45aab0a00","datetime":"2020-08-09 15:42:34"},{"nt":4,"ab_sdk_version":"1799896,185215011,1868782,1788470,1791623","event":"main_boot_type","params":{"type":1},"event_id":657,"tea_event_index":5,"local_time_ms":1596980554808,"session_id":"6630a167-4cf8-46a3-ac6c-c4b45aab0a00","datetime":"2020-08-09 15:42:34"},{"nt":4,"ab_sdk_version":"1799896,185215011,1868782,1788470,1791623","event":"power_launch_log","params":{"last_start_power":"100","last_session":"18980","last_end_power":"100","current_power":"100","launch_num":"14","is_cold_launch":"1","is_charging":"1"},"event_id":659,"tea_event_index":6,"local_time_ms":1596980554851,"session_id":"6630a167-4cf8-46a3-ac6c-c4b45aab0a00","datetime":"2020-08-09 15:42:34"}],"launch":[{"datetime":"2020-08-09 15:42:34","session_id":"6630a167-4cf8-46a3-ac6c-c4b45aab0a00","local_time_ms":1596980554524,"tea_event_index":0,"is_background":true,"ab_sdk_version":"1799896,185215011,1868782,1788470,1791623"},{"datetime":"2020-08-09 15:42:34","session_id":"05430002-b046-4ab3-9e7b-e4cc52f1a0b3","local_time_ms":1596980554861,"tea_event_index":0,"ab_sdk_version":"1799896,185215011,1868782,1788470,1791623"}],"magic_tag":"ss_app_log","time_sync":{"server_time":1596980557,"local_time":1596980557},"header":{"openudid":"e4340d3235274e4b","sdk_version":"2.5.6.3","package":"com.zhiliaoapp.musically","channel":"googleplay","display_name":"TikTok","app_version":"17.2.4","version_code":2021702040,"timezone":1,"access":"wifi","os":"Android","os_version":"8.1.0","os_api":27,"device_model":"Nexus 6P","device_brand":"google","device_manufacturer":"Huawei","language":"en","resolution":"2392x1440","display_density":"mdpi","density_dpi":560,"clientudid":"8e9b0431-e442-49c7-ac03-4bfea91b540f","install_id":"6857220033589053189","device_id":"6727990782160700929","sig_hash":"194326e82c84a639a52e5c023116f12a","aid":1233,"push_sdk":[1,2,7,8,9],"rom":"EMUI-4805388","release_build":"074debc_20200803","update_version_code":2021702040,"manifest_version_code":2021702040,"app_version_minor":"","cpu_abi":"arm64-v8a","not_request_sender":0,"rom_version":"OPM6.171019.030.E1","region":"US","tz_name":"Europe\/Paris","tz_offset":7200,"custom":{"filter_warn":0,"web_ua":"Mozilla\/5.0 (Linux; Android 8.1.0; Nexus 6P Build\/OPM6.171019.030.E1; wv) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/84.0.4147.111 Mobile Safari\/537.36","user_period":-1,"user_mode":-1},"google_aid":"315f154c-a3a0-48de-b932-319e0595114b"},"_gen_time":1596980557330}log_type =  0[Misc Log]session_id = 40log_type =  media_loadervalue = {"cache_content_length":0,"cache_hit_off":0,"download_task_num":0,"encrypt_version":1,"end_req_t":1596980559207,"err_code":0,"file_key":"v09044ac0000brd02sf4gdtjhfg5lrtg_bytevc1_540p_981609","han_sh_st":4,"io_read_size":0,"io_read_time":1,"is_auth_err":-1,"is_crc_err":-1,"is_hiJack_err":0,"l_err_code":0,"l_sta_code":206,"loader_download_size":1897451,"loader_info":"{\n   \"ac_check_level\" : 0,\n   \"check_sum_level\" : 0,\n   \"cost_time\" : 2042,\n   \"crc_err_url_index\" : 0,\n   \"down_load_size\" : 1897451,\n   \"download_size\" : 1897451,\n   \"end_req_t\" : 1596980559204,\n   \"err_code\" : 0,\n   \"err_stage\" : 0,\n   \"io_write_size\" : 1897451,\n   \"io_write_time\" : 171,\n   \"is_all_forbid\" : 0,\n   \"is_call_f_api\" : 0,\n   \"is_crc_err\" : -1,\n   \"is_enble_pre_con\" : 1,\n   \"is_hiJack_err\" : 0,\n   \"marked_io_speed\" : 0,\n   \"net_log\" : [\n      {\n         \"dns_start_t\" : 1596980557162,\n         \"dns_t\" : 1596980557266,\n         \"end_req_t\" : 1596980559204,\n         \"http_err_code\" : 0,\n         \"http_err_stage\" : -1,\n         \"http_first_body_t\" : 1596980557589,\n         \"http_open_end_t\" : 1596980557589,\n         \"ip_info\" : \"2.21.35.19\",\n         \"ip_list\" : \"2.21.35.19,2.21.35.42,2.21.35.8,2.21.35.24,2.21.35.43,2.21.35.41,2.21.35.16,2.21.35.25,2.21.35.27,\",\n         \"is_crc_err\" : -1,\n         \"is_force_https\" : 0,\n         \"is_socket_reuse\" : 0,\n         \"is_tls_ses_reuse\" : 0,\n         \"read_off\" : 1897451,\n         \"read_size\" : 1897451,\n         \"req_check_t\" : -1,\n         \"req_t\" : 1596980557162,\n         \"tcp_con_start_t\" : 1596980557266,\n         \"tcp_con_t\" : 1596980557322,\n         \"tcp_err_code\" : 0,\n         \"tcp_first_pack_t\" : 1596980557393,\n         \"tcp_window_size\" : -100000,\n         \"tls_version\" : \"TLSv1.2\",\n         \"url_index\" : 0\n      }\n   ],\n   \"network_version\" : \"avnetwork_andorid_1.1.4.5_boringssl\",\n   \"ori_url_num\" : -1,\n   \"read_off\" : 1897451,\n   \"req_t\" : 0,\n   \"speed_coe_value\" : 0.0,\n   \"tcp_err_code\" : 0,\n   \"url_fail_count\" : 0,\n   \"url_index\" : 0,\n   \"url_suc_count\" : 1,\n   \"urls\" : [\n      \"https:\/\/v16m.tiktokcdn.com\/2120bf3fa76a176531a3c7a37d1008eb\/5f32a04c\/video\/tos\/useast2a\/tos-useast2a-pve-0068\/73089af821d24176945a10483a866aec\/?a=1233&br=1916&bt=958&cr=3&cs=2&dr=0&ds=6&er=&l=20200809134235010189066019293A1EAC&lr=all&mime_type=video_mp4&qs=11&rc=anU4aW1nN3YzdTMzZjczM0ApODlmOjg4ODs5NzRlNzYzZWdxaWRlcWRjL2FfLS1eMTZzczZfYjUxY2JhL2FfMDJjYGI6Yw%253D%253D&vl=&vr=\",\n      \"https:\/\/v19.tiktokcdn.com\/3740f4af6869fd6e64346601b8163868\/5f32a04c\/video\/tos\/useast2a\/tos-useast2a-pve-0068\/73089af821d24176945a10483a866aec\/?a=1233&br=1916&bt=958&cr=3&cs=2&dr=0&ds=6&er=&l=20200809134235010189066019293A1EAC&lr=all&mime_type=video_mp4&qs=11&rc=anU4aW1nN3YzdTMzZjczM0ApODlmOjg4ODs5NzRlNzYzZWdxaWRlcWRjL2FfLS1eMTZzczZfYjUxY2JhL2FfMDJjYGI6Yw%253D%253D&vl=&vr=\",\n      \"https:\/\/api16-normal-c-useast1a.tiktokv.com\/aweme\/v1\/play\/?video_id=v09044ac0000brd02sf4gdtjhfg5lrtg&line=0&ratio=540p&media_type=4&vr_type=0&improve_bitrate=0&is_play_url=1&bytevc1=1&quality_type=11&adapt540=1&source=PackSourceEnum_FEED&pass-region=1&pass-route=1&iid=6857220033589053189&device_id=6727990782160700929&ac=wifi&channel=googleplay&aid=1233&app_name=musical_ly&version_code=170204&version_name=17.2.4&device_platform=android&ab_version=17.2.4&ssmix=a&device_type=Nexus%2b6P&device_brand=google&language=en&os_api=27&os_version=8.1.0&openudid=e4340d3235274e4b&manifest_version_code=2021702040&resolution=1440%2a2392&dpi=560&update_version_code=2021702040&_rticket=1596980556917&storage_type=1&current_region=FR&app_type=normal&pass-route=1&cpu_support64=true&host_abi=arm64-v8a&sys_region=US&appTheme=light&pass-region=1&timezone_name=Europe%252FParis&residence=FR&app_language=en&ac2=wifi&uoo=0&op_region=FR&timezone_offset=3600&build_number=17.2.4&locale=en&region=US&ts=1596980556&cdid=3506991f-9724-4c2c-b62e-37e84dc465fe\"\n   ]\n}\n","loader_type":0,"log_type":"media_loader","net_content_length":1897451,"raw_key":"v09044ac0000brd02sf4gdtjhfg5lrtg_bytevc1_540p_981609","read_cache_size":0,"read_loader_size":1897451,"receive_req_t":1596980557154,"reply_code":206,"reply_player_size":1897451,"req_end_off":0,"req_off":0,"ret":0,"sdk_ua":"AVMDL-1.0.33.1-boringssl-boringssl-ANDROID","sdk_version":"AVMDL-1.0.33.1-boringssl-boringssl","task_type":1,"trace_id":"6727990782160700929T1596980557123T18185","use_file_mgr":1,"wait_task_num":0}
复制代码


我还发布了 TikTok 在应用程序启动期间创建的应用程序日志的完整列表:


https://gist.github.com/fs0c131y/b4ef278e8863c636964793e1b27f889d



这些日志是否包含个人数据?答案是没有。你最多能找到的是关于设备的数据,如操作系统、操作系统版本、设备型号、设备品牌、像素密度等,基本上就这些了,仅此而已。

总结

在本文中,我找到了 TikTok 不同类型日志的定义,并观察了他们是如何动态创建的。经过分析,应用程序日志似乎并不含个人数据。


通过这两篇文章,我们对 TikTok 应用程序日志有了一个很好的概述。下一篇文章将专门讨论 TikTok 如何在 Android 系统上使用一个众所周知的技巧来获取用户设备的 Mac 地址。


前文回顾:


TikTok 用什么算法传输并加密内容?


作者介绍:


Elliot Alderson,法国黑客。在 Predicta Lab 打击虚假信息,与 USANetwork 无关。


原文链接:


https://medium.com/@fs0c131y/tiktok-what-is-an-app-log-da70193f875


2020-09-10 11:362046

评论 1 条评论

发布
用户头像
应该给懂王看看
2020-09-24 08:21
回复
没有更多了
发现更多内容

腾讯强推Redis成长手册!原理+应用+集群+拓展+源码五飞

小Q

Java redis 学习 架构 面试

【可下载】2020年底收官!为大家整理了物联网行业全面研究报告、行业洞察、白皮书……

IoT云工坊

人工智能 大数据 5G 物联网 智能家居

家谱链亮相高交会,点亮“区块链+文化”融合发展之路

13530558032

“懂行”的价值循环与蝴蝶风暴

脑极体

python+requests进行get、post方法接口测试

测试人生路

Python 接口测试

区块链治理的真实价值在哪里

CECBC

区块链 治理 治理机制

架构作业--相交链表

Nick~毓

JVM真香系列:图解垃圾回收器

田维常

JVM 垃圾回收

第八周课后练习

knight

“区块链+营销”:科技力量助力行业前行

CECBC

市场营销

分分钟玩转SpringBoot自定义注解

比伯

Java 大数据 编程 架构 编程语言

苏州崛起为我国区块链产业高地

CECBC

区块链 社区矫正

Java8引入新的日期和时间库,你应该知道

Silently9527

java8

《Web应用安全权威指南》.pdf

田维常

年轻人的第一个MyBatis项目就要这样来学习,不走弯路

小Q

Java 学习 架构 面试 mybatis

ebay支付核心账务系统架构演进之路

贾奇 (Jacky)

支付系统 共识机制 系统稳定高可用 Event Sourcing 异地多活容灾

第八章作业

alpha

极客大学架构师训练营

架构师训练营第 1 期 - 第八周总结

Todd-Lee

极客大学架构师训练营

成为架构师 - 架构师训练营第 04周

陈永龙Vincent

训练营第四周作业

大脸猫

极客大学架构师训练营

腾讯强推Redis大神之路成长手册!原理+应用+集群+拓展+源码五篇齐飞

Java架构追梦

Java 数据库 redis 架构 面试

《身边的金钱心理学》

石云升

高交会:高新企业源中瑞在此出展区块链BAAS技术

13530558032

训练营第四周总结

大脸猫

极客大学架构师训练营

架构师训练营 第四周作业

文江

第四周作业

Jack

网络时间协议介绍以及服务器同步网络时间

MySQL从删库到跑路

ntp 时间同步

极客大学架构师训练营第一期第八周总结

睡不着摇一摇

架构师一期

【JAVA】TreeSet, LinkedHashSet和HashSet差异对比

笑春风

第八周总结

alpha

极客大学架构师训练营

【Mycat】Mycat核心开发者带你轻松掌握Mycat路由转发!!

冰河

分布式 微服务 分库分表 中间件 mycat

TikTok 的应用程序日志都记录了什么内容?_AI&大模型_Elliot Alderson_InfoQ精选文章