网络异常流量检测方法及装置与流程

文档序号:26238880发布日期:2021-08-10 16:41阅读:155来源:国知局
网络异常流量检测方法及装置与流程

【技术领域】

本申请涉及一种网络异常流量检测方法及装置,属于计算机技术领域。



背景技术:

近年来,由于信息泄露的情况越来越严重,网络安全问题开始引起人们的广泛注意。而现有的网络流量异常检测系统大多是利用传统的统计方法人为根据数据统计和攻击特征来设计异常检测系统的检测规则,或者利用支持向量机、决策树、adaboost、随机森林和k-means等机器学习方法来进行异常检测。

但是,随着网络环境越来越复杂,研究人员发现每个攻击特征的速度已经远远赶不上攻击类型翻新的速度,所以随着现代网络日趋复杂,传统方法很难满足检测任务的需求。

基于上述问题,现有的网络异常流量检测方法也提出了使用基于cnn、rnn等深度神经网络的方法来进行网络流量异常检测。但是在使用深度学习方法来进行网络流量异常检测的时候,也存在如下两个问题:1、模型训练过程中存在的正负样本数据不平衡问题;2、异常检测系统对新攻击检测能力较弱的问题。



技术实现要素:

本申请提供了一种网络异常流量检测方法及装置,可以解决模型训练过程中存在的正负样本数据不平衡问题、且异常检测系统对新攻击检测能力较弱的问题;通过使用异常流量生成模型可以生成新的异常流量样本,从而使得正负样本均衡,另外通过基于attention机制的bi-lstm模型进行异常流量检测,可以凸显出流量数据序列的相互影响作用,从而提高系统对新攻击检测的能力。本申请提供如下技术方案:

第一方面,提供一种网络异常流量检测方法,所述方法包括:

获取网络流量数据;

获取预先训练的异常流量检测模型,所述异常流量模型基于注意力attention机制的双向长短期记忆bi-lstm模型建立,并使用训练数据集训练得到;所述训练数据集包括正常流量样本和异常流量样本,所述异常流量样本包括使用预先训练的异常流量生成模型生成得到的样本数据;所述异常流程生成模型用于根据已有的异常流量样本生成新的异常流量样本;

将所述网络流量数据输入所述异常流量检测模型中,得到检测结果,所述检测结果用于指示所述网络流量数据是否存在异常。

可选地,所述异常流量检测模型从前之后依次包括:输入层、bi-lstm层、attention层和输出层;所述bi-lstm层包括前向lstm模型和后向lstm模型;

所述输入层将输入的数据分别输入所述前向lstm模型和所述后向lstm模型;

所述前向lstm模型和所述后向lstm模型分别对输入层输入的数据进行计算,得到输出结果;并将所述输出结果输出至所述attention层;

所述attention层用于对所述bi-lstm层输出的所有分量进行加权,并进行权重更新,得到输出结果;并将所述输出结果经过所述输出层处理后,得到所述检测结果。

可选地,所述异常流程生成模型包括:自动编码器、生成器和判别器;

所述自动编码器的输入为标签为异常流量的异常数据,输出为与输入的数据相似的异常数据;

所述生成器的输入为加入噪声后的异常数据,所述加入噪声后的异常数据包括所述自编码器生成异常数据与噪声的结合、以及所述标签为异常流量的异常数据与噪声的结合;输出为与正常数据相似的异常数据;

所述判别器的输入为正常数据和异常数据,输出为对正常数据和异常数据的判别结果;其中,异常数据包括标签为异常流量的异常数据和所述生成器生成的异常数据,所述判别结果用于对所述生成器和所述判别器进行更新。

可选地,所述自动编码器从前至后依次包括输入层、第一隐藏层、第二隐藏层、第三隐藏层和输出层;所述输入层、所述第一隐藏层和所述第二隐藏层构成编码器;所述第三隐藏层和所述输出层构成解码器;

所述编码器用于通过全连接变换的方式将输入数据的维度压缩降低,所述输入层与所述第一隐藏层之间、所述第二隐藏层与所述第三隐藏层之间的激活函数为relu函数,所述relu函数使得所述自动编码器中一部分神经元的输出为0;所述relu函数通过下式表示:

