【NDSS 2021】On the Insecurity of SMS One-Time Password Messages against Local Attackers in Modern Mobile Devices 论文笔记

作者:Zeyu Lei1, Yuhong Nan1, Yanick Fratantonios2, Antonio Bianchi1

单位:1Purdue University(普渡大学), 2EURECOM(欧洲通信学院) & Cisco Talos(思科安全智能研究与分析团队)

会议:NDSS 2021

论文链接:On the Insecurity of SMS One-Time Password Messages against Local Attackers in Modern Mobile Devices

Abstract

包含一次性口令(One-Time Passwords,OTP)的SMS消息被广泛应用于身份验证中。

本文研究了“local attacks”条件下,攻击者的恶意应用程序,如何窃取到受害者设备上收到的OTP。

作者总结了Android和iOS上,应用程序访问收到的SMS 消息中的OTP的三类途径;并分别分析了恶意程序通过各类途径,非法获取OTP的具体方式。

1. SMS OTP 身份验证机制

SMS(Short Message Service):短信息服务,允许用户在移动网络上,通过手机等移动设备发送文本型短信。

OTP(One-Time Password):一次性口令。

基本验证流程:

2. 应用程序读取SMS中OTP的途径

作者总结了Android和iOS上,应用程序获取SMS消息中OTP三类不同途径

划分依据:应用程序访问OTP过程中,所需要的用户交互类型

2.1 Access with User Interactions

第一类途径是methods requiring per-message user interaction,每一次OTP的获取,都需要用户的交互操作才能完成。

  • “ask-to-copy” 机制:Android和iOS中均有

  • “One-Tap SMS” 机制:Android中特有

2.2 Access by Requesting SMS Permissions

第二类途径是methods requiring SMS-related permissions,需要用户手动为该应用分配SMS相关的权限,主要包括READ_SMS权限和RECEIVE_SMS权限。

操作系统和Google Play应用市场对相关权限均有政策限制。

2.3 Fully-automated Access via Modern SMS APIs

第三类途径是fully-automated methods that do not require user interaction,该途径完全自动化,无需用户的参与,对用户透明。

这种途径主要存在于Android中,因为Android引入了三种不同的 “Modern SMS API”,以支持完全自动化的SMS OTP身份验证方式。这三种API分别是SMS RetrieverSMS TokenSMS Token+

2.3.1 SMS Retriever API

  • 使用条件:

    • 需要Google Play服务可用
      SMS Retriever API仅在具有10.2版本和更高版本Play服务的Android设备上可用
  • 认证流程: 服务器端计算哈希码

    其中哈希码的计算方法如下:

    • concat :字符串拼接
    • truncate(string, X) :截取string的前X位作为返回值

2.3.2 SMS Token API

  • 使用条件:

    • 2017年8月Google开始提供,具有Android 8或更高版本的设备均可用
  • 认证流程: Android操作系统生成Token

    • Token:每次createAppSpecificSmsToken()方法被调用时, SMS Token API都会生成一个随机Token(一小段文本),例如:Eqhn SOxhzw

2.3.3 SMS Token+ API

  • 使用条件:

    • Android 10 引入
  • 认证流程:
    按照官方文档的说法,SMS Token+与SMS Token基本相同,区别主要是允许开发人员自定义SMS前缀过滤列表
    实际的实现中:Android操作系统生成的Token,始终等于调用该API的应用程序的哈希码,而不是随机值

2.3.4 三个API的其他主要特点

3. 恶意应用借助这三类途径,窃取到用户OTP的方法

3.1 攻击条件

  • 攻击者能控制一个安装在受害者设备上的恶意应用
  • 该恶意应用能通过网络发送数据

3.2 针对methods requiring per-message user interaction

针对第一类途径,作者提出攻击者可以通过欺骗用户获取OTP。

  1. 恶意应用向用户询问其电话号码
  2. 恶意应用联系合法应用的后端服务器,以受害者的电话号码作为号码,远程请求受害者合法帐户的SMS OTP消息。
  3. 受害者将收到包含合法帐户OTP的SMS消息。
  4. 恶意应用会想方设法欺骗用户,让用户将收到的OTP粘贴或输入到恶意应用的界面中。

针对该攻击方案,作者使用名为Marvel App 的在线工具,进行了用户实验。实验界面如下图所示。
一旦被实验者将OTP插入恶意应用中,便认为该OTP已被盗用。实验结果如下所示。

3.3 针对methods requiring SMS-related permissions

针对第二种途径,作者提出攻击者可以绕过操作系统限制(Bypassing OS-level Restrictions)和绕过应用市场限制(Bypassing Market-level Restrictions),来实现攻击。

