【QCon】精华内容上线92%,全面覆盖“人工智能+”的典型案例!>>> 了解详情
写点什么

物联网渗透测试(一):简介

  • 2020-05-09
  • 本文字数:4415 字

    阅读完需:约 14 分钟

物联网渗透测试(一):简介

编者按:本文节选自华章网络空间安全技术丛书《物联网渗透测试》一书中的部分章节。

简介

本章主要关注开展 IoT 渗透测试所需的基础知识,向读者介绍 IoT 设备攻击面的基本概念,为帮助测试人员构建 IoT 渗透测试的实验环境奠定基础。


我们首先讨论当前 IoT 渗透测试的现状,以及所有可能存在的攻击面,进而了解渗透测试的进展情况。之后我们将介绍固件安全、Web 应用安全、移动应用安全、硬件安全和无线电通信方面的基础知识。


最后,我们将向读者介绍如何对开展渗透测试所需的软硬件工具进行配置。

定义 IoT 生态系统与渗透测试生命周期

在过去的几年中,基于 IoT 设备不断上涨的数量、为业务提供的便利性、自身的易用性以及为信息安全带来的潜在风险等诸多因素,IoT 设备赢得了广泛关注。由于 IoT 概念的火爆就出现在我们身边,所以即便是作为一个普通人也可以感受到这个技术奇点>1距离自己并不遥远。而对 IoT 和互联网越来越高的依赖度使得人们不由地对人身安全、隐私安全与信息安全产生了担忧。同时,IoT 设备几乎已经用在所有行业领域,如消费、娱乐业、工商业、医疗业、工业、能源业以及制造业等领域。但是,过往案例已经证明了无论是消费者还是将 IoT 技术商用的厂商和开发者,都难以采取有效的方式来确保设备安全。如果指望设备厂商在制造设备时采用诸如安全设计之类的方法提供安全保障,又严重依赖于设备所面向的行业,那么需要厂商对行业业务具有深刻的理解,这对厂商显然提出了非常高的要求。


1 技术奇点是一个根据技术发展史总结出的观点,认为未来将要发生一件不可避免的事件:技术发展将会在很短的时间内发生极大的接近于无限的进步。一般设想技术奇点由超越现今人类并且可以自我进化的机器智能或者其他形式的超级智能的出现所引发。由于其智能远超今天的人类,因此技术的发展会完全超乎全人类的理解能力,甚至无法预警其发生。之所以被称为奇点,就是像物理学上引力接近无穷大时产生的黑洞的物理属性一样,已经超出一般正常模型所能预测的范围。—译者注


各个行业也可能因垂直细分与所处区域而制订不同的测试规范。因此,为了确保不违反相关法律规定,在对 IoT 设备开展渗透测试之前需要了解有关的法律法规。在部分地区,我们以美国为例,只要研究是出于符合社会规范的善意目的,通过合法渠道获得被测设备,在受控环境下开展测试,并且也未违反 2016 年 10 月颁布的《计算机欺诈和滥用法案》(Computer Fraud and Abuse Act,CFAA),那么是允许安全人员对消费级设备开展安全研究的,并且不受《数字千年版权法》(Digital Millennium Copyright Act,DMCA)的追究。这也就意味着当前对网联汽车、摄像头、各种智能家居设备、视频游戏机和越狱移动设备的安全研究都是合法的。在经过与《数字千年版权法》和安全界的漫长协调之后,广大安全研究人员取得了一个巨大的胜利。


在取得相关法律法规许可的情况下(这也是我们开展安全测试的依据所在),接下来将对设备固件、Web 应用、移动应用、硬件和无线电通信开展安全评估。首先,我们需要了解 IoT 所涉及的所有领域,包括渗透测试方法和生命周期,进而识别出所有可能的攻击面。下面我们来了解一下 IoT 设备中各组件的基本原理,以便知晓其攻击原理。

渗透测试方法

