Group of Software Security In Progress

GoSSIP @ LoCCS.Shanghai Jiao Tong University

Don’t Throw Me Away: Threats Caused by the Abandoned Internet Resources Used by Android Apps

单位:早稻田大学

作者:Elkana Pariwono, Daiki Chiba, Mitsuaki Akiyama, and Tatsuya Mori

单位:早稻田大学

出处:AsiaCCS’18

资料:Paper

1 INTRODUCTION

现代APP为了提供更丰富的额外功能大多会采用一些网络服务,例如语音识别、天气预报等。这些直接由服务端提供的服务使开发者能偶较为容易地在移动端实现这些功能。但是这些支持移动应用的服务因为存在于服务端,当程序被发布之后,开发人员可能会因为维护成本渐渐地不再维护这些网络资源。本文中,作者对Android移动应用程序的开发者们进行调查,发现78%的开发人员没有定期更新发布的应用程序。还有66%的开发人员不是全职开发人员。因此这些应用程序使用的互联网资源将缺乏维护。而且这些资源的所有权会带来变更:域名或IP信息可能会被重新注册。本文中,作者进行了大规模的调查,通过对110万个应用的分析,作者发现尽管很多应用已经很久没有更新而且网络资源不再可用,但是依旧有很多来自移动用户的流量。本文中作者做了如下工作:

  • 分析了移动应用中被废弃的网络资源可能存在安全问题。
  • 通过对100万+的应用的分析,作者发现7331个应用中有3628个不再可使用的网络资源。其中有15个APP的安装次数超过一百万。
  • 不仅仅是Android平台,很多应用同时有iOS版本,它们依旧存在这些问题。
  • 作者讨论了对于由于网络服务归属权的变更带来的问题的解决方案。

2 BACKGROUND

2.1 Internet-assisted Apps

作者把这些APP所使用的网络资源分为以下三类,如图二:

1530687989803

第一类是APP的开发者在APP所使用的网络资源属于开发者/产品公司所有。

第二类是APP使用的第三方SDK中的网络资源属于第三方SDK开发者所有,例如使用FB的SDK中的FB的网络资源。

最后一类是APP在所使用的网络资源属于公共网络资源,不属于APP开发者所有,例如公共的天气信息(weather.com)。

特别地,很多APP内置的网络服务不仅仅包块HTTP/HTTPS发起的API请求,还包括来自网页内容的WebView。

2.2 Hijack-able Internet Resource Used by Mobile App

作者通过对APP中的域名信息的分析,总结了一下几种攻击者可能对失效域名或者IP的攻击面,如图三:

1530688331520

Expired Domain

当一个域名过期之后,所有者没有renew,攻击者可以直接重新注册。

Parked Domain

当一个域名过去之后,可能会被当成停放域名(Parked Domain)。所谓的停放域名就是域名供应商会把过期的域名拿来指向一些广告页面。这个时候攻击者是可以通过正常手段购买域名的。

Dangling Records (Dare)

悬空域名是指域名依旧的归属权依旧属于原有所有者,但是域名指向的IP地址已经不再可用了。例如购买域名指向租用的云服务器,当服务器没有续费被释放的时候,域名依旧没过期的情况,这个时候云服务器的IP会被释放到供应商的IP地址池中。攻击者可以通过一些途径获得此IP试用权。

Hardcoded IP Addresses in Cloud

最后一类是直接硬编码到语句中的情况,类似如上的情况,如列一所示:

1530689449881

2.3 Widespread Impact

对于上述第一种情况,网络资源属于开发者所有,当资源失效被攻击者盗用的场景。最坏的情况则是攻击者拥有此域名以及此域名下的所有二级域名。

对于第三方Lib的资源,如果攻击者通过重新注册域名或获取服务器IP地址来获取资源所有权,则攻击者可以控制使用此库使用此域名的所有应用程序。

对于第三方资源(weather.com)来说,当服务的所有者放弃该服务时很可能不知道自己的服务被移动应用开发者所使用,这种情况比较常见。但是第三方服务和第三方lib并不太一样,所有者对于某个服务的依赖性更低。

3 METHODOLOGY

1530690002289

3.1 Dataset