3.3.1 绕过操作系统限制

关于绕过操作系统限制,作者认为用户普遍缺乏对SMS相关权限的了解,并不了解允许应用读取SMS消息的后果,并进行了用户问卷调查,问卷界面及调查结果如下所示。

3.3.2 绕过应用市场限制

关于绕过应用市场限制,作者提出了两个攻击点。

其一是,当应用程序的被首次上传到应用市场(文中为Google Play)时,对SMS相关权限的审查较为严格;但当应用的更新版本被上传时,相关审查存在缺失。作者认为这可能是由于版本更新时,Google Play没有进行人工筛查。

其二是,可以通过获取名为BIND_NOTIFICATION_LISTENER_SERVICE的用于读取通知的权限。所有收到的SMS消息都会触发包含其内容的通知。 因此,具有读取通知权限的应用程序可以读取包含OTP的SMS消息。

3.4 针对fully-automated methods that do not require user interaction

3.4.1 针对SMS Retriever API

针对SMS Retriever API,攻击主要利用开发人员的API误用——很多开发人员将哈希值的计算过程放在了应用程序端进行,再由应用程序端发送给服务器端,而没有按照安全标准,将该计算过程放在服务器端进行。

3.4.2 针对SMS Token API

3.4.3 针对SMS Token+ API

针对SMS Token+ API的攻击过程,与针对SMS Token API 的攻击过程相类似。

但是,作者通过逆向工程分析发现,实际实现中,SMS Token+ 机制下,Android操作系统生成的Token,始终等于调用该API的应用程序的哈希码,而不是随机值

(因此正确的用法是,忽略API调用的返回值,直接使用哈希码)

3.4.4 Modern API 的其他安全问题

  • Modern APIs’ Inbox Management
    SMS Retriever、SMS Token、SMS Token+旨在仅将SMS OTP传递给特定的应用程序。因此,使用这些API收到的SMS消息不应存储在SMS Inbox中。 否则,能够获得读SMS权限的恶意应用就可以读取它们并获得OTP。

    • SMS Retriever:始终将收到的SMS消息存储在Inbox中。
    • SMS Token、SMS Token+:只有当设备上存在与SMS消息的Token相对应的app时,消息才不会被放入Inbox。
  • Cryptographic Weaknesses
    SMS Retriever 中哈希码的计算方法如下:
    这将哈希算法的强度降低到66 bits。
    按照,NIST标准,SHA256返回值,不应被截断到少于224 bits。

4. 针对Modern API的实验结果

4.1 静态分析筛选

  • 针对SMS Token和SMS Token+:

    • 本质上就不安全
    • 检测createAppSpecificToken()和create…WithPackageInfo()方法的调用情况
  • 针对SMS Retriever:

    • 检测应用程序中,是否有计算哈希码+发送哈希码到服务器的过程:

      • 通过观察哈希码生成相关method的调用情况

      • 通过观察网络相关method的调用情况

    • 检测应用程序中,是否有访问本地硬编码哈希码+发送哈希码到服务器的过程

      • 作者自行计算该应用的哈希码,并进行字符串匹配
      • 通过观察网络相关method的调用情况

4.2 动态分析验证

作者手动与该应用的服务器进行交互,触发其身份验证过程。

4.3 实验结果

数据集:
2019年12月至2020年2月之间,从Google Play中获取到的140,586个应用程序

  • Suspicious:通过了手动逆向分析,确认使用了相关API
  • Confirmed:作者确认了存在漏洞,且未得到修复
  • Fixed:作者确认了存在漏洞,且已得到开发人员修复

Confirmed : 在 Google Play中总安装次数超过1.33亿次

Confirmed + Fixed : 在 Google Play中总安装次数超过2.3亿次

