本文发表在网络安全研究国际学术论坛 (InForSec)

今年的 CCS 是有史以来最大规模,参会人数最多的一次。我有幸参加了这一届的 CCS,在“音乐之都”维也纳度过了六天,参加了四天的会议,在霍夫堡宫殿介绍我们的系统,在多瑙河畔享受秋日的凉爽。这几天的会议感触颇深,我将把这次参会的所见所闻按照日记的形式给记录下来,中间会穿插我对于科研的思考和未来的畅想。

October 24: Pre-Conference Workshops (SPSM)

Opening

CCS pre-conferecen workshop 一天有 7 个 workshops 同时并行,我主要关心 mobile security 方向,所以我参加了 SPSM (6th Annual ACM CCS Workshop on Security and Privacy in Smartphones and Mobile Devices)。

Session Chair Prof. Long Lu 首先介绍了今年 SPSM 的论文接收情况,一共有 31 篇投稿,来自 19 个不同的国家,总计 92 个 reviews,最后接收了 11 篇 regular paper 和 2 篇 short paper。之后,Long 介绍了 SPSM 这个 workshop 的历史情况:源于 2011 年两个不同的 proposals,然后不断的壮大。

最后 Prof. William Enck 上台宣布下一年的计划:2017 年,SPSM 将不再单独举办 workshop,并入 ACM WiSec。William 解释了取消 SPSM,并入 WiSec 的主要原因是 50% 的 SPSM 投稿都来自 WiSec recycle 的 paper,所以 SPSM 和 WiSec 的投稿有很大的重叠,为了减少审稿的工作量,索性并入 WiSec。其实 WiSec 这个 conference 主要的方向应该是 wireless security,但是随着后来 mobile (sysetm) security 的火热发展,WiSec 上面的好多 paper 也和 mobile security 相关了。我之前参加过 2015 年在纽约举办的 WiSec,审稿质量很高,论文也非常有趣,会议组织的也很好(主办方带我们去看歌剧去了),建议做 mobile security 的可以考虑一下投稿 WiSec。

Keynote

Keynote 请了 Trustonic 的 Jan-Erik Ekberg,做了 TrustZone 和 SGX 相关的介绍。其中,他详细介绍了新的 TrustZone-M 在 IoT 设备上的应用,因为 IoT 设备的操作系统简单,TEE 的重要性不言而喻。感兴趣的可以了解一下 TrustZone-M,未来 ARM-based 的 IoT 设备可能都能用上。

Technical Session: Studies and Analyses

在这 session 里有四篇 paper,分别和 Samsung KNOX、Android 时间同步服务、Android app 伪造用户活跃度,以及 iOS app 大规模的分析有关。下面,我简单介绍一下这四篇论文。

Secure Containers in Android: the Samsung KNOX Case Study

by Uri Kanonov (Tel Aviv University), Avishai Wool (Tel Aviv University)

三星 KNOX 是基于 TrustZone 的 app 隔离框架,只有在三星手机上才可以使用,因为并不是开源的框架,所以没有很多文章分析 KNOX 的整个结构框架。这篇文章分析了 KNOX 的框架,然后讨论了两种攻击方法。

KNOX 自上而下包括以下几层安全组件:

  • SEAndroid: KNOX 有自己的 SEAndroid policy 来隔离 apps
  • TIMA: TrustZone-based Integrity Measurement Architecture。TIMA 包括一个 PKM (Periodic Kernel Measurement) 组件,每各一段时间 PKM 就会检查 kernel 代码和数据的 integrity。它的详细的检查工作流程没有文档记录。另外一个组件是 RKP (Real-time Kernel Protection)。RKP 可以保护运行时的 page table 只能在 TrustZone 的 secure world 修改,在 normal world 只读。
  • TrustZone
  • Secure Boot: 启动时会在 TrustZone 中验证代码的 integrity,确保启动的代码是安全可信的

