抖音接口安全参数X-Ladon、X-Argus计算过程分析

抖音APP在每个请求的header中都加入了X-LadonX-KhronosX-GorgonX-Argus四个安全参数,当url变动的时候,这几个参数也会跟着变化,下面是一个完整的请求报文:

:method: GET
:path: /aweme/v1/user/profile/other/?sec_user_id=MS4wLjABAAAAQBGJwjwLS2x7fKNOIk0ikEcrmrSu1MfuXdNRm7JoSAryDsM_fiikEAs4o8ctzxBK&address_book_access=2&from=0&source=UserProfileFragment_initUserData&card_partition=0&card_style=0&hit_ab_test=0&btn_in_value=0&publish_video_strategy_type=2&user_avatar_shrink=188_188&user_cover_shrink=750_422&land_to=1&iid=2942735279997454&device_id=67318071897&ac=wifi&channel=zb_xiaomi_1128&aid=1128&app_name=aweme&version_code=200500&version_name=20.5.0&device_platform=android&os=android&ssmix=a&device_type=2014813&device_brand=Xiaomi&language=zh&os_api=22&os_version=5.1.1&manifest_version_code=200501&resolution=720*1280&dpi=320&update_version_code=20509900&_rticket=1651454866531&package=com.ss.android.ugc.aweme&cpu_support64=false&host_abi=armeabi-v7a&ts=1651454865&appTheme=light&app_type=normal&need_personal_recommend=1&is_guest_mode=0&minor_status=0&is_android_pad=0&cdid=177db117-37c2-4319-b81f-3a8bcf3825ec
:authority: aweme.snssdk.com
:scheme: https
accept-encoding: gzip
x-tt-request-tag: t=1;n=0
x-tt-dt: AAAT465OCUWBHLIFLLWDRAOZV6SQ53DIOVGI3TGX5ZFQEL6TC7WIWSCGHY2MEMXY4MT6J22FWWTNDKTZ3JO3SZBWDYMRZV4SHEIBWWRKGFP7BXYXNO7G7W5RT7N4AKFI3ZS7PI4PHW76P22O6GGPUEI
activity_now_client: 1651454867284
x-ss-req-ticket: 1651454866544
x-vc-bdturing-sdk-version: 2.2.1.cn
user-agent: com.ss.android.ugc.aweme/200501 (Linux; U; Android 5.1.1; zh_CN; 2014813; Build/LMY47V;tt-ok/3.10.0.2)
x-ladon: 340dT49UwIjjQe/iiLzSCsgT5u7OKpZ8hmzIytgIXBnie2xU
x-khronos: 1651454866
x-gorgon: 0404d0830005661279376ecf02ad114e1fe8d38fdcfb09275465
x-argus: Jq/WICxuXFby2OK3eLzyE2nvwb2f606a5CyuwIHbh5g55Z2XBggeOsOsJgfKvVb6eokLlO1CfPV+omvnUQJoAv7zWud4GmI9BTIXHIv8YuUhZJaxHOess0RHrWWghNOC6oM6JINIIxRBKOLFAKhlgcrhKD5d+Eo3Z+N8Pqudi2mIRm0qoDtJO7kcQKyiuUf1Agiz8j3EL5/KRb/wT/eLgvlIrlFbXH/embznew29SHkQqg==
cookie: install_id=2942735279997454; ttreq=1$1e528b9a96c268faf79ce13810ec8bc10881a223; odin_tt=c88215f56a38886dd63493a571f3dec29c275e9f6bb26a941bcc6e432ff24910aca50152cd09ce6ede8d86a9e09463905d14739a44ae9e42a128c78626e95020b91742db4b8b0e3764bff2db1e0ad9da

通过关键词搜索,在反编译的代码中并没有发现这几个关键词,这增加了分析的难度,我们可以从网络库初始化开始来一步步的分析,寻找突破口,通过分析我们发现抖音最上层使用的是retrofit,我们先找到了创建retrofit的类com.bytedance.ies.ugc.aweme.network.RetrofitFactory:
抖音接口安全参数X-Ladon、X-Argus计算过程分析_第1张图片
retrofit使用的httpclient是可以配置的,olm.LIZJtrue的时候使用的是okhttp,在创建过程中我们也发现增加了很多的拦截器,一般header中的字段都是在拦截器中插入的,因此我们重点分析各个拦截器,最终发现安全参数是在X.Vsc类中计算和插入的:
抖音接口安全参数X-Ladon、X-Argus计算过程分析_第2张图片
在拦截器中调用NetworkParams.tryAddSecurityFactor来计算安全参数:
抖音接口安全参数X-Ladon、X-Argus计算过程分析_第3张图片
这个地方调用了sAddSecurityFactorProcessCallback.LIZ来计算,进一步往下分析,最终调用了ms.bd.c.k.a()
抖音接口安全参数X-Ladon、X-Argus计算过程分析_第4张图片
a(int i, int i2, long j, String str, Object obj);是一个native方法,核心的计算逻辑使用c语言实现,通过以上分析可以发现抖音在X-LadonX-KhronosX-GorgonX-Argus四个安全参数的计算时花费了大量的心思,关键词全部抹掉,核心逻辑采用c实现并做了ollvm 控制流平坦化混淆,大大增加了分析的难度,提高了APP的安全性,抖音APP的安全参数计算流程分析就这些,感兴趣的朋友可以交流。

你可能感兴趣的:(android)