【NDSS 2021】On the Insecurity of SMS One-Time Password Messages against Local Attackers 论文笔记相关推荐

  1. AAAI 2021 《Regularizing Attention Networks for Anomaly Detection in Visual Question Answering》论文笔记

    目录 简介 动机 方法 实验 简介 本文是POSTECH和Kakao合作的一篇文章. 论文链接 动机 异常检测有助于提升模型的稳定性和可靠性,也就是鲁棒性,OOD问题也可以视为一种异常.但是,单模态的 ...

  2. ICDE 2021: 针对具有噪音和低采样率轨迹的时空相似算法(附论文链接)

    随着定位技术的发展以及IOT设备的普及,大量的轨迹数据可以被采集分析.轨迹数据一般被表示成位置与其采集时间的序列.了解轨迹之间的相似度,有非常多的应用,例如:密切接触者追踪,伴侣检测,个性化推荐等.然 ...

  3. [2021 IJCV] Intra-Camera Supervised Person Re-Identification 论文笔记

    目录 Background Motivation Related Work Problem Definition Methodology Per-Camera Multi-Task Learning ...

  4. 姚期智施尧耘获FOCS 2021时间检验奖,MIT华人学霸毛啸摘最佳学生论文奖

    鱼羊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 计算机理论顶会FOCS 2021各项论文奖项已公布. 最佳学生论文奖被MIT华人学霸毛啸收入囊中. 而姚期智院士和达摩院量子实验室负责人施尧 ...

  5. 论文笔记 EMNLP 2021|Treasures Outside Contexts: Improving Event Detection via Global Statistics

    文章目录 1 简介 1.1 动机 1.2 创新 2 方法 2.1 语义特征提取器 2.2 统计特征提取器 3 实验 1 简介 论文题目:Treasures Outside Contexts: Impr ...

  6. 论文笔记 AAAI 2021|what the role is vs. What plays the role: Semi-supervised Event Argument Extraction v

    文章目录 1 简介 1.1 动机 1.2 创新 2 方法 3 半监督双重训练策略 4 实验 1 简介 论文题目:What the role is vs. What plays the role: Se ...

  7. 史元春老师组20-21年论文笔记

    Chen Liang, Chun Yu, Xiaoying Wei, Xuhai Xu, Yongquan Hu, Yuntao Wang, Yuanchun Shi: Auth+Track: Ena ...

  8. 论文笔记 EMNLP 2021|Modeling Document-Level Context for Event Detection via Important Context Selection

    文章目录 1 简介 1.1 创新 2 方法 2.1 预测模型 2.2 上下文选择 2.3 训练 3 实验 1 简介 论文题目:Modeling Document-Level Context for E ...

  9. 号外!2021考研政治肖1000大幅修订?你的肖1000Anki牌组笔记已出炉!

    号外!号外!你的2021肖1000Anki笔记牌组已出炉! 01 今年肖1000更新在哪? 今年的肖1000修订量在30%左右,所以往年的肖1000肯定是过时了. 今年新增包括了十九届四中全会以及抗击 ...

  10. 最新论文笔记(+15):Redactable Blockchain Protocols with Instant Redaction /IACR Cryptol.ePrint Arch 2021

    Redactable Blockchain Protocols with Instant Redaction(具有即时编辑功能的可编辑区块链) 这篇文章是今年放在IACR Cryptol.ePrint ...

最新文章

  1. iPhone销量低迷,或导致苹果放弃自动驾驶项目?
  2. java try嵌套
  3. Leetcode 106. 从中序与后序遍历序列构造二叉树 解题思路及C++实现
  4. 概率视角下的线性模型:逻辑回归有解析解吗?
  5. 【Servlet】Servlet体系结构
  6. linux配置本地yum(CentOS7)
  7. 字节跳动在 Spark SQL 上的核心优化实践
  8. python是什么意思怎么读-python怎么读,python是什么意思
  9. [转载] Python: struct 模块之字节对齐问题
  10. GSM UMTS E-UTRAN
  11. layui rate (评分组件)使用的一点经验分享
  12. Hystix、Feign、Zuul网关
  13. 阿里巴巴创始人马云:阿里是幸福指数最高的企业
  14. html中repeat平铺图片5张,no-repeat
  15. 回收站文件清空,要如何恢复?
  16. 环信即时通讯云iOS版V2.0.9.1服务评测
  17. Android 自定义View颜色选择器( 条形、水平),使用HSV颜色模型实现取色器并反向定位颜色所在位置
  18. java 打印日历
  19. 纯CSS3实现3D动画导航,html5 webRTC技术实现免费网页电话拨打
  20. 一键 linux桌面安装vnc,Linux OpenVZ Debian 7 32/64bit环境一键安装VNC桌面环境教程

热门文章

  1. 分贝噪音测试软件文件存储,分贝噪音测试工具
  2. VC2013同一个工程生成的exe文件显示不同的图标
  3. session过期时间
  4. 遥感数据下载网站汇总
  5. 【python小工具】vbb文件提取json
  6. 数学女孩-伽罗瓦理论读书笔记尺规作图
  7. matlab课后答案杨德平,MATLAB基础教程习题答案作者杨德平例题源程序课件.pdf
  8. 法拉科机器人编程软件_发那科机器人编写简单的程序教程
  9. Git可视化工具-小乌龟
  10. matlab建模总结,数学建模方法自己归纳总结(建模参考用,包含相应例题以及MATLAB...