无论是否出现攻击事件,对应用、网络和设备开展安全测试、查找其中隐藏的漏洞对于保障互联网安全都是至关重要的。无论是由厂商、第三方咨询公司、企业安全团队,还是由普通的安全人员来实施测试,测试方法的选择都取决于能够提供给测试人员的信息。理想情况下,一次全面的测试应该包括整个 IoT 系统及其基础设施,而不仅仅是 IoT 设备本身,但考虑到成本与技术能力,现实中的通常只针对 IoT 系统中的某个子集开展测试。


  1. 黑盒测试


由于黑盒测试成本相对较低,因此黑盒测试是最为常见的测试方法。黑盒测试是在不了解设备所采用的技术原理或实现方式的情况下进行的测试。通常情况下,安全研究人员或第三方咨询公司都会采用黑盒测试方法,但有时内部安全团队也会采用该方法进行风险评估。


漏洞公开注意事项

如果在安全研究过程中挖掘出了漏洞,那么披露漏洞时需要遵循厂商要求的漏洞公开流程。如果厂商未制订漏洞公开流程,那么计算机安全应急响应中心(CERT)可以协助安全研究人员以适当的方式提交漏洞。关于 CERT 的漏洞公开处理流程的详细内容可以参考链接http://www.cert.org/vulnerability-analysis/vul-disclosure.cfm中的内容。


  1. 白盒测试


如果测试人员能够接触到源代码、网络拓扑图、架构图、数据流图以及其他目标设备所采用技术的详细信息,那么此时开展的测试即白盒测试。通常来说,预先能够向测试人员提供的目标设备或应用的信息越多,测试效果就会越好。白盒测试的成本相对较高,但能够确保对设备的安全控制措施及其实现情况进行更加全面、彻底的筛查。


  1. 灰盒测试


相对于被测机构内部人员而言,如果测试人员对被测系统的了解有限,仅能获取到被测系统的部分信息,那么此时所开展的测试即灰盒测试。在灰盒测试过程中,测试人员通常只知道所用到的应用程序栈和库文件,但是没有关于 API 的详细文档。


读者可以访问以下链接了解更多开展安全研究过程中有关《数字千年版权法》(DCMA)的内容:https://www.ftc.gov/news-events/blogs/techftc/2016/10/dmca-secu-rity-research-exemption-consumer-devices

固件入门

固件是一种写入硬件设备的软件,作用是对应用和各项系统功能实施控制。固件中包含底层代码,这些代码能够帮助软件实现对硬件的操作。运行固件的设备称为嵌入式系统,嵌入式系统的硬件资源在存储能力以及内存等方面往往具有诸多限制。举例来说,智能手机、交通信号灯、网联汽车、某些类型的专用计算机、无人机和有线机顶盒都是运行固件的嵌入式设备。


显然,从城市运行所依赖的关键基础设施,到人们生活中必不可少的银行 ATM 和智能家居,嵌入式技术及运行在嵌入式设备之上的固件控制着我们的日常生活。理解固件的二进制文件中都包含哪些内容以及与之关联的属性是非常重要的。固件通常由 bootloader、内核、文件系统以及其他资源组成。根据嵌入式 Linux、嵌入式 Windows、Windows IoT 内核以及各种实时操作系统(Real Time Operating System,RTOS)的区别,固件也有多种类型。本书主要针对基于嵌入式 Linux 的环境进行介绍,但是,本书中所涉及的原理对于其他平台也是同样适用的。


读者可以从以下链接中了解更多关于固件的内容:https://wiki.debian.org/Firmware


图 1 展示了固件的组成,即闪存、bootloader、内核和根文件系统。



图 1 固件组成示意图

固件深度分析

首先让我们先了解一下 bootloader。bootloader 的作用主要包括 RAM 初始化(目的是存储易失性数据)、串口初始化、机器类型检测、内核参数链表(kernel tagged list)设置、 initramfs(基于 RAM 的初始文件系统)加载以及内核镜像调用等。bootloader 通过板级支持包(Board Support Package,BSP)初始化硬件驱动,其中板级支持包通常由第三方厂商开发。可以将 bootloader 存储在单独的电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)中,但这种情况一般不太常见,更为常见的形式是直接将 bootloader 写入闪存存储器。从某种程度上说,我们可以将 bootloader 看作启动 PC 时的 BIOS。深入分析 bootloader 的各项功能已经超出了本书所讨论的范畴,这里我们只对本书用到的 bootloader 特性进行介绍。ARM、MIPS 架构中部分常见的 bootloader 包括:Redboot、u-boot 以及 barebox 等。当 bootloader 启动内核之后,文件系统就完成了加载。


