Following Devil's Footprints: Cross-Platform Analysis of Potentially Harmful Libraries on Android and iOS

背景:

这篇论文发表在2016年的IEEE Symposium on Security & Privacy会议上,该会议是信息安全界最顶级的会议。该文章使用庞大的样本数据量进行测试,又使用大量人工分析,对第三方库进行了详尽的分析。但个人认为其中还有一些可以改进的地方。

出处:

the 36th IEEE Symposium on Security and Privacy

作者:

Kai Chen, Xueqiang Wang, Yi Chen, Peng Wan2, Yeonjoon Lee, XiaoFeng WangBin Ma, Aohui Wang, Yingjun Zhang, Wei Zou


概述:

该文章主要针对于android及iOS应用程序中的第三方库中的潜在问题进行研究。 通过对大量android平台的app的第三方库进行深入的分析(实用工具,研究行为等)并通过android与iOS中第三方库的某些关系,在iOS应用中找到对应的库,并用以判断是否有潜在危害。

研究意义:

通过对合法的第三方库进行重打包用以传播恶意软件的行为广泛存在。目前针对这一违法行为的应对手段比较少。在iOS系统中没有公开的用来检测该种行为的系统(anti-virus System in android)。并且由于iOS文件本身的特性,对其使用的lib进行分析非常困难。

理论基础:

有很多跨平台的第三方库,比如iOS的库存在其android版本,通过对这些库在android环境下的行为分析,可以对其iOS版本有进一步的认识(据观察,大部分的有害行为在两种环境下都存在)。

研究难点:

1)PhaLib (potential-harmful app library)的分析

2)跨平台的研究(把两个环境下的库联系起来)

主要成果:

通过对大量的(unprecedented?)样本(android,iOS平台)进行分析,对Phalib有了系统的研究。对Phaselib有了新的理解(iOS中新的可疑行为,如何潜伏等等)。


方法模型:

主流程图:


主要模块:

1.提取android库文件并进行分类

2.对android库进行潜在危害的检测

3.关联android Phalib 与其在iOS中的对应lib

4.对关联的lib对儿进行可疑行为分析


具体步骤及问题解决

(一)android平台上的库分析

1.包分组(group)

将大量的app反编译,获得android文件包(package),通过名称进行分类。所有同组的包都有大段的相同代码(使用LibFinder工具对反编译的app进行自动化分析)。

此外,该文使用Root Zone Database对分类的包进行检验(是否正确分类)。之后的步骤会对group中的包进行聚类。

2.寻找android库

使用 PSD算法(package similarity degree)对group中的包进行聚类。PSD在包层面进行分析,公式如下:

PSD(p1, p2) = n(p1 ∩ p2)/n(p1 ∪ p2)  (method交集/method并集)

LibFinder在方法(method)层面进行分析:通过计算方法的几何中心(矩心)距离来比较方法的相似度。

3.检测Phalib

使用VirusTotal工具进行检测。

(二)iOS平台的库分析

主要思路:将在android中已确认的Phalib在iOS平台上找映射。

1.寻找跨平台的不变量(invariants)

通过不同的输入进行多次试验,记录程序中变化的值用以推导出不变量。本文关注一些特殊的程序点 program point(program entry, program exit and loop header. )并以class为单位进行分析。

该文首先在android和iOS的官方网站上下载20个lib,对这20个lib中的class进行手动配对(根据各class实现的功能)并根据candidate invariants 对class对中的程序点进行检查,手工建立字典用来对跨平台的指令及API进行转译(不是很懂这一步)。该文章还尝试使用构建控制流图的方式来寻找一致的程序点(class construction, class destruction, view appear, view disappear, or methods with sensitive events )。

通过实验发现一些特定的字符串(或子串)在两个平台中均有出现,以下是文中给出的共有字符串:

通过实验证明,当匹配字符串(length>=5,且来自不同程序点)多于8个时,可判定两个class相匹配,当有三个以上class匹配时,可判断两个library匹配。

2.寻找其他的lib成员

以相互配对的library中的class(anchor)只是library中的一部分成员(member),所以需要更多的类成员用以分析iOS lib的行为。由于iOS中method是混杂在一起的,想要寻找出lib比较困难,所以本文通过静态分析类之间的调用关系来寻找lib。

文中使用3种类关系,如下所示:

A →Call B:a method in Class A calls a method in Class B

A →Inherit B :A is inherited from B

A →Ref B :an object of B is used inside A

文中定义了两种规则来发现新的类成员:

1)对于任何class A,当初向上述关系且class B不是框架类时,B与A在同一lib中

2)对于anchor class,class A、B有上述关系且在其对应平台中有A′ 和B′ 有相同关系,并且B和B′ 有不少于k个共有字符串(上一节中的),则A和B在同一lib中。

3.潜在危害行为分析

主要思路:程序的行为可通过API序列来描述。

存在的问题:iOS与android中的API序列存在不一致,以adwo为例,如下图:

解决方案:将API进行分类,用其分类进行表示,并将连续相同的分类进行压缩。

在android平台中,通过class使用的权限(permission)对其进行分类,分类链接如下:

https://bdsec.soic.indiana.edu:8080

在iOS平台中,通过对Class语义的人工分析进行分类。文中将API分成19类。

该文通过从lib中的独立方法(没被任何其他类调用,entry points, event handler等)开始,进行标准静态跨平台分析 (参考.E. M. Myers, “A precise inter-procedural data flow algorithm,” in  Proceedings of the 8th ACM SIGPLAN-SIGACT symposium on Principles  of programming languages. ACM, 1981, pp. 219–230. ),建立 invariant-API-sequence(IAC)。

通过比较IAC(相似度大于80%)来判断lib在两个平台中是否有相同的行为。


创新点:

通过android-iOS共有库的分析,对iOS的lib库进行分析。

在iOS平台上寻找lib成员(通过类之间的关系)。

根据语义对API进行分类。


总结:

优点:使用大量的样本进行测试和库分析,大量的人工分析。

不足:大量的人工分析。只能检测iOS中与android相匹配的库。

在实验过程中,只对android中的Phalib进行其iOS平台的检测,但是同样存在一些lib在android端没问题但在iOS中有问题的情况。


可能这中间有一些理解不对的地方,欢迎同样读过该论文的朋友来讨论。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 156,265评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,274评论 1 288
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,087评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,479评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,782评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,218评论 1 207
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,594评论 2 309
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,316评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,955评论 1 237
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,274评论 2 240
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,803评论 1 255
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,177评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,732评论 3 229
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,953评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,687评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,263评论 2 267
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,189评论 2 258

推荐阅读更多精彩内容