本书涉及物联网的多个主题,涵盖硬件开发、嵌入式开发、固件开发和无线电开发(如BLE和ZigBee)等物联网开发技术,还介绍了物联网设备中的常见漏洞,并讲述使用安全工具进行安全防护的方法。读者可以用本书介绍的方法解决实际的物联网安全问题,维护物联网环境的安全。
本书共10章,涵盖了许多主题,包括物联网设备的硬件、嵌入式系统、固件开发、软件无线电、BLE和ZigBee的安全性问题与验证方法。
对我来说,写这本书的过程是一次激动人心的冒险之旅。在这个过程中,我分享了自己的经历以及在职业生涯中学到的各种知识,并将所有的东西都融入这10章中。
希望你能充分利用这本为你提供充足的知识储备的书,强烈建议你将从本书中学到的所有技能应用到实际工作中,让物联网生态系统更加安全,正是每个人的贡献才能创造一个更安全的世界。
人无完人,这本书中一定会有一些小错误。如果你遇到任何错误,请告诉我,我会在之后的版本中加以改正。
我还教授关于物联网安全的培训课程,课程为期三至五天,你可以通过参加这些课程获得与本书所涵盖的内容相关的实际经验。有关在线培训和现场课程的更多信息,请访问网址attify-store.com。
后也是重要的部分就是社区!希望各位读者愿意向你的同龄人,甚至是物联网领域的新手分享你的知识,让我们作为社区中的一员共同成长。
再次感谢你阅读本书,祝你的物联网开发工作一切顺利!
致谢
如果没有我在Attify的出色团队,这本书永远不会完成,感谢他们为确保本书的高质量付出的精力。
Aditya Gupta(@adi1391)
阿迪蒂亚·古普塔(Aditya Gupta) Attify公司创始人兼首席执行官,主要从事智能家居、智能医疗设备、ICS和SCADA系统等的安全性研究,以及物联网渗透测试和物联网开发安全培训的工作。他还多次在国际安全会议上做报告,介绍物联网设备的不安全性以及相关的安全防御方法。
译者序
前言
关于作者
第1章 物联网概述 1
1.1 早期的物联网安全问题 3
1.1.1 Nest恒温器 3
1.1.2 飞利浦智能家电 3
1.1.3 Lifx智能灯泡 4
1.1.4 智能汽车 5
1.1.5 Belkin Wemo 5
1.1.6 胰岛素泵 6
1.1.7 智能门锁 6
1.1.8 智能手枪 7
1.2 物联网系统框架 8
1.3 物联网存在安全漏洞的原因 10
1.3.1 开发人员缺乏安全意识 10
1.3.2 宏观视角不足 10
1.3.3 供应链带来的安全问题 10
1.3.4 使用不安全的开发框架和第三方库 11
1.4 小结 11
第2章 物联网渗透测试 12
2.1 什么是物联网渗透测试 12
2.2 攻击面映射 13
2.3 如何实施攻击面映射 13
2.3.1 嵌入式设备 14
2.3.2 固件、软件和应用程序 15
2.3.3 无线电通信 17
2.3.4 创建攻击面映射图 19
2.4 构建渗透测试 22
2.4.1 客户参与和初步讨论 23
2.4.2 更多的技术讨论和信息通报 23
2.4.3 攻击者模拟利用 24
2.4.4 补救措施 24
2.4.5 重新评估 24
2.5 小结 25
第3章 硬件分析 26
3.1 外观检查 26
3.1.1 实例 27
3.1.2 找到输入和输出端口 28
3.1.3 内部检查 29
3.1.4 分析数据手册 32
3.1.5 什么是FCC ID 33
3.1.6 组件封装 36
3.2 无线电芯片组 37
3.3 小结 37
第4章 UART通信 38
4.1 串行通信 38
4.2 UART概述 40
4.3 UART数据包 40
4.4 波特率 42
4.5 用于UART开发的连接 43
4.5.1 确定UART引脚 45
4.5.2 Attify Badge 46
4.5.3 建立终连接 48
4.5.4 确定波特率 48
4.5.5 设备交互 49
4.6 小结 52
第5章 基于I2C和SPI的设备固件获取 53
5.1 I2C 53
5.2 为什么不使用SPI或者UART 54
5.3 串行外设接口SPI 54
5.4 了解EEPROM 55
5.5 基于I2C的设备分析 56
5.6 I2C和Attify Badge的连接应用 58
5.7 深入了解SPI 61
5.8 从SPI EEPROM读写数据 62
5.9 使用SPI和Attify Badge转储固件 68
5.10 小结 71
第6章 JTAG调试分析 72
6.1 边界扫描 72
6.2 测试访问口 74
6.3 边界扫描指令 74
6.4 JTAG调试 75
6.5 识别JTAG的引脚 76
6.5.1 使用JTAGulator 77
6.5.2 使用带有JTAGEnum的Arduino 79
6.6 OpenOCD 81
6.6.1 安装用于JTAG调试的软件 81
6.6.2 用于JTAG调试的硬件 82
6.7 JTAG调试前的准备 83
6.8 基于JTAG的固件读写 86
6.8.1 将数据和固件的内容写入设备 87
6.8.2 从设备中转储数据和固件 87
6.8.3 从设备中读取数据 88
6.8.4 使用GDB调试JTAG 88
6.9 小结 93
第7章 固件逆向分析 94
7.1 固件分析所需的工具 94
7.2 了解固件 95
7.3 如何获取固件的二进制文件 96
7.4 固件内部的情况 102
7.5 加密的固件 106
7.6 模拟固件二进制文件 111
7.7 模拟完整固件 114
7.8 固件后门 117
7.8.1 创建和编译后门并在MIPS架构上运行 118
7.8.2 修改entries文件并在某个位置设置后门,以便启动时自动加载 122
7.9 运行自动化固件扫描工具 126
7.10 小结 128
第8章 物联网中的移动、Web和网络漏洞利用 129
8.1 物联网中的移动应用程序漏洞 129
8.2 深入了解安卓应用程序 130
8.3 逆向分析安卓应用程序 130
8.4 硬编码的敏感信息 133
8.5 逆向加密 139
8.6 基于网络的漏洞利用 143
8.7 物联网中Web应用程序的安全性 145
8.7.1 访问Web接口 145
8.7.2 利用命令注入 149
8.7.3 固件版本差异比对 153
8.8 小结 155
第9章 软件无线电 156
9.1 SDR所需的硬件和软件 157
9.2 SDR 157
9.3 建立实验环境 157
9.4 SDR的相关知识 159
9.4.1 调幅 159
9.4.2 调频 160
9.4.3 调相 161
9.5 常用术语 161
9.5.1 发送器 161
9.5.2 模拟-数字转换器 161
9.5.3 采样率 162
9.5.4 快速傅里叶变换 162
9.5.5 带宽 162
9.5.6 波长 162
9.5.7 频率 162
9.5.8 天线 163
9.5.9 增益 164
9.5.10 滤波器 165
9.6 用于无线电信号处理的GNURadio 165
9.7 确定目标设备的频率 173
9.8 数据分析 176
9.9 使用GNURadio解码数据 178
9.10 重放无线电包 182
9.11 小结 184
第10章 基于ZigBee和BLE的漏洞利用 185
10.1 ZigBee基本知识 185
10.1.1 了解ZigBee通信 186
10.1.2 ZigBee所需硬件 187
10.1.3 ZigBee安全 187
10.2 低功耗蓝牙 196
10.2.1 BLE内部结构和关联 197
10.2.2 与BLE设备