作者通过使用 IDA Pro 反编译 native libraries,使用 Universal Deodexer, dex2jar, jd-gui 反编译 Android Java 代码,并且使用 hooking 方式对 KNOX 进行动态分析。当然,想要动态分析 KNOX 需要先 root,本文使用了 CVE-2013-6282 SafeRoot 获得 root 权限。下面是作者得出的 KNOX 框架:

blog/ccs-2016-diary/knox.png

之后,本文分析了在 KNOX 1.0 上的一些攻击:

  • 不需要 root 环境
    • VPN Man-in-the-Middle: CVE-2016-1920
    • Clipboard: CVE-2016-3996
    • ADB
    • 结论是:1. 需要限制 secure container 的攻击面,比如说不要把 clipboardEx 服务暴露给非 KNOX 应用。2. secure container 和 insecure container 的共享资源非常容易泄漏信息。上面三个例子感兴趣的可以详细阅读这篇论文。
  • 需要 Root 的攻击
    • 读取 KNOX 数据
    • eCryptFs Key: CVE-2016-1919
    • Keyboard 监听:CVE-2015-4640
    • 隐藏 KNOX 的保修 bit 数据
    • 结论是:secure container 需要在 TrustZone 里检测是否已经被 root。

本文还分析了 KNOX 2.0 之后的变化。

总的来说这篇文章讨论了三星 KNOX 的框架,以及在这些安全保护下能做的攻击,建议做 TrustZone 的人了解一下现状,在设计实现细节中多注意。

White Rabbit in Mobile: Effect of Unsecured Clock Source in Smartphones

Shinjo Park (TU Berlin/Telekom Innovation Labs), Altaf Shaik (TU Berlin/Telekom Innovation Labs), Ravishankar Borgaonkar (Oxford University), Jean-Pierre Seifert (TU Berlin/Telekom Innovation Labs)

本文介绍了移动系统的时间同步系统,文章名字 White Rabbit 取自爱丽丝漫游记里之一白色兔子不知道时间(我也不知道我为啥对这个印象深刻)。

现代的移动操作系统一般通过以下三种方式同步系统时间:

  • NITZ: Network Identity and Time Zone,一般是手机网络提供(2G,3G和4G)。
  • NTP: Network Time Protocol,通过 WiFi 网络链接 NTP 服务器获取当前时间。
  • GNSS: Global Navigation Stellite System,通过 GPS 获取。

前两种方式一般是操作系统自动获取的,GNSS 是手动连接 GPS 获取的。

blog/ccs-2016-diary/white-rabbit.png

这篇文章主要研究了 NITZ 和 NTP 两种方式,在不同的操作系统下,不同的网络制式下,以及不同的手机上的不同现象。比如说某些移动运营商在 2G/3G 里提供 NITZ,但在 4G 里却没有。不同手机对于 NTP 和 NITZ 两种方式的优先级也不同。这些不同就引发了一些问题,作者通过伪造时间,触发了系统的一些 bug。

之前 iOS 把时间调到 UNIX time 之前就无法开机的问题就能通过 NTP 伪造时间。我猜作者看到了这个新闻,想到分析一下当前的时间同步系统,或许会有有趣的结论。总的来说,这边文章分析的很全面,还把各个国家的运营商不同制式尝试了一下,工作量还是挺大的。

What You See Isn't Always What You Get: A Measurement Study of Usage Fraud on Android Apps

Wei Liu (Tsinghua University), Yueqian Zhang (Tsinghua University), Zhou Li (ACM Member), Haixin Duan (Tsinghua University)

这篇文章针对中国市场上 app 伪造活跃度做的 measurement study。起因是荔枝FM为了伪造用户活跃度,会在后台开启多个服务,使用户数据统计工具重复统计用户的交互次数,从而让荔枝FM的用户看起来很多。目的嘛,可能是为了以此获得更多的资本投资。

通过尝试欺骗现有的几个流行的分析系统,作者得出了以下结论:

