随着智能手表、智能家居设备甚至智能汽车等连接设备加入物联网生态系统,确保其安全性的重要性不言而喻。众所周知,如今智能设备已经成为我们生活中不可或缺的一部分,也成为了网络攻击的目标。针对物联网设备的恶意软件已经存在了十多年。Hydra是第一个自治路由器恶意软件,于2008年作为开源工具出现。在路由器恶意软件的开源原型Hydra之后不久,也发现了针对网络设备的恶意软件。从那时起,出现了各种僵尸网络家族并广泛传播,包括Mirai、Hajime和Gafgyt家族。今年5月,安全研究团队发现了一种名为“Kaiji”的恶意软件,专门用于感染基于Linux的服务器和智能物联网(IoT)设备,然后黑客会利用这些系统发起DDoS攻击。根据Allot的说法,到2022年将有120亿台联网设备,这可能会使5G网络的安全性过载,并扩大勒索软件和僵尸网络等威胁的范围。一些主要的已知分布式拒绝服务(DDoS)攻击或分布式拒绝服务是基于IoT设备的。最著名的例子之一是2016年10月由Mirai恶意软件中的物联网僵尸网络引起的1GbpsDDoS网络攻击。黑客关闭了DNS提供商的服务器,导致美国东海岸的大部分互联网瘫痪,包括Twitter、Netflix和CNN等服务。现在,出现了一种新的Mirai变体BotnetMukashi,它针对连接到网络的存储设备上的关键漏洞。随着带宽和5G产生新的威胁,运营商网络的攻击手段不断完善,实时威胁检测显得尤为重要。不幸的是,目前可用的用于保护笔记本电脑和手机等设备的安全解决方案并未准备好保护物联网设备,如监控摄像头和数字信号。除了上述恶意软件之外,物联网设备(例如Zigbee)中使用的通信协议也存在漏洞,攻击者可以利用这些漏洞来瞄准设备并将恶意软件传播到网络中的其他设备,类似于计算机蠕虫。在这项研究中,我们专注于寻找针对物联网设备的低级复杂攻击,特别是深入挖掘物联网设备的固件,以发现后门植入、启动过程的修改以及对固件不同部分的其他恶意操作修改.现在,让我们讨论IoT设备的固件结构,以更好地了解不同的组件。物联网固件结构无论物联网设备的CPU架构如何,启动过程都包括以下几个阶段:引导加载程序、内核和文件系统(如下图所示)。当IoT设备打开时,板载SoC(片上系统)ROM中的代码将控制权传递给引导加载程序,引导加载程序加载内核,然后安装根文件系统。引导加载程序、内核和文件系统也是典型物联网固件的三个主要组件。IoT设备中有多种CPU架构,因此分析和理解固件的不同组件需要很好地理解这些架构及其指令集。IoT设备中最常见的CPU架构是:ARMMIPSPowerPCSPARC可能的攻击场景通过了解固件结构,我们可以考虑攻击者如何在部署难以检测的隐形攻击时利用各种组件。引导加载程序是控制系统的第一个组件,因此,以引导加载程序为目标为攻击者提供了执行恶意任务的绝好机会,这也意味着攻击可以在重启后持续存在。攻击者还可以操纵内核模块,即大多数物联网设备使用的Linux内核。虽然开发人员很容易定制Linux内核并从中选择他们想要的东西,但设法访问和操纵设备固件的攻击者也可以添加或编辑内核模块。继续讨论文件系统,物联网设备中使用了许多常见的文件系统。这些文件系统通常易于使用。攻击者可以从固件中提取、解压、挂载原始文件系统,添加恶意模块,然后使用常用工具再次压缩。例如,SquashFS是Linux的压缩文件系统,在物联网制造商中非常普遍。使用Linux实用程序“squashfs”和“unsquashfs”安装或解压缩SquashFS文件系统非常简单。获取固件获取固件的方法有很多种,有时您希望获取属于具有相同规格的完全相同设备的固件。您还希望以某种特定方式将其部署到设备上。例如,您怀疑用于更新固件的网络已被破坏,并且考虑到固件在供应商服务器和设备之间的转换期间可能被操纵,因此您想要调查更新的固件以验证其完整性.在另一个示例场景中,您可能从第三方供应商处购买了设备,并且怀疑固件的真实性。在绝大多数物联网设备中,制造商没有任何访问固件的途径,甚至无法更新固件,设备将在其生命周期内随固件一起从制造商处发布。在这种情况下,获取确切固件的最可靠方法是从设备本身提取它。这里的主要挑战是这个过程需要特定领域的知识,以及使用嵌入式系统的专业硬件/软件经验。如果您想找到针对物联网设备的复杂攻击,这种方法也缺乏可扩展性。在获取物联网固件的各种方法中,最简单的是从设备制造商的网站下载固件。但是,并非所有制造商都在其网站上发布其固件。通常,大量物联网设备只能通过设备的物理接口或用于管理设备的特定软件应用程序(例如移动应用程序)进行更新。从供应商网站下载固件时的一个常见问题是您可能无法找到特定设备型号的早期版本固件。我们也不要忘记,在许多情况下,发布的固件二进制文件是加密的,只能由设备上安装的旧固件模块解密。了解固件根据维基百科,“固件是一类特定的计算机软件,它提供对设备特定硬件的低级控制。固件既为更复杂的设备软件(允许更多的硬件独立性)提供标准化的操作环境,也为不太复杂的设备软件提供标准化的操作环境。设备,可以充当设备的完整操作系统,执行所有控制、监视和数据处理功能。”虽然固件的主要组件几乎总是相同的,但固件并没有标准架构。固件的主要组件通常是引导加载程序、内核模块和文件系统。但是在固件二进制文件中可以找到许多其他组件,例如例如设备树、数字证书和其他设备特定的资源和组件。一旦从供应商的网站上检索到固件二进制文件,我们就可以开始对其进行分析和反汇编。考虑到固件的特殊性,其分析非常具有挑战性且相当复杂。要获得有关这些挑战的更多详细信息以及如何解决它们,请参阅物联网固件分析部分。在固件中查找可疑元素提取固件组件后,您可以开始查找可疑模块、代码片段或任何对固件的恶意修改组件。首先,非常简单的步骤是根据一组YARA规则扫描文件系统内容,该规则可以基于已知的物联网恶意软件是或启发式规则,您还可以使用防病毒扫描程序扫描提取的文件系统内容。您可以做的其他事情是在文件系统中查找启动脚本,这些脚本包含每次系统启动时加载的模块列表,恶意模块的地址可能已被插入此类脚本以用于恶意目的。通过这种方式,Firmwalker工具可以帮助扫描提取的文件系统以查找可能存在漏洞的文件。另一个需要研究的领域是引导加载程序组件,尽管这更具挑战性。物联网设备中使用了许多常见的引导加载程序,其中最常见的是UBoot。UBoot是高度可定制的,这使得很难确定编译后的代码是否被操作过。使用不常见或自定义的引导加载程序,发现恶意修改变得更加复杂。在下一篇文章中我们将详细介绍如何在物联网设备devices/98530/中寻找复杂恶意软件的具体例子,如需转载请注明出处。
