这里列举一下,就当是备份了。
首先看的是QARK,基于python和JRE1.6的一个工具,运行在OSX和*nix上,(值得留意的是,在最近的查找中,windows上的支持越来越少了),主要是漏洞检测工具。类似的Java代码漏洞检测工具不少,但不是我想要的。我想要的是一个容易理解和修改的污点检测工具,用来跟踪敏感数据的流向。
SPARTA/DARPA,一个大学项目,要得到源代码,然后依赖于人工添加注释的方法得到信息流,source(源),sink(流向)的数据。提供一个检查框架,依赖于半自动的方式检查APK里面的malware风险。由于是人工参与,所以成本控制方面并不理想。需要a.训练相关的人检查,b.需要开发者提供代码并有效注释。
Godeyes,都是检查一些已知的exception的处理保护,按统计数据,这些exception是导致Java/Android程序非正常退出的常见错误。有系统API不兼容、大图片解析出错、格式化数字异常等等。只能保障代码的健壮性,而非查找问题。
一些比较老旧的项目包括:PiOS、ComDroid、Woodpecker、RiskRanker等。
Google Bouncer,根据已有的malware进行行为分析,应用只要匹配到行为模式及报警,完全自动化的框架。
FlowDroid,基于soot、Heros的数据流向分析,相关衍生工具较齐备。
RiakRanker,网秦当年火的时候推出的,目前资料已经难找到,项目估计已经夭折了。
androwarn,最后的commit是2013年,根据权限/获取相关的信息这样模式来匹配malware的行为。针对通用的android (平板、手机)应用有价值,如果一个应用同时具备A、B、C的权限,可以定义为某种malware的高危应用。
另外,阅读了几篇中文的paper,之前SPARTA有篇英文paper不错。中文论文的思路如:
- 权限特征模式匹配,提醒可能的malware模式。同androwarn。
- 逆向工程进行特征提取。
- 利用Binder通信机制修改,以取得运行时的信息流向。
论文中提及的工具又如:DroidMat、Androguard、ScanDroid、AntimalDroid、XDroidMat。
CHEX,Android组件被劫持(hijack)的漏洞检测框架。
DroidChecker,也是控制流分析,查数据泄露点的工具。
一通看下来,还是基于soot的FlowDroid比较靠谱。后来看到tencent的安全实验室也是基于flowdroid做的优化,应当是合理的选择。
如果拿到的只是jar/class,就又涉及到反编译的问题。最最基础的一个做法,反编译后,检查代码里面需要root权限的代码,排除后在检查AndroidManifest的权限信息,则可以做到上面所提及的好几种权限模式匹配malware的方式了。
插入,Amandroid,也是数据流分析污点传染的。3年没维护了。
试了一下几种反编译,apk->classes的工具:ApkDissector,
dex->jar, dex2jar.bat,需要管理员权限运行,可用,
classes,反编译代码,jd_gui,带GUI界面的,但在反编译一些稍复杂的class时就失败了,代码里加一行注释说自己不行了……
关于专利可以看看这个:CN106446689A