blog/ccs-2016-diary/usage-fraud.png

一些分析系统只使用简单的 device ID 作为统计用户的唯一标示,稍微复杂点的会使用简单组合变换,让伪造数据变复杂。

但是无论怎么设计 in-device 的统计系统,都无法避免伪造数据。我认为服务商只能通过数据分析,检测异常的数据增长才能发现这种行为,也算是 anomaly detection system 的一种。会议上 session chair 问为什么这种 usage fraud (只)在中国发生,别的国家没有。这是一个非常有趣的问题,我觉得原因可能是中国市场的同质化太严重,投资环境、舆论环境更看重的是用户活跃度(DAU)这一个数字。这个问题不禁让我想到,是不是还有很多中国(发展中国家)独有的安全现象、安全问题可以来做一些研究呢?

CRiOS: Toward Large-Scale iOS Application Analysis

本篇文章下载了 43,404 个 iOS 应用,在这些应用上做了一个大规模的动态分析,主要结论是很多应用的证书快要到期或者已经到期了。本文还提出了一种检测第三方 library 的方法,因为 Android 上面类似的方法已经有很多了,我就不详细介绍了,感兴趣的可以看一下论文。

Technical Session: Privacy

下午的 Privacy session 有四篇 paper,两篇是讲 permission 分析的,一篇讲视频隐私,另外一篇讲电话号码的问题。我挑有意思的重点讲一下,其他的就简单介绍一下思路。

SecuRank: Starving Permission-Hungry Apps Using Contextual Permission Analysis

sVincent Taylor (University of Oxford), Ivan Martinovic (University of Oxford)

现在市场上的应用相同功能的非常多,不同的应用使用的 permission 也不尽相同,SecuRank 可以推荐相似功能的,并且不会需要那么多 permission 的 app。这个系统提取应用的描述句子,用 NLP 的方法判断相似度,然后使用 permission prevalence metric 来定义稀有的可能是敏感的 permission。通过这两种方法,就可以给用户推荐相对安全,功能类似的 app 了。

Securing Recognizers for Rich Video Applications

Christopher Thompson (University of California, Berkeley), David Wagner (University of California, Berkeley)

这篇文章讨论的是如何保护视频隐私的问题。解决方法就是在视频送给应用的时候,加入一个预处理,只提供必要的信息,尽量减少其他不相关的信息泄漏。文章用 privacy budget 表示一个视频包含的信息量。下面这个例子就是处理后的视频,几乎无法分辨背景信息,但是能识别出来有个人在里面。

blog/ccs-2016-diary/securing-recognizers.png

Hannah Quay-De La Vallee (Brown University), Paige Selby (Brown University), Shriram Krishnamurthi (Brown University)

这篇文章研究了如何在应用市场中的显示 app 的 permission/privacy 情况,作者用 Amazon Mechanical Turk 测试不同用户对于不同形式的 privacy 级别显示的理解。比如说下面几个例子,不同的人看到的信息是不一样的。

blog/ccs-2016-diary/on-a-permission.png

Exploiting Phone Numbers and Cross-Application Features in Targeted Mobile Attacks

Srishti Gupta (Indraprastha Institute of Information Technology, Delhi), Payas Gupta (School of Information Systems, Singapore Management University), Mustaque Ahamad (Georgia Institute of Technology & New York University Abu Dhabi), Ponnurangam Kumaraguru (IIITD)

这篇文章思路很简单,现在很多应用都会把手机号码当作登陆,或者用户的ID。作者随机生成手机号码,通过 Truecaller 和其他一些社交网络应用的数据,就可以发起有目标的攻击。简单来说更像是一个自动的“社工”框架,能快速的找到手机号对应的人。

blog/ccs-2016-diary/exploiting-phone-numbers.png

Technical Session: Attacks and Defenses

Hardened Setup of Personalized Security Indicators to Counter Phishing Attacks in Mobile Banking

