编者按:本文节选自华章网络空间安全技术丛书《物联网渗透测试》一书中的部分章节。
IoT 中的移动应用
在 IoT 领域,移动应用模型同前面介绍的 Web 应用模型类似。虽然对移动设备平台的安全模型进行深入探讨超出了本书的范围,但是了解移动应用开发模型的基本概念将有助于后面的学习。
混合应用
安装在 Android、iOS 或 Windows Phone 设备中的移动应用可以是混合应用也可以是原生应用。虽然同 Web 应用相比,混合和原生在移动应用中具有不同的含义,但是其原理相似。混合应用既用到了 HTML/HTML 5、CSS 和 JavaScript 等 Web 技术,也用到了部分原生平台硬件,如 GPS 模块或蓝牙模块。只有使用混合框架提供的插件才能够访问硬件资源。可以将混合应用看作包含了 Web 应用的封装包,而原生平台可以使用该封装包。这意味着 Web 开发人员无须学习新的开发语言即可编写移动应用。
混合应用在 Windows Phone、Android 和 iOS 等多个平台上可以使用同一个代码库,当考虑将 IoT 设备应用投放市场时这是一个巨大的优势。通过嵌入式 Web 浏览器 WebView 就可以调用 Web 应用。当前,市场中流行的应用有多种流行的混合框架可以选择,包括 Apache Cordova、Adobe PhoneGap 以及 Xamarin 等。
每套移动混合框架都包含一个第三方市场,在其中提供可以实现各种功能的插件。为了实现快速开发,部分框架会采用一种编程语言(C#)编写,然后再翻译成另一种本地语言(Objective C 或者 Java),例如 Xamarin 就是如此。然而,从原生平台的高危远程代码执行到隐私泄露,这些移动框架存在着诸多安全隐患,这也并非什么秘密。如果读者在应用中恰好发现用到了某套移动混合框架,那么最好查阅一下相应的漏洞库,兴许就能够找到可以直接利用的漏洞。
为了帮助读者更好地了解混合应用运行的架构,图 1 展示了应用代码、WebView、插件以及移动设备自身之间的各个组件。需要注意的是,大多数封装包的代码和插件都是由混合框架或参与混合框架开发的第三方开发人员开发的。
图 1 混合应用示例
原生应用
原生应用是为特定操作系统开发的,采用 Java、Objective C、Swift 等设备平台原生语言编写,其中对于 Windows Phone 平台而言则需要采用 C#语言。原生应用使用各自平台的 SDK 实现同摄像头、蓝牙和 GPS 等硬件的交互。原生应用的性能和安全性取决于开发人员对原生平台语言的熟悉程度。如果平台 API 经常更新并且经常弃用某些类或方法,那么将会增加开发工作的难度。越来越多的平台,例如 iOS 和 Android 等平台,正在开发安全的原生 API,这样开发人员就无须再利用第三方库即可直接使用安全 API,进而提高通信和数据存储的安全性。
同混合应用架构相比,原生应用架构简单得多。图 2 展示了原生应用在设备上直接运行原生代码访问硬件资源的过程,在应用访问硬件资源的过程中未借助第三方组件。
图 2 原生应用示例
了解每种移动应用模型的优缺点对于高效地开展渗透测试而言非常重要。由于移动应用拥有设备的控制权,因此是针对设备实施攻击的另一个重要突破口,并且同其他方法比起来,有时通过移动应用突破 IoT 设备要更加容易一些。在第 5 章中,我们将分解 IoT 设备,对 IoT 移动应用中最常见的漏洞展开深入分析。
图书简介:https://item.jd.com/12623610.html
相关阅读
评论 1 条评论