yrelu=max(0,x);

其中,所述x为所述relu函数的输入;

所述解码器的解码过程与所述编码器的编码过程相反,用于输出与所述输入数据的维度相同的异常数据;在解码过程中,所述第三隐藏层和所述输出层之间的激活函数为sigmoid函数,所述sigmoid函数用于将输入的连续实值变换为0至1之间的数值;所述sigmoid函数通过下式表示:

其中,所述x为所述sigmoid函数的输入。

可选地,所述自动编码器在训练时使用的损失函数为均方误差mse,所述mse为预测值与目标值之间差值的平方和的均值,所述mse通过下式表示:

其中,自编码器的输出y={y1,y2,...,yn}是与原有异常流量p={p1,p2,...,pn}相似的异常数据,n与输入的维度相同。

可选地,所述生成器包括三个全连接层,不同全连接层之间使用leakyrelu的激活函数;最后一个全连接层的输出使用tanh函数激活,以使输出数据的范围为从-1至1;

所述leakyrelu的激活函数通过下式表示:

y=max(αx,x);

其中,α设置为固定常数,x为leakyrelu的激活函数的输入;

所述tanh函数通过下式表示:

其中,x为tanh函数的输入。

可选地,所述生成器在训练时使用的损失函数为交叉熵bceloss函数,所述交叉熵bceloss函数通过下式表示:

l(g)=-[ylogx+(1-y)log(1-x)]

其中,x表示所述生成器的输入数据,y表示所述生成器的预测值。

可选地,所述判别器包括三个全连接层,不同全连接层之间使用leakyrelu的激活函数,且leakyrelu函数之后还添加有dropout网络,所述dropout网络用于通过忽略一部分的特征使两个神经元不必每次都在同一个dropout网络中出现;最后一个全连接层的输出使用sigmoid函数激活。

可选地,所述判别器在训练时使用的损失函数为改进后的bceloss函数,所述改进后的bceloss函数在gan模型原有的损失函数的基础上增加了梯度范数,所述改进后的bceloss函数通过下式表示:

其中,ε∈[0,1]且为常数,d(x)表示所述判别器对真实的样本进行判别,z表示随机的输入,g(z)表示所述生成器生成的样本,λ为预设常数。

第二方面,提供一种网络异常流量检测装置,所述装置包括:

数据获取模块,用于获取网络流量数据;

模型获取模块,用于获取预先训练的异常流量检测模型,所述异常流量模型基于注意力attention机制的双向长短期记忆bi-lstm模型建立,并使用训练数据集训练得到;所述训练数据集包括正常流量样本和异常流量样本,所述异常流量样本包括使用预先训练的异常流量生成模型生成得到的样本数据;所述异常流程生成模型用于根据已有的异常流量样本生成新的异常流量样本;

异常检测模块,用于将所述网络流量数据输入所述异常流量检测模型中,得到检测结果,所述检测结果用于指示所述网络流量数据是否存在异常。

本申请的有益效果在于:通过获取网络流量数据;获取预先训练的异常流量检测模型,异常流量模型基于注意力attention机制的双向长短期记忆bi-lstm模型建立,并使用训练数据集训练得到;训练数据集包括正常流量样本和异常流量样本,异常流量样本包括使用预先训练的异常流量生成模型生成得到的样本数据;异常流程生成模型用于根据已有的异常流量样本生成新的异常流量样本;将网络流量数据输入异常流量检测模型中,得到检测结果,检测结果用于指示网络流量数据是否存在异常;可以解决模型训练过程中存在的正负样本数据不平衡问题、且异常检测系统对新攻击检测能力较弱的问题;通过使用异常流量生成模型可以生成新的异常流量样本,从而使得正负样本均衡,另外通过基于attention机制的bi-lstm模型进行异常流量检测,可以凸显出流量数据序列的相互影响作用,从而提高系统对新攻击检测的能力。

上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,并可依照说明书的内容予以实施,以下以本申请的较佳实施例并配合附图详细说明如后。

【附图说明】

图1是本申请一个实施例提供的网络异常流量检测方法的流程图;