Claudio Marforio (ETH Zurich), Ramya Masti (ETH Zurich), Claudio Soriente (Telefonica), Kari Kostiainen (ETH Zurich), Srdjan Capkun (ETH Zurich)

这篇 paper 讲的是如何用 personlized security indicator 来区分 phishing app 和官方的 app。这个 personlized seurity indicator 就是一个 PIN,银行通过邮寄的方式寄到用户手里面。想要避免 phising app,需要使用手机的另外一个 app: broker,输入 PIN 才能进入真正的官方银行 app。可能是之前没有人研究过这个流程,所以这篇文章又重新的设计了流程,并且 evaluate 了这种 protocol 的 performance。不知道市面上有银行在使用这种方式没有,但是实体的 key,U盾这种方式的认证现在还是挺常见的。不知道银行有没有这个动力,避免 phising malware 盗取用户信息。

blog/ccs-2016-diary/hardened-setup.png

Picasso: Lightweight Device Class Fingerprinting for Web Clients

Elie Bursztein (Google), Artem Malyshev (Google), Tadek Pietraszek (Google), Kurt Thomas (Google)

Picasso 根据 HTML5 的 graphical API 在 canvase 上面生成图片,因为不同平台的浏览器会生成的不可预测的 noise,这些 noise 就可以用来区分浏览器。Picasso 的工作流程是这样的,首先服务器会发送一个 challenge 给客户端,也就是浏览器。浏览器会根据 challenge 渲染出相应的图片返回给服务器。最后,服务器根据图片的不同来判断是由那种浏览器生成的,区分出是 iOS 的 Safari 或是 Linux 上的 PhantomJS。

Picasso 可以应用在统计访问来源,识别爬虫,判断运行环境等方面。

blog/ccs-2016-diary/picasso.png

下面这个例子就是在不同浏览器下生成相同的图片,图片看起来是一样的,但是像素和像素对比一下就能发现不同:

blog/ccs-2016-diary/picasso-2.png

Detecting Misuse of Google Cloud Messaging in Android Badware

Mansour Ahmadi (University of Cagliari), Battista Biggio (University of Cagliari), Steven Arzt (Technische Universitat Darmstadt), Davide Ariu (University of Cagliari), Giorgio Giacinto (University of Cagliari)

这篇文章提出了检测使用 GCM (Google Cloud Messaging) 服务的 Android Badware 的方法,简单来说就是使用静态检测的方法,发现 GCM 的 control flow,提取特征,然后使用 SVM, decision tree 的 classification 方法来做分类,从而检测出相似的调用。这篇文章思路和方法比较简单,我就不详细分析了。

[Short Paper] On the CCA (in)security of MTProto

Jakob Jakobsen (Aarhus University), Claudio Orlandi (Aarhus University)

本文分析了 Telegram 的加密方式,发现 Telegram 的 protocal MTProto 不是 IND-CCA (indistinguishability under chosen-ciphertext attack) secure。证明了在某些情况下可以把任意密文替换成替换为另外一个密文,使得他们解密后的原文是一样的。作者给的 take-away message 是:那些已经证明过的安全加密方法要比自己发明的 (home-brewed) 加密方法更安全

[Short Paper] Breaking TETRA Location Privacy and Network Availability

Martin Pfeiffer (Secure Mobile Networking Lab, TU Darmstadt), Jan-Pascal Kwiotek (Secure Mobile Networking Lab, TU Darmstadt), Jiska Classen (Secure Mobile Networking Lab, TU Darmstadt), Robin Klose (Secure Mobile Networking Lab, TU Darmstadt), Matthias Hollick (Secure Mobile Networking Lab, TU Darmstadt)

这篇文章主要讲了欧洲使用的 TETRA (Terrestrial Trunked Radio) 通信协议。作者实现了一个 TETRA 攻击设备,用来 fuzz 和 jam 广泛使用的 TETRA 设备。

Other References