写点什么

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:361979

评论 1 条评论

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

本科学历,杭州工作4年,三个月学习入职阿里,薪资涨幅达到50%

比伯

Java 编程 程序员 架构 计算机

uni-app rtc插件集成指南及常见问题--iOS

anyRTC开发者

uni-app ios 音视频 WebRTC RTC

复习一周 成功拿到字节Offer 我也惊呆了

学Java关注我

Java 面试 程序人生 编程语言 计算机

001 ES suggest-IK 中文

小林-1025

ES es7

干了八年的阿里面试官,给大家分享我面试时最爱问的Java面试题

Java架构师迁哥

你“会”学算法吗?

IT蜗壳-Tango

封神总结!蚂蚁金服+滴滴+美团+拼多多+腾讯15万字Java面试题

Java 程序员 架构 面试

系统服务-技术专题-并发模型粗浅分析探讨

码界西柚

并发编程

000 ES suggest-英文

小林-1025

es7

智能创作平台全新升级,助力开启智能媒体新时代

百度大脑

人工智能 智能创作

独具特色的臻品音库,带来更优质的听觉体验

百度大脑

人工智能 独具特色

软件IT专业大学生学习情况调查

老猿Python

学习 大学生 软件IT专业 高校

一周信创舆情观察(4.19~4.25)

统小信uos

音频技术及行业的发展

Emotion

音频技术

Rust从0到1-集合-Vector

rust 集合 Collections vecotr

击破行业痛点,区块链赋能智慧物流高速发展

CECBC

区块链

头一次见到阿里大牛把spring boot讲的如此通俗易懂

Java 编程 程序员 架构

华为云云原生数据库GaussDB加速创新,企业核心数据上云信赖之选

华为云开发者联盟

数据库 云原生 华为云 GaussDB(for openGauss) 全密态安全

江西组织部干部人事综合管理平台建设,干部管理系统

【Java面试】30个 Java 集合面试必备的问题和答案 ​

Java架构师迁哥

区块链技术赋能不动产登记,让群众办事更便利

CECBC

区块链

CrossOver for Mac 怎么用?

懒得勤快

编曲混音必备法宝——FL三大效果器简介

奈奈的杂社

面试10家公司,终入阿里,感谢大佬的Java面试进阶解析笔记

Java架构师迁哥

阿里云 ARMS 3.0 重磅发布云拨测,Gartner APM 魔力象限产品解读

阿里巴巴中间件

阿里云 Gartner 可观测

领域驱动设计(DDD)在百度爱番番的实践

百度Geek说

中台 微服务 领域驱动设计DDD

站在车顶才能维权?中汽协基于区块链放“大招”!

CECBC

特斯拉

区块链赋能的Web 3.0时代将是一番怎样的景象?

CECBC

区块链

从字节跳动到火山引擎(一) | Redis 云原生实践

redis 字节跳动 Kubernetes 云原生 火山引擎

海南新场景!数字人民币在三亚完成首单离岛免税购物

CECBC

海口免税

行业洞察 | 风口上的互联网医疗,如何赢得下半场?

澳鹏Appen

人工智能 大数据 医疗方案 智能医疗 医疗AI

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