作者的应用集是来自2014年Google Play的110万个免费应用。因为时间有点久远,所以作者对应用的可用性和合理性做了简单的筛选和分析。作者通过比较样本中应用的版本号和发布时间与当时Google Play商店中的版本号和发布时间,对应用集进行判断。其中有81万多的应用依旧可用(available),58万个应用需要网络权限。版本比对分析发现18万个应用没有包含版本信息,29万个应用版本信息不同。7595个应用更新了应用,但是没有更新版本信息。10万多个应用版本和更新时间都相同,就是说在此期间再也没有更新过。

3.2 Extracting Abandoned Internet Resource

对于反汇编之后的应用,作者按照#2中的分类对网络资源进行提取

  • 过期域名使用查询WHOIS信息来筛选
  • 停放域名使用爬虫去判断页面是否是有广告商信息
  • 悬空记录使用在Cloud Dare上查询域名所指向IP地址的方式去判断
  • 硬编码也是采用如上方式

3.3 Classifying The Resources

对于失效资源进行提取之后,作者按照private service, third-party librarythird-party service的类别进行归分类。

首先对这个域名和APK的官方包名进行比对,然后判断域名的所属是不是和应用包含的开发者和公司信息符合。字符串相似度使用Levenshtein Distance进行计算。

如果一个域名出现在多个APK中,而这些APK的基础包名不相同,那么判断为第三方服务。作者还会通过URL中的页面内内容去辅助判断服务类型。如果依旧无法判断,那么作者使用手工的方式去判断,对于已经失效的页面,使用archive.org的记录来判断。

4 MEASUREMENT RESULTS

4.1 Abandoned Internet Resource in the Wild

表一是作者对应用分析之后的结果:

1530692375152

作者解释说7104个APP中有3628个可被劫持的网络资源,是因为有许多APK在代码中使用了不止一种网络资源。原本意思应该是一个网络资源可能被多种APK使用,这样的解释更符合真实数据,当然APK中肯定也有使用了多个网络资源的情况。

4.2 Characteristic of the Abandoned Internet Resources

根据3.3部分的分类,作者得到如下的表格:

530693269100

表四是作者选取的Top10的使用最多的网络资源:

1530694062238

Life Span of the Abandoned APKs

图八表示这些代码中包含废弃网络资源的APK在Google Play上存在的时间。CDF数值是基于APK上次更新的时间,50%的APK超过三年没有更

Permissions of Abandoned APKs

作者还注意到,有很多包含废弃网络资源的应用申请了比较危险的权限。如表五所示:

1530694321460

## 4.3 Impact of Hijacking the Resource

图九表示了这些APP的装机量,有部分的安装量超过一百万。

1530694405790

作者还把这些APP所使用到的目前处于parked状态的域名的价格列了出来:

1530694540517

5 THREAT CASE STUDIES

5.1 Privacy Leak

这是最容易发生的攻击场景,攻击者获得网络资源所有权之后,有些APP会发送用户的隐私互数据(定位,IMEI, 设备ID)到服务端,这样就造成了用户隐私泄露。

 5.2 Scamming and Phishing

因为有些APP不仅仅会使用第三方API,有些还会调用服务的WebView,作者针对一个最后更新与2012年但是依旧有93个Android用户和405个iOS用户的APP设计了一次攻击,购买了一个已经过期的域名然后指向部署钓鱼页面服务所在的IP。发现有30个用户会点击钓鱼页面,全部都是Android用户。

1530701384041

5.3 Monetizing

因为只有流量比较大的域名在过期后,才会被供应商放置于parked状态。攻击者可以在购买之后把这些域名指向广告更多的页面以牟利。

5.4 Injecting Malware Distribution URL

如果恶意软件作者拥有了这些域名,并且在这些域名上部署恶意软件下载链接诱导用户去点击,那么这种情况同样危险。这种情况对于悬挂域名更常见。

6 Limitations

Static Analysis:有很多网络资源不一定是在运行时的时候会被执行调用;对于加了混淆的程序无解;有些URL是经过字符串动态拼接之后在使用的。

Tracking Hijacked Resources:没有统计究竟有多少资源会被劫持,有多少资源已经改变的归属权。

Dataset:样本集仅仅限于免费的APP,付费的应用并没有考虑。