IoT安全:攻击、防御与典型案例剖析
在当今数字化时代,物联网(IoT)的发展日新月异,各类智能设备充斥着我们的生活和工作环境。然而,随之而来的网络安全问题也愈发严峻。了解常见的网络攻击术语和防御机制,以及典型的IoT攻击案例,对于保障网络安全至关重要。
网络攻击与威胁术语
- 放大攻击(Amplification attack) :攻击者利用合法服务(如NTP、Steam或DNS)将发送给受害者的带宽放大。例如,NTP可将带宽放大556倍,DNS放大可达179倍。
- ARP欺骗(ARP spoof) :攻击者发送伪造的ARP消息,将自己的MAC地址与合法系统的IP地址关联起来。
-
横幅扫描(Banner scans)
:通常用于对网络中的系统进行清点,攻击者也可通过执行HTTP请求并检查返回的操作系统和计算机信息,来获取潜在攻击目标的信息,如
nc www.target.com 80。 - 僵尸网络(Botnets) :被恶意软件感染和控制的联网设备,通过共同控制集体工作,主要用于从多个客户端发起大规模DDoS攻击,还可用于电子邮件垃圾邮件和间谍软件攻击。
- 暴力破解(Brute force) :通过试错的方法来访问系统或绕过加密。
- 缓冲区溢出(Buffer overflow) :利用运行软件中的漏洞,向缓冲区或内存块写入超过分配量的数据,覆盖相邻内存地址中的其他数据。攻击者可在该区域放置恶意代码,并迫使指令指针从那里执行。编译型语言(如C和C++)由于缺乏内部保护,特别容易受到缓冲区溢出攻击。
- C2服务器(C2) :指挥和控制僵尸网络的服务器。
- 相关功率分析攻击(Correlation power analysis attack) :通过四个步骤发现设备中存储的秘密加密密钥。首先,检查目标的动态功耗并记录正常加密过程各阶段的功耗;其次,迫使目标对多个明文对象进行加密并记录其功耗;然后,通过考虑所有可能的组合并计算建模功率与实际功率之间的皮尔逊相关系数,攻击密钥的小部分(子密钥);最后,组合最佳子密钥以获得完整密钥。
- 字典攻击(Dictionary attack) :通过系统地输入字典文件中的用户名和密码对,来进入网络系统。
- 分布式拒绝服务攻击(Distributed Denial of Service,DDoS) :通过多个分布式源淹没在线服务,试图破坏或使其不可用。
- 模糊测试(Fuzzing) :向设备发送格式错误或非标准的数据,并观察设备的反应。如果设备性能不佳或出现不良反应,可能表明存在漏洞。
- 中间人攻击(Man-in-the-Middle Attack,MITM) :将设备置于两个不知情方之间的通信流中间,监听、过滤和窃取信息,并将选定的信息重新传输给接收方。中间人可以作为中继器在循环中工作,也可以在边带监听传输而不拦截数据。
- NOP雪橇(NOP sleds) :一系列注入的NOP汇编指令,用于将CPU的指令指针“滑动”到所需的恶意代码区域,通常是缓冲区溢出攻击的一部分。
- 重放攻击(Replay attack) :攻击者拦截数据、存储数据并随意传输,恶意重复或重放数据。
- 远程代码执行漏洞(RCE exploit) :使攻击者能够执行任意代码,通常以通过HTTP或其他网络协议注入恶意软件代码的缓冲区溢出攻击形式出现。
- 面向返回的编程攻击(Return-Oriented Programming,ROP Attack) :攻击者可能利用这种复杂的安全漏洞,通过非执行内存或从只读内存执行代码来绕过保护。如果攻击者通过缓冲区溢出或其他方式控制了进程栈,他们可以跳转到已经存在的合法且未改变的指令序列。攻击者寻找指令序列来调用小工具,这些小工具可以组合成恶意攻击。
- 返回libc攻击(Return-to-libc) :从缓冲区溢出开始,攻击者在进程的内存空间中注入跳转到libc或其他常用库的指令,试图直接调用系统例程,绕过非执行内存和保护带的保护,是ROP攻击的一种特定形式。
- Rootkit :通常是恶意软件(尽管常被用于解锁智能手机),用于使其他软件有效负载不可检测。Rootkit使用多种针对性技术(如缓冲区溢出)攻击内核服务、虚拟机管理程序和用户模式程序。
- 旁道攻击(Side Channel Attack) :通过观察物理系统的次要效应,而不是寻找运行时漏洞或零日漏洞,来获取受害者系统的信息,如相关功率分析、声学分析和读取从内存中删除后的数据残留。
- 欺骗攻击(Spoofing) :恶意方或设备在网络中冒充其他设备或用户。
- SYN洪泛攻击(SYN flood) :主机发送TCP:SYN数据包,恶意代理伪造该数据包,导致主机与许多不存在的地址建立半开放连接,耗尽主机资源。
- 零日漏洞(Zero-Day exploits) :商业或生产软件中设计者或制造商未知的安全缺陷或漏洞。
以下是攻击术语的总结表格:
| 攻击术语 | 描述 |
| — | — |
| 放大攻击 | 利用合法服务放大发送给受害者的带宽 |
| ARP欺骗 | 发送伪造ARP消息关联MAC和IP地址 |
| 横幅扫描 | 获取潜在攻击目标信息 |
| 僵尸网络 | 被控制的联网设备发起攻击 |
| 暴力破解 | 试错访问系统或绕过加密 |
| 缓冲区溢出 | 利用软件漏洞写入过量数据 |
| C2服务器 | 指挥和控制僵尸网络 |
| 相关功率分析攻击 | 四步发现加密密钥 |
| 字典攻击 | 输入字典文件中的用户名和密码对 |
| 分布式拒绝服务攻击 | 多源淹没在线服务 |
| 模糊测试 | 发送异常数据观察设备反应 |
| 中间人攻击 | 置于通信流中间窃取信息 |
| NOP雪橇 | 滑动指令指针到恶意代码区域 |
| 重放攻击 | 恶意重复或重放数据 |
| 远程代码执行漏洞 | 执行任意代码 |
| 面向返回的编程攻击 | 绕过保护执行代码 |
| 返回libc攻击 | 注入跳转指令调用系统例程 |
| Rootkit | 使软件有效负载不可检测 |
| 旁道攻击 | 观察次要效应获取信息 |
| 欺骗攻击 | 冒充其他设备或用户 |
| SYN洪泛攻击 | 耗尽主机资源 |
| 零日漏洞 | 未知的安全缺陷或漏洞 |
网络防御术语
- 地址空间布局随机化(Address Space Layout Randomization,ASLR) :通过随机化可执行文件在内存中的加载位置,保护内存并阻止缓冲区溢出攻击。由于缓冲区溢出注入的恶意软件无法预测其在内存中的加载位置,因此操纵指令指针变得极其困难,还可防止返回libc攻击。
- 黑洞(Black hole,sinkhole) :检测到DDoS攻击后,从受影响的DNS服务器或IP地址建立路由,将恶意数据引导到黑洞或不存在的端点。黑洞会进行进一步分析,过滤出有效数据。
- 数据执行保护(Data Execution Prevention,DEP) :将区域标记为可执行或不可执行,防止攻击者通过缓冲区溢出攻击在该区域恶意运行注入的代码,结果会导致系统错误或异常。
- 深度数据包检测(Deep Packet Inspection,DPI) :检查数据流中的每个数据包(包括数据和可能的头部信息),以隔离入侵、病毒、垃圾邮件和其他需要过滤的内容。
- 防火墙(Firewall) :一种网络安全结构,用于在不可信区域和可信区域之间的数据包流中授予或拒绝网络访问。可通过路由器上的访问控制列表(ACL)控制和管理流量,能进行状态过滤,并根据目标端口和流量状态提供规则。
- 保护带和不可执行内存(Guard bands and non-executable memory) :保护可写但不可执行的内存区域,防止NOP雪橇攻击。如英特尔的NX位、ARM的XN位。
- 蜜罐(Honeypots) :用于检测、转移或逆向工程恶意攻击的安全工具。蜜罐看起来像合法的网站或网络中的可访问节点,但实际上是隔离和监控的,会记录与设备的数据和交互。
- 基于指令的内存访问控制(Instruction-Based Memory Access Control) :将栈的数据部分与返回地址部分分离的技术,有助于防止ROP攻击,在受限的IoT系统中特别有用。
- 入侵检测系统(Intrusion Detection System,IDS) :通过对数据包流进行带外分析来检测网络中的威胁,不与源和目的地直接关联,以免影响实时响应。
- 入侵预防系统(Intrusion Prevention System) :通过真正的在线分析和统计或特征检测来阻止网络威胁。
- Milkers :一种防御工具,模拟受感染的僵尸网络设备并连接到其恶意主机,以便了解发送给受控僵尸网络的恶意软件命令。
- 端口扫描(Port scanning) :查找本地网络中开放且可访问的端口的方法。
- 公钥基础设施(Public Key Infrastructure,PKI) :定义验证者层次结构,以保证公钥的来源。证书由证书颁发机构签名。
- 公钥(Public key) :与私钥一起生成,可供外部实体访问,用于解密哈希。
- 私钥(Private key) :与公钥一起生成,从不对外发布,安全存储,用于加密哈希。
- 信任根(Root of Trust,RoT) :从不可变的可信内存源(如ROM)启动冷启动设备的执行。如果早期启动软件/BIOS可以不受控制地更改,则不存在信任根。信任根通常是多阶段安全启动的第一阶段。
- 安全启动(Secure Boot) :设备的一系列启动步骤,从信任根开始,经过操作系统和应用程序加载,每个组件的签名都经过验证为真实。验证通过在先前可信启动阶段加载的公钥进行。
- 栈金丝雀(Stack canaries) :保护进程栈空间免受栈溢出,并防止从栈执行代码。
- 可信执行环境(Trusted Execution Environment) :处理器的安全区域,确保该区域内的代码和数据受到保护。通常是主处理器核心上的执行环境,用于执行安全启动、货币转移或私钥处理等代码,其安全性高于大多数代码。
以下是防御术语的总结表格:
| 防御术语 | 描述 |
| — | — |
| 地址空间布局随机化 | 随机化可执行文件加载位置,阻止缓冲区溢出攻击 |
| 黑洞 | 引导恶意数据到不存在的端点并过滤有效数据 |
| 数据执行保护 | 标记区域可执行性,防止恶意代码运行 |
| 深度数据包检测 | 检查数据包隔离入侵等内容 |
| 防火墙 | 控制不可信和可信区域间的网络访问 |
| 保护带和不可执行内存 | 保护可写不可执行内存区域 |
| 蜜罐 | 检测、转移或逆向工程恶意攻击 |
| 基于指令的内存访问控制 | 分离栈的数据和返回地址部分 |
| 入侵检测系统 | 带外分析检测网络威胁 |
| 入侵预防系统 | 在线分析和特征检测阻止威胁 |
| Milkers | 模拟受感染设备了解恶意软件命令 |
| 端口扫描 | 查找开放且可访问的端口 |
| 公钥基础设施 | 保证公钥来源 |
| 公钥 | 用于解密哈希 |
| 私钥 | 用于加密哈希 |
| 信任根 | 从可信内存源启动设备执行 |
| 安全启动 | 多阶段验证组件签名的启动过程 |
| 栈金丝雀 | 保护进程栈空间免受溢出 |
| 可信执行环境 | 保护代码和数据的安全区域 |
典型的IoT网络攻击案例
Mirai攻击
Mirai是2016年8月感染Linux IoT设备的恶意软件,以僵尸网络的形式发起大规模DDOS攻击。攻击目标包括知名的互联网安全博客Krebs on Security、广泛使用的DNS提供商Dyn以及利比里亚的大型电信运营商Lonestar cell等。Dyn遭受的DDOS攻击对使用其服务的其他大型提供商(如索尼PlayStation服务器、亚马逊、GitHub、Netflix、PayPal、Reddit和Twitter)产生了二次影响。
Mirai攻击的步骤如下:
1.
扫描受害者
:使用TCP SYN数据包对随机IPv4地址进行快速异步扫描,特别查找SSH/Telnet TCP端口23和2323。如果扫描和端口连接成功,则进入第二阶段。Mirai包含一个硬编码的地址黑名单,以避免扫描某些地址,如美国邮政服务、惠普、通用电气和国防部的IP地址。Mirai的扫描速度约为每秒250字节,相对较低,因为IoT设备的处理能力通常比桌面和移动设备更受限。
2.
暴力破解Telnet
:尝试通过随机发送10对用户名和密码对,使用包含62对的字典攻击,与受害者建立有效的Telnet会话。如果登录成功,Mirai将主机记录到中央C2服务器。后来的Mirai变体使僵尸网络能够执行RCE漏洞攻击。
3.
感染
:服务器向潜在受害者发送加载程序,负责识别操作系统并安装特定于设备的恶意软件。然后,它会搜索使用端口22或23的其他竞争进程并将其杀死(包括设备上可能已存在的其他恶意软件)。加载程序二进制文件随后被删除,进程名称被混淆以隐藏其存在。恶意软件不驻留在持久存储中,重启后不会保留。僵尸网络在收到攻击命令之前保持休眠状态。
以下是Mirai攻击流程的mermaid流程图:
graph LR
A[扫描受害者] --> B[暴力破解Telnet]
B --> C[感染]
Mirai攻击的目标设备包括IP摄像机、DVR、消费路由器、VOIP电话、打印机和机顶盒等。2016年8月1日,首次扫描从美国的一个网络托管站点开始,扫描120分钟后找到一个开放端口且密码在字典中的主机。一分钟后,834个其他设备被感染。20小时内,64,500个设备被感染。Mirai的规模每75分钟翻倍。大多数变成僵尸网络的受感染设备位于巴西(15.0%)、哥伦比亚(14.0%)和越南(12.5%),尽管DDOS攻击的目标在其他地区。攻击造成的损害仅限于DDOS攻击,包括SYN洪泛、GRE IP网络洪泛、STOMP洪泛和DNS洪泛。在五个月的时间里,C2服务器发出了15,194个单独的攻击命令,攻击了5,042个互联网网站。2016年9月21日,Mirai僵尸网络对Krebs on Security博客站点发起了大规模DDOS攻击,产生了623 Gbps的流量,这是有史以来最严重的单次DDOS攻击。
IoT安全:攻击、防御与典型案例剖析
Stuxnet攻击
Stuxnet是首个有记录的用于永久性破坏他国资产的网络武器。它是一种蠕虫病毒,旨在破坏基于SCADA的西门子可编程逻辑控制器(PLC),并使用Rootkit修改PLC直接控制的电机转速。该病毒专门针对连接到西门子S7 - 300 PLC的从变量频率驱动器,其旋转速度为807 Hz和1210 Hz,这些设备通常用于泵和铀浓缩的气体离心机。
攻击过程大致始于2010年3月或4月,感染步骤如下:
1.
初始感染
:蠕虫首先利用先前病毒攻击中发现的漏洞感染一台Windows主机。推测是通过在初始机器中插入USB驱动器传播的。它同时使用了四个零日漏洞(这是前所未有的复杂程度),采用用户模式和内核模式代码的Rootkit攻击,并安装了一个从瑞昱(Realtek)窃取但经过正确签名和认证的设备驱动程序。这个内核模式签名驱动程序是为了向警惕的防病毒软件隐藏Stuxnet。
2.
Windows攻击与传播
:通过Rootkit安装后,蠕虫开始在Windows系统中搜索西门子SCADA控制器典型的文件,即WinCC/PCS 7 SCADA(也称为Step - 7)。如果找到西门子SCADA控制软件,它会尝试通过C2使用格式错误的URL(如www.mypremierfutbol.com和www.todaysfutbol.com)访问互联网,以下载其有效负载的最新版本。然后,它会深入文件系统搜索名为s7otbdx.dll的文件,该文件是Windows机器与PLC之间的关键通信库。Step - 7包含一个硬编码的密码数据库,通过另一个零日攻击被利用。Stuxnet插入到WinCC系统和s7otbdx.dll之间,充当中间人攻击者。病毒开始记录离心机的正常运行情况。
3.
破坏
:当决定协调攻击时,它会将预先记录的数据重放到SCADA系统,而SCADA系统没有理由怀疑任何东西被破坏或运行异常。Stuxnet通过两种不同的协调攻击操纵PLC,对伊朗设施的整个阵列造成破坏。离心机转子的损坏是逐渐发生的,以15或50分钟的增量运行,中间间隔27天的正常运行。这导致铀浓缩不当,以及离心机中的转子管破裂和损坏。
据信,这次攻击使伊朗纳坦兹主要浓缩设施的1000多台铀浓缩离心机瘫痪和损坏。如今,Stuxnet代码可在网上获取,本质上成为了创建衍生漏洞的开源领域。
以下是Stuxnet攻击步骤的总结表格:
| 步骤 | 描述 |
| — | — |
| 初始感染 | 利用漏洞感染Windows主机,使用四个零日漏洞和Rootkit,安装签名驱动隐藏自身 |
| Windows攻击与传播 | 搜索SCADA文件,通过C2下载有效负载,利用密码数据库,充当中间人记录正常运行 |
| 破坏 | 重放记录数据,操纵PLC造成离心机损坏 |
Chain Reaction攻击
Chain Reaction是一项学术研究,展示了一种针对个人区域网(PAN)网状网络的新型网络攻击,无需连接互联网即可执行。该攻击利用了通常用于家庭的飞利浦Hue智能灯泡,通过插入一个受感染的智能灯泡即可发起攻击,并且这种攻击可以扩展到智慧城市攻击。
飞利浦Hue灯泡使用Zigbee协议建立网状网络。Zigbee照明系统遵循Zigbee Light Link(ZLL)程序,以实现照明互操作性的标准方法。ZLL消息未加密或签名,但在灯泡添加到网状网络时使用加密来保护交换的密钥。这个主密钥被ZLL联盟的每个人所知,随后被泄露。ZLL还要求加入网状网络的灯泡与发起者非常接近,以防止接管邻居的灯泡。Zigbee还提供了一种空中(OTA)重新编程方法,不过固件包是加密和签名的。
研究人员采用了四阶段攻击计划:
1.
破解OTA固件包的加密和签名
:研究人员使用相关功率分析(CPA)和差分功率分析(DPA)来破解加密。CPA用于破解AES - CBC,攻击者在没有密钥、随机数和初始化向量的情况下解析出密钥,并以同样的方式攻击随机数。DPA用于破解AES - CTR计数器模式,以打破固件捆绑加密。研究人员发现AES - CTR似乎执行的10个位置,增加了破解的可能性。
2.
编写并部署恶意固件升级
:使用破解的加密和签名密钥,将恶意固件升级写入并部署到单个灯泡。
3.
受感染灯泡加入网络
:受感染的灯泡基于窃取的主密钥加入网络,并利用流行的Atmel AtMega部件中发现的零日缺陷绕过接近安全机制。
4.
感染相邻灯泡
:成功加入Zigbee网状网络后,它会将有效负载发送到相邻灯泡并迅速感染它们。根据渗流理论,攻击会扩展并感染整个城市的照明系统。
以下是Chain Reaction攻击流程的mermaid流程图:
graph LR
A[破解OTA固件包加密和签名] --> B[编写并部署恶意固件升级]
B --> C[受感染灯泡加入网络]
C --> D[感染相邻灯泡]
Zigbee使用AES - CCM(IEEE 802.15.4标准的一部分)加密来加密OTA固件更新。为了破解固件加密,攻击者使用CPA和DPA。他们将示波器捕获的功率轨迹分成两组,一组假设要破解的中间值设置为1,另一组假设为0。通过减去这两组的平均值,暴露中间值的真实值。
一次真正的攻击可以迫使受感染的灯泡在几百米范围内感染其他灯泡,并携带有效负载去除每个灯泡的固件更新能力,使它们无法恢复。灯泡将实际上处于恶意控制之下,不得不被销毁。研究人员能够构建一个全自动攻击系统,并将其安装在无人机上,在校园环境中系统地飞到飞利浦Hue灯泡的范围内并劫持每一个灯泡。
总结
随着物联网的不断发展,网络安全问题变得愈发复杂和严峻。了解常见的网络攻击术语和防御机制,以及典型的IoT攻击案例,有助于我们更好地应对这些挑战。从Mirai的大规模DDOS攻击到Stuxnet对关键基础设施的破坏,再到Chain Reaction对智能家居和智慧城市的潜在威胁,每一个案例都提醒我们需要采取积极有效的安全措施。
在防御方面,地址空间布局随机化、数据执行保护、防火墙等技术可以帮助我们保护系统免受攻击。同时,蜜罐、入侵检测系统和入侵预防系统等工具可以帮助我们检测和阻止潜在的威胁。然而,随着攻击者不断开发新的攻击技术,我们也需要不断更新和改进我们的防御策略。
对于物联网设备制造商和开发者来说,应该在设计和开发过程中充分考虑安全因素,确保设备的安全性。用户也应该保持警惕,及时更新设备的固件和软件,避免使用弱密码,以减少被攻击的风险。只有通过各方的共同努力,才能构建一个更加安全的物联网环境。
超级会员免费看
117

被折叠的 条评论
为什么被折叠?



