今天要分享的是一篇港理工罗夏朴老师组在ISSTA 2022获得Distinguished Paper Award的文章《NCScope: Hardware-Assisted Analyzer for Native Code in Android Apps》。Native code被广泛用于安卓apps,本文针对native code提出了一种硬件辅助的分析方法。
Background
Native code的复杂性妨碍了静态分析,因此已有的工作大多采用动态方法分析,包括动态二进制插桩、模拟器、debug工具。然而这些方法通常无法获取完整的分析结果,且容易被反分析手段检测,同时可能引入巨大的开销。为此,作者提出了NCSope:一个ETM+eBPF的方法,来解决已有工作的缺点。
ETM是Arm平台的硬件追踪组件,可以以低开销记录程序运行的指令。同时eBPF (Extended Berkeley Packet Filter)是一个轻量级的kernel追踪技术,可以通过用户空间接口hook app。
Overview
NCSope包含两个模块:
-
一个基于ETM+eBPF的目标程序数据收集模块
-
一个实现了各种分析方法的分析模块
数据收集阶段
NCSope控制ETM的context ID和branch broadcast来过滤不相关的指令以及记录必需的分支指令。通过eBPF hook目标程序来收集系统函数调用的参数。
分析阶段
NCSope通过分析记录的函数调用,定义了10种发现程序自我保护方法的规则;
以及12种anti-analysis的规则。
为了检测内存崩坏相关的bug,NCSope将etm trace结合符号执行来进行root cause的分析,支持检测use-after-free和double-free的bugs。
实验
-
性能
NCSope在使用ETM时几乎没有性能开销,当开启eBPF记录时会引入1.175x的开销。
b. 行为分析
作者使用NCSope对500个Financial类的apps进行自我保护方法检测以及300个恶意apps进行anti-analysis检测,结果发现只有26.8%的apps在native code里实现了自我保护。并且至少有78.3%的恶意apps在native code里实现了anti-analysis方法。
原文始发于微信公众号(COMPASS Lab):【论文分享】NCScope: Hardware-Assisted Analyzer for Native Code in …