每周文章分享
2023.01.02-2023.01.08
标题: An Advanced Computing Approach for IoT -Botnet Detection in Industrial Internet of Things
期刊: IEEE Transactions on Industrial Informatics, vol. 18, no. 11, pp. 8298-8306, Nov. 2022.
作者: T. N. Nguyen, Q. -D. Ngo, H. -T. Nguyen and G. L. Nguyen.
分享人: 河海大学——陈乐兰
壹
背景介绍
与在过去的几年里,攻击者一直在积极地向工业物联网(IIoT)中的IoT设备转移。特别是,物联网僵尸网络已经成为物联网安全中最紧迫的问题。物联网僵尸网络检测的主要方法有静态分析、动态分析和混合分析。静态分析是在不执行文件的情况下解析文件的过程,而动态分析则在受控和监视的环境(即沙箱、模拟器等)中执行文件,以记录系统的更改以供进一步研究。本文提出了一种新的物联网僵尸网络检测方法,使用动态分析来改进基于静态分析生成的基于图的特征。
贰
关键技术
本文的目标是通过对物联网可执行文件进行分类来检测恶意文件。为此,本文提出了一种新的物联网僵尸网络检测方法,使用动态分析来改进基于静态分析生成的基于图的特征。具体地说,动态分析用于收集在执行样本期间出现的可打印字符串信息。然后,利用可打印的字符串信息对静态分析得到的图进行有效的遍历,最终得到能够区分良性和恶意样本的图形化特征。
该方法的创新和贡献如下:
1)本文提出了一种新颖有效的方法,将静态分析和动态分析结合起来,在物联网僵尸网络检测和分类中生成基于图形的特征。
2) 在各种基于机器学习的分类器上执行了该方法,以选择最佳的分类模型。
3)在大量的IoT僵尸网络恶意软件上评估本文的方法,并将性能与当前工作进行比较以显示功效。
叁
算法介绍
1. 整体框架
考虑到静态和动态恶意软件检测的优缺点,本文的模型特征选择方法包括动态和静态两个主要阶段,所提出方法的模型图如图1所示。动态阶段通过Lisa IoT沙箱进行ELF文件分析。从沙盒动态分析后生成的报告中,本文专注于利用系统调用数据以及网络数据获得动态可打印字符串信息(PSI)。静态阶段利用了文件的静态特征生成PSI图,然后通过将 PSI 图的每个顶点中收集的字符串与从动态分析中获得的字符串进行比较,将具有动态可打印字符串信息的顶点保留在 PSI 图中,生成PSI根子图。这些保留的顶点具有最重要的任务,可以表示在可执行文件中执行的函数。最终将PSI根子图作为特征,利用分类器将IoT示例分类为恶意软件或正常示例。
图1 所提出方法模型图
2. 函数调用图和PSI图生成
函数调用图(FCG)是一种控制流图,它表示程序中子例程之间的调用关系。函数调用图被定义为有向图G=(V,E),它由顶点集V和边集E组成,其中图中的顶点对应于程序中包括的函数,边表示两个函数之间的调用者-被调用者关系。程序中使用的函数有两种类型,称为本地函数和外部函数。本地函数是可执行的,并由编写者编写以执行特定任务;而外部函数是作者编写的系统或库函数,而本地函数在不同的程序中具有不同的名称,尽管它们具有相似的函数;同时,外部函数的名称在所有程序中是一致的。此外,与本地函数相反,外部函数从不调用任何本地函数,因为它们都来自系统或库。给定一个可执行文件,本文首先使用一个名为DiE的打包器标识符来检查文件是否被打包,以及使用了哪种打包工具。然后,如果识别到这一点,则使用几个解包器来相应地解压缩文件,例如UPX。本文的方法不考虑这些工具无法解压缩的可执行文件。在解包步骤后,本文利用IDA Pro:一个著名的Linux、MacOS和Windows二进制文件的反汇编和调试器,来反汇编样本。在这一步,本文使用IDAPython创建一个插件,提取二进制代码的汇编代码和一组识别的函数,一旦提取了这些相关信息,就构建了函数调用图。这里本文使用广度优先搜索来构建函数调用图。从入口点函数,识别两个函数之间的调用者-被调用者关系并将其添加到图中。由本地函数和外部函数组成的图如图2所示。
图2 Linux.Mirai样本函数调用图的一部分
函数调用图是程序控制流的一种有用的数据表示形式,用于表示程序的每一次可能的运行。调用图通常是复杂的,有大量的节点和边,因此需要更长的计算时间和更多的内存来存储。虽然程序的每个调用关系都在图中表示,但在程序的实际运行中可能永远不会出现一些调用关系。为了将计算的复杂性降到最低,本文通过选择与物联网僵尸网络步骤的操作密切相关的函数和关系来构造PSI图。
在构造PSI图之前,我们首先通过IDA Pro的插件提取存在于二进制文件中的所有PSI。这些PSI可以加密,并且通常包含重要的语义信息,这些信息可以揭示攻击者的意图。例如,在Linux.Mirai中始终存在字符串“/dev/WatchDog;/dev/misc/WatchDog”,暗示僵尸网络试图阻止设备的重启过程。在某些情况下,通过使用相同的混淆机制对提取的字符串进行混淆或加密,如图3所示。
图3 在Linux.Mirai示例中加密或模糊的字符
最后,本文使用一个简单的算法为每个可执行样本生成PSI图。在获得可执行样本的PSI之后,构造了表示每个可执行样本的PSI图。考虑到分类精度和计算复杂度之间的权衡,本文选择包含至少三个字符长度的PSI的函数。
图4显示了从Linux.Bashlite示例的反编译代码中提取的函数调用图和PSI图的示例。从图中可以清楚地看出,PSI图比函数调用图简单得多。与函数调用图的156个顶点和360个边相比,PSI图平均只包含大约16个顶点和60条边。
图4 Linux.Bashlite示例的函数调用图(左)和PSI图(右)
3. PSI根子图生成
在作者以往的研究中,使用PSI根子图的方法旨在分析PSI图中的路和圈。这允许找到描述物联网僵尸网络恶意软件行为的路径或循环。本文继承了PSI根子图生成方法,但结合上面提供的动态分析数据进行了调整。
在该步骤中,通过BFS算法从PSI图的每个顶点中检索PSI根子图集合。本文提出了一种新的算法,只遍历包含上面定义的混合字符串的顶点。本文认为,仅以混合字符串的形式沿顶点遍历不仅减少了算法的执行时间,而且有助于提高物联网僵尸网络的分类和检测的准确性。
首先,在系统调用和PSI图顶点中发现的字符串信息表明,包含这些字符串信息的函数更有可能表现出恶意行为。例如,恶意软件示例具有包含混合字符串的顶点,如Main、getOurIP、Attack_app_http、Killer_Kill_by_port。本文保留这些顶点并去除其他顶点,剔除与分类问题无关的特征,消除冗余特征,消除噪声,同时仍能保证较高的效率和准确率。其次,必须遍历图的一个顶点周围的所有可能的路径,用暴力顶点遍历子图总是耗费资源和时间。此外,由于一般的字符串匹配过程比图中顶点的根子图搜索要便宜得多,因此通过减少必须遍历的子图的顶点数量,可以避免生成PSI根子图的耗时。此外,动态分析过程与静态分析并行进行,因此不会减慢一般模型的速度。同时,提取的信息更少,这意味着更少的向量表示,分类过程中使用的机器学习算法将比传统方法更快地完成训练。然而,经验表明,并不是所有的PSI图都具有相同的系统调用字符串。在这种情况下,为了确保信息不丢失,本文仍然遍历PSI图的所有顶点上的PSI根子图。在此基础上,本文提出了改进的PSI根子图算法,该方法沿用subgraph2vec算法,但根据是否具有动态可打印字符串信息的条件减少了遍历的顶点数。
肆
实验结果
1. 实验设置
本文使用三个数据集来测试所提出的方法。首先是通过IoTPOT收集的4000个物联网样本。其次,使用VirusShare收集3779个物联网样本。最后,为了涵盖良性数据集的多样性,从online Repository收集良性样本集,OpenWRT的固件二进制文件由Tenda,Netgear等其他品牌组成,并使用VirusTotal进行良性测试。之后,本文删除了重复样本,以及IDA Pro损坏或无法拆卸或不支持通过LiSa IoT Sandbox进行动态分析的非ELF样本。因此,本文获得了8330个样本的完整数据集,其中包括5531个IoT botnet样本和2799个IoT良性样本。主要的恶意软件样本属于物联网的两个家族,包括Bashlite和Mirai。但是,为了对物联网设备上的恶意软件进行分类,本文只标记两类:恶意软件和良性样本。表1显示了有关数据集的详细信息。
表1 数据集的详细描述
虽然物联网僵尸网络的数量几乎是物联网良性样本数量的两倍,因为收集物联网良性样本相当困难,但这并不影响所提出方法的通用性。此外,为了说明每一类在数据集中的分布,本文使用了一种称为截断奇异值分解(截断奇异值分解)的降维方法,该方法通常用于稀疏矩阵。虽然数据降维可能会带走大量的信息,但在三维中说明数据点可能有助于显示两个类别的分离。
图5 恶意软件和良性样本在三维数据集中的分布
图5显示了数据集中所有数据点的分布。我们可以看到,大部分恶意点位于图表中间的红色区域,而良性点则分散得多。这意味着,在某种程度上,物联网僵尸网络具有一些相对相似的特征,因此,机器学习分类器能够很好地处理数据集。
2. 实验结果
本文基于以下评价指标来评估分类任务的性能:包括TPR、FPR、准确率、F1-Score、AUC。所使用的分类算法包括支持向量机、KNN、DT、RF和Bagging。这些是物联网恶意软件检测中常用的机器学习分类器。
表2 不同分类器的性能评估
表2显示了不同分类器的性能结果。对于每个分类器,本文通过上面定义的TPR、准确率、F1分数和AUC来表示其性能。在四种分类器中,RF的准确率最高,为98.1%。然而,仅有准确性是不够的。我们需要更全面地审视其他标准。最高的F1得分(99%)表明,与其他分类器相比,RF实现了最好的分类。此外,曲线下面积(AUC)被广泛用于评估分类器在整个运行范围内的性能。AUC在0到1之间变化,AUC越接近1,预测结果越好,1代表完美预测。正如我们在表2中看到的,RF提供的AUC值最好,为0.978。Bagging、支持向量机和DT分别以0.977、0.973和0.972的比例紧随其后。总体而言,这四个分类具有良好的预测性,所有值都超过0.97,也反映了本文提出方法所选择的特征的有效性。此外,机器学习分类器的FRP比率都在4.8%以下,表明误检率是可以接受的,其中RF的误检率最低,为3.3%。所得ROC曲线也显示了良好的分类结果,如图6(a)所示。
图6 (a) 多架构数据集上的ROC曲线 (b) 比较混合方法和静态方法之间的准确性
此外,为了检验混合方法相对于静态方法的改进程度,本文从检测精度和检测时间两个方面对混合方法和静态方法进行了比较。表3显示了两种方法在多体系结构数据集上的分类结果的比较。结果显示,混合方法的所有分类器都可以取得略好于静态方法的结果。最好的分类器随机森林将准确率从97.2%提高到98.2%。如图6(b)所示,静态方法使用两个纯静态特征:PSI和PSI根子图。特别是,PSI特征比PSI根子图和混合方法具有更高的精度。然而,PSI功能很容易被复杂的结构化文件、加密文件阻挡,因此图结构功能在检测物联网僵尸网络方面更高效、更通用。很容易看出,在所有简单的机器学习分类器中,基于混合方法的图结构特征比基于PSI的根子图特征更有效。
表 3 比较混合方法和静态方法的分类性能
表4比较了该方法在特定阶段的耗时情况。结果表明,该方法的处理时间减少了33%-50%。此外,混合方法得到的PSI图的表示向量比静态方法具有更低的维度。由530155个特征组成的向量已减少到316461个特征。因此,包括预处理、训练和测试在内的所有阶段所需的时间成本都比静态方法低得多。
表 4 混合方法和静态方法处理时间的比较 (秒)
因此,实验结果表明,该混合方法不仅能够提高分类模型的效率和准确率,而且能够减少整个模型在物联网僵尸网络检测中的执行时间。
伍
总结
本文结合了静态分析和动态分析的优点,提出了一种有效的方法,可以在混合方法中使用基于PSI的子图特征来改进模型,提高了物联网僵尸网络检测的效率。具体而言,本文使用PSI图特征集成静态和动态分析,动态分析用于收集在执行样本期间出现的可打印字符串信息。然后利用可打印字符串信息对静态分析得到的图进行有效遍历,消除了大约40% 的冗余顶点,将整体算法实现时间缩短了30%-50%。
-END-
==河海大学网络与安全实验室==
微信搜索:Hohai_Network
联系QQ:1084561742
责任编辑:何宇