有些研究虽然是面向全世界的,但是明显体现出了强烈的地域偏差。比如今天我们介绍的这篇Euro S&P 2025的SoK论文 Hardening Techniques in the Mobile Ecosystem — Are We There Yet? 就明显体现了欧洲研究人员和中国研究人员的差别——欧洲研究人员还在调查两大移动平台上APP的代码防护部署情况,中国研究人员可能已经把这些知识下放到小学了(无意比较高下,只是国情差异)。
在国内几乎所有的大厂APP开发人员都会被教育——连APP加固都不做,怎么上架。不晓得欧洲那边的黑产和开发人员的对抗水平如何,但从本文想要调查的技术点(如下图所示)来看,这些功能基本上属于只要集成了一个所谓的“安全SDK”就全部会去实施检测的特性,所以我们要来好好读一下论文,看看在全世界范围内,APP代码防护的整体特性是什么样子。
当然,我们在介绍本文的时候要顺便提一下本文一作的另一项工作——发表于MSR 2024的论文 Retrieval, and Matching of iOS and Android Apps for Cross-Platform Analyses。在2024年的这篇论文中,作者建立了一个iOS和Android APP的对应比较的数据集,这个工作也是我们编辑部非常喜欢的类型!
正是在2024年工作的基础上,本文得以进一步讨论APP在不同平台上的安全防护的状况(省去了建立数据集的麻烦)。本文的主要贡献之一是设计了一套APP分析框架,叫做HALY,这个框架可以分析Android和iOS APP,然后基于一些很基本的程序分析和特征提取技术,检查APP中是否存在相关的代码防护功能特征:
实际上检测各种代码防护措施(什么反调试、反hook之类)并不需要高深的分析,因为这些代码防护措施本身也是很启发式(heuristic)的实现,因此只需要充分总结已有的经验即可。论文的3.2和3.3章(特别是3.3章)详细介绍了这些技术细节,感兴趣的读者可以重点去阅读这部分。
话不多说,我们直接进入到实验分析环节,作者从他们之前的工作(MSR 2024)的数据集里面挑选了3322个APP(同时包括了Android和iOS版本),然后给出了如下的分析结果,里面很多细节很有意思,我们来解读一下。
首先,我们注意到表格里面有一些数据是用中括号括起来的,这表示HALY给出的分析结果稍微不是那么确定,例如HALY可能检测到一些和代码防护相关的API使用,但是这些API可能并不是用于检查APP自身的安全的,也可能是用在其他方面。然后这个表格里面颜色越深绿色,表示整个数据集使用了这项检测的比例越高。
针对代码篡改的检查(anti-tampering),由于HALY主要集中在检测APP是否使用了系统的attestation framewok(例如Android的SafetyNet)相关的API,而把反hook技术放在了另一个检测项,因此这个部分的比例看起来不算很高(Android这边,大部分结果都是不确定的,用中括号括起来)。
对于反hook(hooking detection),HALY这部分做得比较奇怪,它的静态分析主要是检查APP是否存在对特定的hook框架(Android上的Xposed和iOS上的Substrate)进行检测的特征代码,因此和动态分析相比,这个检测结果差别很大,比如它认为Android APP数据集上有1419个APP存在反hook,而动态分析却只确认了118个(但是又有2514个“疑似存在”反hook);iOS APP数据集这边也有一些差异(静态分析确认了399个,动态分析确认了524个,而且我们不知道这中间的overlap有多少)。这里面其实我们比较疑惑的是,如果真的存在反hook,那么实际上只要用动态方法去hook特定的函数测试下就差不多确认了(或者否定了),这部分用静态分析的意义何在?
实际上,HALY在检测debug和emulator的方法上也有类似的差异,静态分析会报告非常高比例的APP存在代码防护策略,但是动态分析报告的比例就很低:以emulator检测为例,动态分析甚至只认为数据集里面只有极少数比例的APP存在这种检测,这个结果放在iOS APP上还说得过去,可为什么Android APP里面只有这么少的比例就完全说不通(特别是HALY的静态分析检测结果报告了极高比例的存在性)。看了HALY的检测技术,我们会觉得这部分有点太弱了。。。实际上在后面的相关检测,我们发现了同样的问题,比如root/jailbreak检测,这个完全是可以用动态检测就确定的,但是HALY可能是动态分析做得比较差,这部分的检测结果依然出现了静态分析结果高,动态分析结果低的现象。
虽然我们认为HALY的检测结果不是那么令人信服,我们还是列出来了本文针对不同类别的APP的分析结果,当然这部分我们也不知道数据集里面的APP是来自什么国家(当然作者公开了数据集信息,大家有兴趣可以去检查下细节),可以看出来像金融类和购物类的APP很明显会更倾向于做代码安全防护,不过也许作者没有去看过我们大陆地区的APP(特别是银行类),不然肯定会归纳出这样一个结论——所有APP都全部使用了深度代码加固防护。。。
最后,作者把自己的工作和其他类似的工作进行了对比:
总体来说,我们认为这篇论文提出了有趣的研究问题,但是研究方法似乎比较不够可靠,因此我们给它的推荐指数是:
G.O.S.S.I.P 推荐指数:borderline
论文:https://download.vusec.net/papers/haly_eurosp25.pdf
(高质量)开源代码:https://github.com/utwente-scs/haly-hardening-analyzer
原文始发于微信公众号(安全研究GoSSIP):G.O.S.S.I.P 阅读推荐 2025-05-26 APP代码防护的安全 or 安全感?
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论