固件可以采用的文件系统类型有很多,有时根据设备的区别也会采用某些专有文件类型。部分较为常见的文件系统类型包括 SquashFS、cramFS、JFFS2、YAFFS2 以及 ext2 等。其中设备(尤其是消费级电子设备)最常采用的文件系统是 SquashFS。分析人员可以使用诸如 unsquashfs 或者改进后的 unsquashfs 等工具从 SquashFS 文件系统中提取数据。有部分厂商会对 SquashFS 文件系统进行改进,以确保能够对非标准的 SquashFS 文件系统压缩算法提供支持,比如说 LZMA 压缩算法(在 SquashFS 4.0 之前,官方支持的唯一压缩格式为.zlib),而此时就需要用到改进后的 unsquashfs 工具进行解压,同常规的标准 SquashFS 文件系统相比,非标准的 SquashFS 文件系统启动时的偏移量同之前会有所区别。在本书后面的内容中,我们将会对偏移的定位与识别进行专门的介绍。


读者如果想了解有关嵌入式 Linux 文件系统的更多内容,可以访问以下链接:http://elinux.org/images/b/b1/Filesystems-for-embedded-linux.pdf


Sasquatch 是一套能够对非标准 SquashFS 文件系统进行解压、从中提取文件系统的工具,即可以从以下链接下载:https://github.com/devttys0/sasquatch


与之类似,固件镜像也可以采用 LZMA、.gzip、.zip、.zlip 和.arj 等多种文件压缩类型。每种文件类型在压缩后的文件尺寸、压缩时间、解压时间以及设备自身的业务需求等方面都各有擅长。从渗透测试的角度出发,我们可以把文件系统看作存储配置文件、服务、账户口令、散列值、应用程序代码以及启动脚本的地方。在下一章中,我们将介绍如何查找设备中的文件系统,以及如何确定其采用的压缩方式。

固件的开发供应链

文件系统中包含同设备强相关的代码,这些代码通常采用 C、C++或者 Lua 之类的编程语言编写。与设备相关的代码,甚至是固件自身,都可以外包给第三方开发人员,即原始设计制造商(ODM),也可以由内部开发人员同原始设备制造商(OEM)协作开发。ODM 是嵌入式设备开发供应链中的一个重要环节。在亚洲,有很多这样的小公司,并且开发成本也较为低廉。有些 OEM 信任自己产品线上的 ODM,而有些 OEM 则会选择对单一产品报价最低的 ODM。在某些行业中,ODM 也可以称为供应商。需要特别注意的是,ODM 是能够同多家不同的 OEM 开展合作的,甚至可以采用相同的代码库。读者可能已经知道这个情况,或者惊讶于为什么一个严重的软件漏洞公告就会影响到十余家设备厂商。究其原因就在于 ODM 自身并未建立安全开发生命周期流程,而 OEM 对此也疏于验证。一旦 ODM 完成了应用开发成果的交付,这个成果可能是 OEM 的一个 SDK 也可能是固件,OEM 就会直接把交付的代码融入固件之中,实现起来可能就是简单地在 Web 界面添加 OEM 的一个 logo。根据 ODM 和 OEM 代码融合方式的不同,实现过程也有所区别,其中一种较为常见的方式是,ODM 向 OEM 直接提供二进制文件。OEM 负责固件分发、固件管理以及对设备自身提供支持,其中也包括解决第三方研究人员提交的固件安全问题,如果 ODM 持有源代码,而 OEM 仅能拿到二进制文件,那么 OEM 难以有效缓解固件中的安全隐患,从而将面临巨大的压力。