图2是本申请一个实施例提供的异常流程生成模型的示意图;

图3是本申请一个实施例提供的自动编码器的示意图;

图4是本申请一个实施例提供的生成器的示意图;

图5是本申请一个实施例提供的判别器的示意图;

图6是本申请一个实施例提供的基于attention机制的bi-lstm模型的示意图;

图7是本申请一个实施例提供的lstm模型框架的示意图;

图8是本申请一个实施例提供的attention模型的示意图;

图9是本申请一个实施例提供的网络异常流量检测装置的框图。

【具体实施方式】

下面结合附图和实施例,对本申请的具体实施方式作进一步详细描述。以下实施例用于说明本申请,但不用来限制本申请的范围。

由于网络环境越来越复杂,所以网络安全受到了越来越多的关注。为了防止系统被破坏或者数据被盗取,很多的网络系统都会使用异常检测系统来检测进入系统的流量中是否含有异常流量。异常检测系统辨别进入系统的流量是否正常,以达到过滤各种攻击的目的,防止影响后续系统的正常运行。但是,现在很多的异常检测系统基本上都是分为两种:基于规则和基于攻击特性,这两者都是利用已知的一些规则和攻击特征来设计检测方法来检测异常流量。

但是,这些方法大多是利用单个样本的数据特征进行特征提取与学习,而忽略了样本之间的关联关系。在实际的网络情况下,异常情况常会体现在多个流量样本的关联关系上,所以并不能忽略网络流量的时间序列特征。

为了进一步提高异常检测的准确率和减少误报率,考虑到网络流量的时序特征,一些异常流量检测系统开始尝试使用长短期记忆模型(longshort-termmemory,lstm)来进行异常检测。使用lstm模型虽然能解决序列之间关系的问题,但也存在一定的弊端:采用编码器-解码器结构的神经网络模型需要将输入序列中的必要信息表示为一个固定长度的向量,而当输入序列很长时则难以保留全部的必要信息。这样限制了模型的性能,尤其是当输入序列比较长时,模型的性能会变得很差,同时就会忽略输入数据的各项特征项对于模型检测结果的影响。而注意力(attention)机制的基本方法就是打破在编解码时过于依赖于内部一个固定长度向量的限制,而是通过保留lstm编码器对输入序列的中间输出结果,然后训练一个模型来对这些输入进行选择性的学习,并且在模型输出时将输出序列与之进行关联,所以attention机制可以有效地解决lstm的这一弊端。同时,bi-lstm模型是对lstm模型处理序列关系的改进,通过双向的lstm模型能够加强数据序列的关联关系对结果的影响。

从以上对于异常流量数据样本之间的关系以及lstm存在弊端的分析,使用了一种优化的lstm模型:将attention机制引入模型中,使得lstm模型更好的表达特征项对结果的影响;同时,将lstm模型更换为bi-lstm模型,这样可以凸显出流量数据序列的相互影响作用。

下面对本申请提出的基于attention机制的双向长短期记忆bi-lstm模型进行网络异常流量检测的方法进行介绍。

可选地,本申请以各个实施例的执行主体为具有计算能力的电子设备为例进行说明,该电子设备可以为终端或服务器,该终端可以为计算机、笔记本电脑、平板电脑等,本实施例不对终端的类型和电子设备的类型作限定。电子设备与多个边缘设备通信相连,从而可以与边缘设备之间进行通信,比如:为边缘设备分配学习任务,向边缘设备发送全局模型等。

图1是本申请一个实施例提供的网络异常流量检测方法的流程图。该方法至少包括以下几个步骤:

步骤101,获取网络流量数据。

网络流量数据是待进行网络异常流量检测的数据,该网络流量数据可以为电子设备实际运行时产生的数据。

步骤102,获取预先训练的异常流量检测模型,该异常流量模型基于attention机制的bi-lstm模型建立,并使用训练数据集训练得到;该训练数据集包括正常流量样本和异常流量样本,该异常流量样本包括使用预先训练的异常流量生成模型生成得到的样本数据;该异常流程生成模型用于根据已有的异常流量样本生成新的异常流量样本。

