2. 中国科学院 沈阳计算技术研究所, 沈阳 110168
2. Shenyang Institute of Computing Technology, Chinese Academy of Sciences, Shenyang 110168, China
随着科学技术的迅速发展, 人们的日常生活中也逐渐离不开网络. 由于网络信息不断产生和变化, 使得网络安全问题也成为计算机领域的一个热门的研究方向. 目前网络攻击发生在我们生活中的方方面面, 加之网络攻击类型的千变万化, 网络攻击者通过各种不同的手段攻击各种公共设施和用户个人隐私信息[1], 比如“橙风单车”投用第二天就遭到黑客攻击, 导致系统瘫痪, 用户无法正常体验、使用. 随着信息化时代的发展, 目前网络数据已经不仅仅是静态的单个节点的影响, 而是以不断变化的形式存在, 因此传统的网络异常检测算法已不能满足数据实时、准确的检测要求, 对不断更新的新的网络攻击手段无法迅速的做出相应的裁决和相应, 因此我们需要更加快速和准确的检测网络异常的方法, 已保证在高速网络的数据到来时能够对数据及时做出相应[2].
目前常用的网络入侵检测的方法主要有两种: 误用检测和异常检测[3]. 误用检测需要事先建立网络异常的特征规则库, 并将采集到的每个数据包与规则库的每一条规则进行一一匹配, 根据此判断网络中是否存在异常. 误用检测的优点是检测率高、误报率低, 缺点是对未知特征的新异常行为, 误用检测就表现毫无应对能力. 而异常检测完全不同于误用检测, 异常检测所关注的是网络流量的宏观统计特证, 异常检测首先需要提取或者概括网络流量的统计特征, 据此建立一个正常模型. 是将当前产生的活动模型与正常模型作比较, 当当前的活动模型与正常活动模型不匹配时, 异常检测就会发出警报. 异常检测的优点是可以检测出以前从未出现的网络攻击方法, 但缺点是误报率较高[4,5].
1 目前的研究近年来, 为了应对网络异常入侵的多样性, 加之为提高网络异常检测的检测率, 降低网络异常检测的误报率, 国内外的学者对此已经做了大量的研究工作, 目前网络异常检测方法大致分为两大方面: 动态网络异常检测和静态网络异常检测.
在静态网络异常检测中, 最为代表的是基于阈值的网络检测方法. 在基于阈值检测的方法中, Maxion等 [6]提出根据历史网络流量的特征建立阈值, 一旦超出此阈值即判断为网络异常[7].
在动态网络异常检测中, 典型的方法即基于统计的检测方法, 比如基于用户画像的异常行为检测模型[8]中提出引入用户画像技术, 实现了入侵检测粒度的细化, 并将大数据技术引入网络安全领域, 证明了基于用户画像的入侵检测模型有较好的实用价值. 基于隐马尔可夫模型和条件熵的异常流量检测方法研究中[1]中提出运用统计学的方法对流量分类, 最后通过输出概率值来判断是否是异常类型, 该方法明显的提高了异常检测的精确度和检测率, 但是只能对流量进行笼统的分类为异常和正常, 无法做到更精细的划分.
但由于网络流量不仅存在相似性和周期性的特点, 还存在多点之间的连接性, 因此当网络攻击者对我们的网络进行入侵时, 往往不是单独的某个点对我们的网络造成极大的攻击, 而是多个网络攻击者联合攻击对我们的网络造成网络崩溃, 网络节点关系如图1所示. 因此目前的单点网络异常检测已满足不了现阶段对网络攻击者的防御和对其预测. 另外, “网络异常”也是一个很模糊的概念, 工控网络异常检测通常表现为结构和属性的变化, 异常当然也包括网络节点本身的异常以及网络变化的异常, 因此在本文中, 我们基于工控网络中的多点连接性提出了基于图神经网络的工控网络异常检测算法, 将图神经网络应用于工控网络异常检测, 这样就可以同时抓取工控网络结构、属性以及其周围点邻域状态上的异常. 从而使算法能够脱离单点的网络异常检测.
最终将该模型与单点检测算法比较, 证明了该算法具有较高的准确率, 验证了该算法的有效性.
2 基于图神经网络的工控网络异常检测 2.1 问题描述对于我们日常生活中的网络拓扑结构, 工控网络节点的结构特征和属性以及工控网络节点之间的连接关系, 本文中提出的基于图神经网络的工控网络异常检测算法的目标是: 充分利用工控网络节点之间的属性信息和工控网络拓扑结构的信息, 挖掘工控网络节点之间的隐含的交互信息, 并学习每个工控网络节点的类标签. 表1给出本文中相关的符号定义.
2.2 图神经网络
图神经网络(Graph Neural Network, GNN) 是近几年出现的一类以图结构作为网络输入的神经网络模型[9]. 由于图神经网络处理的数据结构是图, 而图是一种主要针对非欧几里得空间结构的数据进行处理, 具有以下优势:
(1)对输入元素数据的顺序不敏感;
(2)在图计算过程中, 节点的表示受周围邻居节点的结构和属性的影响, 而图本身的连接不变;
(3)将网络节点表示为图结构表示, 便于进行基于图的推理, 对网络异常检测具有天然的优势.
同时受到网络嵌入的启发, 本文旨在学习一个图神经网络映射函数, 通过该映射函数将图中的某一节点
2.3 基于图神经网络的网络异常检测
图神经网络模型由三大部分组成: 图节点状态向量获取模块、迭代更新模块和损失函数模块[10].
(1) 图节点状态向量获取
首先每个节点
${H_v} = f\left( {{X_v},{X_{\rm co}},{H_{\rm ne}},{X_{\rm ne}}} \right)$ | (1) |
其中,
(2) 迭代更新
根据上述算法可以获取到每个节点的d维状态向量, 该向量蕴含了连接节点的特征信息以及节点之间的交互信息. 由于我们要求出
${H^{t + 1}} = f\left( {{H^t},X} \right)$ | (2) |
其中, H和X表示所有h和x的连接.
然而对于每个节点, 其邻域节点的交互信息固然重要, 但其自身节点的原始信息也包含了很多重要的状态信息. 因此将节点的状态向量
$ {O_v} = g\left( {{H_v},{X_v}} \right) $ | (3) |
其中,
(3) 损失函数
给定一个图
$softmax {\left( x \right)_i} = \dfrac{{{e^{{x_i}}}}}{{\displaystyle\sum\nolimits_{k = 1}^K {{e^{{x_k}}}} }}$ | (4) |
最后在该模型中, 我们使用交叉熵计算模型的损失loss, 其计算公式如下:
$loss = \displaystyle\sum\nolimits_{i = 1}^n {{y_c}\log \left( {softmax {{\left( x \right)}_i}} \right)} $ | (5) |
其中, y表示真实的标签.
图神经网络的算法进行节点特征表示的过程图如图3所示.
2.4 K-means数据聚类聚类算法是一个将数据集划分成若干个聚类的过程, 使得同一聚类的类内相似性最大, 类间相似性最小. 相似性的度量我们选用基于距离的方法. 在本文中我们选用欧几里得距离, 计算公式如下:
$d\left( {i,j} \right) = \sqrt {|{x_{i1}} - {x_{j1}}{|^2} + |{x_{i2}} - {x_{j2}}{|^2} + \cdots + |{x_{ip}} - {x_{jp}}{|^2}} $ | (6) |
常用的聚类算法包括K均值聚类、密度聚类、层次聚类. 在本文中我们选择K-means聚类, K-means聚类算法是将n个样本点划分成k个子集, 每个子集都代表一个聚类.
K-means算法的步骤:
① 在已研究的基础上, 将所有的样本根据类标种类分为k个类, 记为k个种子聚类中心.
② 计算每个样本与种子聚类中心之间的距离, 并把每个样本点分配到距离最近的聚类中心点, 即聚类中心及分配的样本点代表一个簇.
③ 计算每个簇的均值作为每个簇的质心, 重复步骤②, 直至质心不再发生变化, 确定k的值.
将上述图神经网络的网络节点输出特征作为K-means聚类的输入, 判断网络节点是否是异常节点.
3 实验部分 3.1 数据说明与预处理
为了评价本文提出的网络异常检测算法, 使用Libpcap网络工具获取中科院沈阳计算技术研究所使用的内部网络数据, 主要是原始网络的流量数据.
在本文中选取TCP连接的基本特征比如连续时间, 协议类型、传送的字节数、连接正常或错误的状态和TCP连接的内容特征比如登录尝试失败的次数、成功登录的次数, root用户访问次数和文件创建操作次数等属性对网络节点数据进行分析.
为了剔除数据集中的“脏数据”, 与网络节点异常无关的数据、重复采集的数据、数据格式错误或null值的数据, 需要先对数据进行预处理, 找出数据的特征表示, 为算法提供可靠的数据保证. 对于数据的预处理主要包括两大部分, 首先利用Python 3将获取的字符型特征转换为数值型特征, 其次对数据进行标准化和归一化处理. 在本文中使用的是min-max标准化方法, 即对原始数据的线性变换, 使数据结果归一化到[0,1]区间转换函数如下:
${y_i} = \frac{{{x_i} - \mathop {\min }\limits_{i \le j \le n} \left\{ {{x_j}} \right\}}}{{\mathop {\max }\limits_{i \le j \le n} \left\{ {{x_j}} \right\} - \mathop {\min }\limits_{i \le j \le n} \left\{ {{x_j}} \right\}}}$ | (7) |
其中, max为样本数据的最大值, min为样本数据的最小值.
3.2 实验平台使用基于Python3环境的Tensorflow开源深度学习框架实现图神经网络的模型构建与异常检测. 本文实验采用PC机, 内存为16 GB, 操作系统为Windows、Linux.
3.3 实验结果与分析在该网络异常检测算法中, 模型的结果评估使用准确率和误判率来评价模型的性能. 具体如表2.
准确率表示为:
$Acc = \frac{{TP + TN}}{{TP + TN + FP + FN}}$ | (8) |
传统聚类单点检测算法得到的聚类结果图和经图神经网络处理后网络节点异常检测结果分别如图4和图5所示.
本文模型在准确率和误报率与其他传统网络异常检测模型比较, 具体如表3.
4 结束语
网络异常检测已经成为网络安全的一个重要研究方向, 本文提出的基于图神经网络的网络异常检测算法可以融合网络节点自身属性以及其邻域节点的属性信息进行训练, 弥补了以往的单节点的动态预测方法的不足, 实验证明该方法具有较好的鲁棒性, 但是该算法也具有一定的局限性, 对于进一步的节点之间的相关性研究及图神经网络更精确精准的异常检测是我们下一步的研究重点.
[1] |
肖林英, 王怀彬. 基于隐马尔可夫模型和条件熵的异常流量检测方法研究. 天津理工大学学报, 2019, 35(5): 18-22, 28. |
[2] |
陈胜, 朱国胜, 祁小云, 等. 基于深度神经网络的自定义用户异常行为检测. 计算机科学, 2019, 46(S2): 442-445, 472. |
[3] |
Bykova M, Ostermann S, Tjaden B. Detecting network intrusions via a statistical analysis of network packet characteristics. Proceedings of the 33rd Southeastern Symposium on System Theory. Athens, OH, USA. 2001. 309–314.
|
[4] |
李洋, 方滨兴, 郭莉, 等. 基于直推式方法的网络异常检测方法. 软件学报, 2007, 18(10): 2595-2604. |
[5] |
王子玉. 网络异常检测算法研究[博士学位论文]. 北京: 清华大学, 2017.
|
[6] |
Maxion RA, Feather FE. A case study of Ethernet anomalies in a distributed computing environment. IEEE Transactions on Reliability, 1990, 39(4): 433-443. DOI:10.1109/24.58721 |
[7] |
邹柏贤. 一种网络异常实时检测方法. 计算机学报, 2003, 26(8): 940-947. |
[8] |
赵刚, 姚兴仁. 基于用户画像的异常行为检测模型. 信息网络安全, 2017(7): 18-24. |
[9] |
Battaglia PW, Hamrick JB, Bapst V, et al. Relational inductive biases, deep learning, and graph networks. arXiv: 1806.01261, 2018.
|
[10] |
郝志峰, 柯妍蓉, 李烁, 等. 基于图编码网络的社交网络节点分类方法. 计算机应用, 2020, 40(1): 188-195. |