在第 3 章中,我们将通过了解如何识别文件系统、压缩方式,以及如何构建二进制文件的仿真测试环境来实现对固件二进制镜像的逆向分析,进而对固件中常见的漏洞开展利用。


图书简介https://item.jd.com/12623610.html



2020-05-09 10:002694

评论

发布
暂无评论
发现更多内容

顶级大咖齐聚云端,赛意信息这场数字化盛宴不容错过

科技热闻

为什么新能源汽车上的IGBT会如此火爆?

元器件秋姐

半导体 新能源汽车 新能源 汽车芯片 功率半导体

处理中国式报表,一款合适的BI商业智能工具尤为重要

小偏执o

OpenAI掌门人Sam Altman:AI的下一个发展阶段

OneFlow

人工智能 深度学习 openai

FLStudio21新版有哪些新功能推荐?

茶色酒

FLStudio21 FLStudio21.0.0

GPR政务流程再造赋能数字政府建设

张磊

人工智能 大数据 数字政务 流程再造 BPR

英特尔梁雅莉:拥抱数字时代,满足日益增长的算力需求

科技之家

2021最新百度Java岗四轮面试题,(三轮技术面+一轮HR面)

钟奕礼

Java 程序员 java面试 java编程

新一代云原生实时数仓 SelectDB 重磅发布!最全技术亮点解读都在这里了

SelectDB

数据库 云计算 大数据 数据仓库 云原生

最近大火的高性能计算ChatGPT究竟是什么?

蓝海大脑GPU

深度学习 高性能计算, ChatGPT

优化 20% 资源成本,新东方的 Serverless 实践之路

Serverless Devs

Serverless

BaseDet: 走过开发的弯路

MegEngineBot

深度学习 开源 目标检测 MegEngine BaseDet

CorelDRAW2023离线下载安装步骤

茶色酒

CorelDraw2023

知乎疯转30K+的微服务架构笔记,理论与实战齐飞!

小小怪下士

Java 微服务 架构设计

Github标星42K!不愧是腾讯云大神亲码的“redis深度笔记”

架构师之道

编程 程序员 java面试

airserver2023免费中文版下载

茶色酒

AirServer2023

阿里三面,讲讲不同场景下并发Map容器最优使用。凉凉送给自己

钟奕礼

Java 程序员 Java 面试 java编程

最新2021快手面试Java岗面经,成功手拿offer,开心到飞

钟奕礼

Java 程序员 Java 面试 java编程

ThingsBoard前端项目的安装与启动

echeverra

thingsboard

Milvus 2.1.x 到 Milvus 2.2.x 升级实践

Zilliz

数据库 Milvus

激活海量数据价值,实现生产过程优化|智慧工厂系列专题07

EMQ映云科技

人工智能 物联网 IoT 云边协同 12 月 PK 榜

新闻速递 | KaiwuDB 亮相 DTCC 2022 线上大会并发表系列主题演讲

KaiwuDB

数据库

APISIX Ingress 如何支持自定义插件

API7.ai 技术团队

Kubernetes 云原生 api 网关 APISIX Ingress Controller

节能降耗 | AIRIOT智慧电力综合管理解决方案

AIRIOT

物联网 智慧电力

socket是并发安全的吗

C++后台开发

网络编程 socket 多线程 TCP/IP Linux服务器开发

团队新人多,稳定性经验不足,研发质量怎么保障?|TakinTalks论道

TakinTalks稳定性社区

技术管理

2022高通人工智能开发者大会暨高通人工智能应用创新大赛颁奖典礼圆满落幕

科技热闻

沉铜/黑孔/黑影工艺,PCB该选哪一种?

华秋PCB

工艺 PCB PCB设计

中大型企业组织为什么要选择私有化企业IM?

WorkPlus

企业安全的移动办公平台应该具备哪些能力?

WorkPlus

Wallys/industrial M.2 card/DR9074E vs DR90746E/Minipcie /qsdk/qcn9074

wallysSK

QCN9074 QCN9024 QCN9072 qcn9064

物联网渗透测试(一):简介_5G/IoT_亚伦·古兹曼,阿迪蒂亚·古普塔_InfoQ精选文章