本实施例中,异常流程生成模型通过对现有基于gan的流量生成算法缺陷的分析,提出了一种新的gan模型,ae-wgan模型。该模型的目标是生成对抗样本,这些样本不仅具有攻击特性,而且可以逃避各种传统侵检测系统(intrusiondetectionsystem,ids)的检测。

参考图2,异常流程生成模型包括三个部分,分别为:自动编码器(autoencoder,ae)21、生成器22和判别器23。

自动编码器21的输入为标签为异常流量的异常数据,输出为与输入的数据相似的异常数据。自动编码器21利用模型对数据集中的正样本(异常流量)进行训练,生成具有相同攻击特征的新的正样本。

生成器22的输入为加入噪声后的异常数据,加入噪声后的异常数据包括自编码器生成异常数据与噪声的结合、以及标签为异常流量的异常数据与噪声的结合;输出为与正常数据相似的异常数据。生成器22用于使用原始数据中的正样本和经过ae模型21生成的正样本的集合,利用生成器22生成越来越接近负样本(正常流量)的正样本。

判别器23的输入为正常数据和异常数据,输出为对正常数据和异常数据的判别结果;其中,异常数据包括标签为异常流量的异常数据和生成器生成的异常数据,判别结果用于对生成器22和判别器23进行更新。判别器23能够辨别原始的负样本和生成器生成的正样本。

异常流程生成模型的整体训练过程包括:将数据集中标签为异常流量的数据输入自动编码器21进行训练,输出为相似的异常数据,再将所有的异常数据加上随机生成的噪声作为生成器的输入,输出为经过生成器训练而生成的数据。生成器22输出的数据作为标签为“1”的异常数据和原数据集中标签为“0”的正常数据输入判别器23,判别器23将输入数据进行训练,输出判别器23对这些数据的判别结果,然后将损失分别返回给生成器22和判别器23,以分别更新两个模型。

下面将分三个部分详细介绍ae-wgan模型。

利用自动编码器的生成功能,对数据集中的异常流量数据进行训练,利用这些数据生成相似的异常数据。自编码器是一种自监督学习,ae-wgan中的自编码器结构如图3所示。自动编码器从前至后依次包括输入层、第一隐藏层、第二隐藏层、第三隐藏层和输出层;输入层、第一隐藏层和第二隐藏层构成编码器encoder;第三隐藏层和输出层构成解码器decoder。

自编码的输入为异常流量数据x={x1,x2,...,xn},其中,n表示异常数据中去除具有攻击特征的其他数据特征维度。

编码器用于通过全连接变换的方式将输入数据的维度压缩降低。编码器的编码过程为:

h1=f1θ(x)=max(0,w1x+b1);

h2=f2θ2(h1)=w2h1+b2

其中,h1表示第一隐藏层、h2表示第二隐藏层,其中,w1和b1表示第一隐藏层中需要训练的权重参数,w2和b2表示第二隐藏层中需要训练的权重参数。

自动编码器的输入层与第一隐藏层之间、第二隐藏层与第三隐藏层之间的激活函数为relu函数,relu函数使得自动编码器中一部分神经元的输出为0,可以减少参数之间的依赖,缓解了过拟合的发生,而且可以提高收敛速度。relu函数通过下式表示:

yrelu=max(0,x);

其中,x为relu函数的输入。

解码器的解码过程与编码器的编码过程相反,解码过程通过下式表示:

h3=f3θ3(h2)=max(0,w3h2+b3)

其中,h3表示第三隐藏层、y表示输出层,其中,w3和b3表示第三隐藏层中需要训练的权重参数,w4和b4表示输出层中需要训练的权重参数。

解码器用于输出与输入数据的维度相同的异常数据;在解码过程中,第三隐藏层和输出层之间的激活函数为sigmoid函数,sigmoid函数用于将输入的连续实值变换为0至1之间的数值。在解码过程中隐藏层h1和h2,h2和h3之间的激活函数还是使用relu函数。sigmoid函数通过下式表示:

其中,x为sigmoid函数的输入。

自动编码器在训练时利用自动编码器的输出数据和输入数据进行损失的计算。使用的损失函数为均方误差(mean-squareerror,mse),mse为预测值与目标值之间差值的平方和的均值,mse通过下式表示:

其中,自编码器的输出y={y1,y2,...,yn}是与原有异常流量p={p1,p2,...,pn}相似的异常数据,n与输入的维度相同。

生成器的作用是生成迷惑判别器的异常数据,通过不断更新生成器,使其能生成与正常流量相似的数据。

参考图4,生成器包括三个全连接层fullyconnection,不同全连接层之间使用leakyrelu的激活函数。选择leakyrelu函数可以解决relu函数存在的deadrelu问题,即:某些神经元可能永远不会被激活,导致相应的参数永远不能被更新。为此,leakyrelu函数将relu函数的前半段设置成了αx而不是0,所以leakyrelu激活函数的公式如下:

leakyrelu的激活函数通过下式表示:

y=max(αx,x);

其中,α设置为固定常数,x为leakyrelu的激活函数的输入。

生成器中最后一个全连接层的输出使用tanh函数激活,以使输出数据的范围为从-1至1。tanh函数通过下式表示:

其中,x为tanh函数的输入。

生成器的输入是x∈a'∪b':a是原始数据集中的异常数据,b是自编码器生成的异常数据,然后,在a和b分别添加了随机生成的噪声成为a'和b',输入x为a'和b'的并集。生成器的输出则为与正常流量相似的异常流量。

生成器在训练时使用的损失函数为交叉熵bceloss函数,bceloss函数通过下式表示:

l(g)=-[ylogx+(1-y)log(1-x)]

其中,x表示生成器的输入数据,y表示生成器的预测值。

判别器的作用是判别输入的网络流量是真实流量还是生成器生成的流量,将判别结果输出,判别为真实数据的输出接近“0”,欺骗性的数据接近“1”,最后要使得判别器难以判别输入流量数据的真假,即输出结果接近“0.5”。判别器的输入为t∈c∪d,其中c表示真实正常数据的集合,d表示生成器生成的具有欺骗性的数据的集合。

参考图5,判别器包括三个全连接层fullyconnection,不同全连接层之间使用leakyrelu的激活函数,且leakyrelu函数之后还添加有dropout网络,dropout网络用于通过忽略一部分的特征使两个神经元不必每次都在同一个dropout网络中出现,从而减少了出现过拟合的情况。最后一个全连接层的输出使用sigmoid函数激活。

判别器在训练时使用的损失函数为改进后的bceloss函数,改进后的bceloss函数在gan模型原有的损失函数的基础上增加了梯度范数,使其在计算损失的过程中减少模型建模能力弱化和梯度爆炸或消失的情况。改进后的bceloss函数通过下式表示:

其中,ε∈[0,1]且为常数,d(x)表示判别器对真实的样本进行判别,z表示随机的输入,g(z)表示生成器生成的样本,λ为预设常数。

通过上述内容训练得到异常流量生成模型后,可以生成正负样本均衡的训练数据集,并使用该训练数据集训练得到异常流量检测模型。

本实施例中,为了提高异常检测的准确率,提出将基于attention机制的bi-lstm方法运用在网络异常流量检测领域。bi-lstm模型的基本思想是将每个训练序列发送到前向和后向序列的lstm网络中,这两个网络都连接到同一个输出层,这样输出层可以保存每个序列前后向的不同信息。这就意味着对于给定的序列中的每一个点,网络模型在其前后的所有点上都有完整的、有序的信息,即表示对于每条网络流量数据都与前后的流量数据相关联,同时前后流量数据都有该条数据的完整信息。所以,bi-lstm模型比lstm模型更加能够保存和运用每条数据的信息,同时更能体现每条网络流量数据在序列顺序对检测结果的影响。

attention机制的实现是通过保留lstm编码器对输入序列的中间输出结果,然后训练一个模型来对这些输入进行选择性的学习并且在模型输出时将输出序列与之进行关联。根据softattention模型对所有分量进行加权并且可以进行权重更新,选择该模型作为attention方法的模型。

参考图6,异常流量检测模型从前之后依次包括:输入层inputlayer、bi-lstm层、attention层和输出层outputlayer;bi-lstm层包括前向lstm模型和后向lstm模型。

输入层将输入的数据分别输入前向lstm模型和后向lstm模型。比如:模型的输入为经过预处理的异常流量数据x={x1,x2,...,xt},其中xi表示第i条异常流量数据,t表示输入数据的数量。

bi-lstm层:输入x分别进入前向lstm模型和后向lstm模型,lstm的模型结构如图7所示,lstm模型结构与rnn的相似,每个序列索引位置t都有一个隐藏状态ht,隐藏状态ht由xt和ht-1得到。得到ht后一方面用于当前层的模型损失计算,另一方面用于计算下一层的ht+1。每个输入xi∈x同时进入在前向lstm模型和后向lstm模型,两个模型分别输出最后将作为bi-lstm层对于每个输入xi的输出结果。前向lstm模型和后向lstm模型分别对输入层输入的数据进行计算,得到输出结果;并将输出结果输出至attention层。

attention层用于对bi-lstm层输出的所有分量进行加权,并进行权重更新,得到输出结果;并将输出结果经过输出层处理后,得到检测结果。具体地,attention层将bi-lstm层的输出向量h=[h1,h2,...,ht]作为本层的输入,再运用attention机制的方法进行计算,attention层的结构参考图8,attention层的计算过程通过下式表示:

m=wttanh(h)

α=softmax(m)

y=hαt

其中,w表示attention层的权重参数,y表示attention层的输出。

步骤103,将网络流量数据输入异常流量检测模型中,得到检测结果,检测结果用于指示网络流量数据是否存在异常。

综上所述,本实施例提供的网络异常流量检测方法,通过获取网络流量数据;获取预先训练的异常流量检测模型,异常流量模型基于注意力attention机制的双向长短期记忆bi-lstm模型建立,并使用训练数据集训练得到;训练数据集包括正常流量样本和异常流量样本,异常流量样本包括使用预先训练的异常流量生成模型生成得到的样本数据;异常流程生成模型用于根据已有的异常流量样本生成新的异常流量样本;将网络流量数据输入异常流量检测模型中,得到检测结果,检测结果用于指示网络流量数据是否存在异常;可以解决模型训练过程中存在的正负样本数据不平衡问题、且异常检测系统对新攻击检测能力较弱的问题;通过使用异常流量生成模型可以生成新的异常流量样本,从而使得正负样本均衡,另外通过基于attention机制的bi-lstm模型进行异常流量检测,可以凸显出流量数据序列的相互影响作用,从而提高系统对新攻击检测的能力。

图9是本申请一个实施例提供的网络异常流量检测装置的框图。该装置至少包括以下几个模块:数据获取模块910、模型获取模块920和异常检测模块930。

数据获取模块910,用于获取网络流量数据;

模型获取模块920,用于获取预先训练的异常流量检测模型,所述异常流量模型基于注意力attention机制的双向长短期记忆bi-lstm模型建立,并使用训练数据集训练得到;所述训练数据集包括正常流量样本和异常流量样本,所述异常流量样本包括使用预先训练的异常流量生成模型生成得到的样本数据;所述异常流程生成模型用于根据已有的异常流量样本生成新的异常流量样本;

异常检测模块930,用于将所述网络流量数据输入所述异常流量检测模型中,得到检测结果,所述检测结果用于指示所述网络流量数据是否存在异常。

相关细节参考上述方法实施例。

需要说明的是:上述实施例中提供的网络异常流量检测装置在进行网络异常流量检测时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将网络异常流量检测装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的网络异常流量检测装置与网络异常流量检测方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

可选地,本申请还提供有一种计算机可读存储介质,所述计算机可读存储介质中存储有程序,所述程序由处理器加载并执行以实现上述方法实施例的网络异常流量检测方法。

可选地,本申请还提供有一种计算机产品,该计算机产品包括计算机可读存储介质,所述计算机可读存储介质中存储有程序,所述程序由处理器加载并执行以实现上述方法实施例的网络异常流量检测方法。

以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

上述仅为本申请的一个具体实施方式,其它基于本申请构思的前提下做出的任何改进都视为本申请的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1