发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的用于监控命令是否异常的设备和相应的用于监控命令是否异常的设备方法。
可选的,本发明实施例提供一种用于监控命令是否异常的设备,包括:接收器,被配置为接收受监控的命令;过滤器,被配置为对所述接收的命令采用预置的可疑规则进行过滤,将被所述可疑规则命中的命令输入分类器;以及分类器,被配置为根据已有分类模型的训练样本集,对从所述过滤器新输入至分类器的命令进行分类,至少识别出异常命令和正常命令。
可选的,所述分类器包括:第一切分模块,被配置为将从所述过滤器新输入至分类器的命令切分为若干特征词,获得该命令包含的各特征词;先验获取模块,被配置为获取在已有分类模型的训练样本集中、当一条命令是异常命令时其包含某一特征词wn的先验概率P(wn|y2),和当一条命令是正常命令时其包含某一特征词wn的先验概率P(wn|y1),以及在已有训练样本集中出现异常命令的先验概率P(y2)和出现正常命令的先验概率P(y1);概率分析模块,被配置为根据所述命令包含的各特征词,以及与所述各特征词相关的先验概率,获得所述命令分别为异常命令的概率和正常命令的概率;以及类别识别模块,被配置为至少根据所述命令是异常命令的概率和正常命令的概率,识别所述命令所属类别,所述类别至少包括异常命令和正常命令两类。
可选的,所述先验获取模块还被配置为获取在已有分类模型的训练样本集中、当一条命令是未知命令时其包含某一特征词wn的先验概率P(wn|y3),以及在已有训练样本集中出现未知命令的先验概率P(y3);所述概率分析模块还被配置为获得所述命令是未知命令的概率;以及所述类别识别模块还被配置为识别所述命令是否属于未知命令的类别。
可选的,所述概率分析模块具体被配置为根据命令所包含的各特征,以及与所述各特征相关的先验概率,基于贝叶斯原理或费舍尔原理获得所述命令是异常命令的概率和该命令是正常命令的概率。
可选的,所述分类器具体被配置为基于贝叶斯原理或费舍尔原理或决策树原理或逻辑回归原理或偏最小二乘法PSL原理的分类器。
可选的,还包括:学习器,被配置为至少将经所述分类器进行过分类的命令与已有训练样本集合并后进行机器学习,更新所述分类器使用的已有训练样本集。
可选的,所述学习器具体包括:合并模块,被配置为至少将经所述分类器进行过分类的命令合并至已有分类模型的训练样本集;第二切分模块,被配置为将所述训练样本集中的各命令切分为若干特征词;分类标记模块,被配置为对所述训练样本集中的命令标记分类结果,所述分类结果至少包括异常命令和正常命令两类;以及建模模块,统计在相应类别中每个特征词的概率分布和命令所属类别的概率分布,建立分类模型,为所述分类器提供所需的先验概率。
可选的,所述分类标记模块在根据所述过滤器和/或分类器的输出结果为所述各命令标记分类结果之外,还被配置为对所述标记的分类结果进行修正。
可选的,还包括:告警器,被配置为至少根据所述分类器输出的结果确定是否进行告警提示。
可选的,所述过滤器包括:规则交互接口,被配置为接收预先根据常见危险操作的特征生成的可疑规则,每条可疑规则包括至少一个危险操作的特征标识,将所述可疑规则提供给匹配模块;以及匹配模块,被配置为根据所述规则交互接口提供的可疑规则,对所述接收器接收的命令进行过滤,获得被所述可疑规则命中的命令,并输入分类器。
可选的,所述可疑规则包括下述至少一个危险操作的特征标识:添加账户;打开、修改或删除敏感文件的关键属性;查看或修改敏感文件的密码。
可选的,所述过滤器还被配置为输出被所述可疑规则命中的命令的告警权值,所述告警权值基于该条可疑规则的总体命中率获得。
可选的,所述告警器具体被配置为根据所述过滤器输出的告警权值和所述分类器输出的结果共同确定是否进行告警提示。
本发明实施例还提供了一种用于监控命令是否异常的方法,包括:接收受监控的命令;对所述受监控的命令采用预置的可疑规则进行过滤,获得被所述可疑规则命中的命令;根据已有分类模型的训练样本集,对被所述可疑规则命中的命令进行分类,至少识别出异常命令和正常命令;
可选的,所述对被可疑规则命中的命令进行分类的步骤包括:将所述命令切分为若干特征词,获得该命令包含的各特征词;获取在已有分类模型的训练样本集中、当一条命令是异常命令时其包含某一特征词wn的先验概率P(wn|y2),和当一条命令是正常命令时其包含某一特征词wn的先验概率P(wn|y1),以及在已有训练样本集中出现异常命令的先验概率P(y2)和出现正常命令的先验概率P(y1);根据所述命令包含的各特征词,以及与所述各特征词相关的先验概率,获得所述命令分别为异常命令的概率和正常命令的概率;以及至少根据所述命令是异常命令的概率和正常命令的概率,识别所述命令所属类别,所述类别至少包括异常命令和正常命令两类。
可选的,还包括:获取在已有分类模型的训练样本集中、当一条命令是未知命令时其包含某一特征词wn的先验概率P(wn|y3),以及在已有训练样本集中出现未知命令的先验概率P(y3);获得所述命令是未知命令的概率;以及至少根据所述命令是未知命令的概率,识别所述命令是否属于未知命令的类别。
可选的,所述获得命令分别为异常命令的概率和正常命令的概率的步骤包括:基于贝叶斯原理或费舍尔原理获得所述命令是异常命令的概率和该命令是正常命令的概率。
可选的,还包括:将进行过分类的命令与已有训练样本集合并后进行机器学习,更新进行分类时使用的已有训练样本集。
可选的,所述进行机器学习的步骤包括:至少将进行过分类的命令合并至已有分类模型的训练样本集;将所述训练样本集中的各命令切分为若干特征词;对所述训练样本集中的命令标记分类结果,所述分类结果至少包括异常命令和正常命令两类;以及统计在相应类别中每个特征词的概率分布和命令所属类别的概率分布,建立分类模型,为进行分类时提供所需的先验概率。
可选的,还包括:至少根据分类结果确定是否进行告警提示。
可选的,所述对受监控的命令采用预置的可疑规则进行过滤的步骤包括:接收预先根据常见危险操作的特征生成的可疑规则,每条可疑规则包括至少一个危险操作的特征标识;根据所述可疑规则,对所述接收器接收的命令进行过滤。
可选的,所述可疑规则包括下述至少一个危险操作的特征标识:添加账户;打开、修改或删除敏感文件的关键属性;查看或修改敏感文件的密码。
可选的,在对所述受监控的命令采用预置的可疑规则进行过滤的步骤还包括:获得被所述可疑规则命中的命令的告警权值,所述告警权值基于该条可疑规则的总体命中率获得。
可选的,所述至少根据分类结果确定是否进行告警提示的步骤包括:根据所述被可疑规则命中的命令的告警权值和对应的分类结果共同确定是否进行告警提示。
根据本发明的一种用于监控命令是否异常的设备,可以接收在网络系统上输入的受监控的命令,进而对接收到的命令采用预置的可疑规则进行过滤,并将被可以规则命中的命令作为可疑命令输入分类器,再由分类器对可疑命令进行进一步的检测,识别出其是正常命令还是异常命令,通过该用于监控命令是否异常的设备,能够对在网络系统上输入的命令及时地进行判断,且通过预置的可疑规则进行判断后,还使用分类器,对可疑规则命中的命令进行进一步的判断,从而有效地保证了对网络系统上输入的命令是否异常进行判断的准确性,对网络系统的异常命令做出更为及时、有效、准确的判断,减少了对命令输入进行检测时的误报。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
请参见图1,图1示出了根据本发明一个实施例的一种用于监控命令是否异常的设备示意图,在该设备最基本的实现方式中,可以包括接收器110,过滤器120,以及分类器130;可选的,该设备还可以包括学习器140,告警器150。下面对该监控命令是否异常的设备,以及各组成部分进行的具体实现方式进行具体的介绍。
网络系统通常由多个主机终端组成,在各主机终端输入的命令中有可能存在对系统运行造成潜在危害的命令,在网络系统中,可以对其中的各主机部署监控措施,实时地监控主机上的命令输入,并发送给用于监控命令是否异常的设备。用于监控命令是否异常的设备可以通过接收器110来接收受监控的命令,此外,接收器110除了接收各主机终端上输入的命令,可选的,还可以接收各主机的标识信息,其中,主机标识可以是网络系统中各主机的主机名和/或IP地址等,通过接收到的主机标识,可以判断输入的命令是哪部主机发出的,以便于一旦该命令存在风险,可以对相应的主机采取进一步的措施。
接收器110接收到的命令中,一般会包括正常命令,以及可能为具有危险的异常命令,所以还需要对接收器110接收到的命令进行进一步的甄别。过滤器120耦接于接收器110,接收器110可以将接收到的命令输入到过滤器120,过滤器120对接收到的命令采用预置的可疑规则进行过滤,并将被可疑规则命中的命令输入分类器130。预置的可疑规则,可以是预先根据常见危险操作的特征生成的,每条可疑规则包括至少一个危险操作的特征标识。危险操作包括危险系数较高、可能对系统造成危害的命令输入执行,比如通过输入命令进行的下述操作:添加账户;打开、修改或删除敏感文件的关键属性;查看或修改敏感文件的密码;更改网络设置;提升用户权限;更改防火墙设置;查看系统日志;编译代码;命令中包含有害敏感词;更改文件权限和属性;关机/重启;显示特定文件内容;建立网络链接并下载指定地址的文件等等。可以对这些危险操作的对应的命令进行特征提取,命令过滤器120利用这些特征,在接收器110接收到的若干命令中对可能有害的命令进行过滤。
在具体实现可疑规则过滤时可以采用正则表达式的方式,即在正则表达式中体现危险操作的特征标识,从而通过预置的正则表达式规则过滤出具有这些危险操作特征标识的命令,即将正则表达式规则与收集到的当前命令进行匹配,将其中命中可疑规则的异常命令过滤出来,而未被可疑规则命中的命令可以视为正常命令。过滤器120可以包括规则交互接口1202,通过规则交互接口1202接收预先根据常见危险操作的特征生成的可疑规则,每条可疑规则包括至少一个危险操作的特征标识,将可疑规则提供给匹配模块1204;匹配模块1204根据规则交互接口1202提供的可疑规则,对接收器110接收的命令进行过滤,获得被可疑规则命中的命令,并输入分类器130。
此外,每一条正则表达式,可能仅针对特定格式或特定内容的命令进行过滤,因此在实际应用时,更多的情况是使用多条正则表达式进行对接收的命令进行多轮过滤。即将命中了任意一条可疑规则的命令确定为可疑命令,将未命中所有规则的命令确定为正常命令。可疑规则包括可以下述至少一个危险操作的特征标识:添加账户;打开、修改或删除敏感文件的关键属性;查看或修改敏感文件的密码。
例如,通过一些命令打开密码文件可以实现对密码的获取,而查看密码文件的行为通常被理解为可能是视图非法获取密码的越权行为,如在Linux操作系统中,密码文件一般会存储在特定的路径下,并以特定的文件名来命名,而Linux操作系统中又提供了对特定文件的内容进行查看的命令,这就给非法获取密码的行为提供了可能的途径。例如当有足够的权限时,执行命令:“cat/etc/passwd”就可以实现对密码文件“passwd”内保存的密码内容进行查看。为了对这种命令进行过滤,可以采用正则表达式:
.*[\s\W]+passwd.*|^passwd.*以及,
.*passwd.*
通过这两个正则表达式形式的可疑规则,可以过滤出所有包含敏感内容关键字“passwd”的命令,从而筛选出打开密码文件的输入命令。通过上述正则表达式,不仅仅能过滤出查看密码文件的命令,还可以过滤出与“passwd”相关的操作命令,例如“rm–rf/etc/passwd”命令可以将“passwd”文件删除,而这样的操作可能导致系统用户无法正常登录,而通过这两个正则表达式中的任意一个,可以将“rm–rf/etc/passwd”从接收到的命令中过滤出来。
过滤器120过滤出的被可疑规则命中的命令,进一步输入到耦接于过滤器120的分类器130,分类器130根据已有分类模型的训练样本集,对从过滤器120新输入指分类器130的命令进行分类,至少识别出异常命令和正常命令。
分类器130可以包括第一切分模块1302,第一切分模块1302对从过滤器120新输入至分类器130的命令切分为若干特征词,获得该命令包含的各特征词,切分的过程中,可以使用正则表达式工具,例如利用正则表达式:
[_\$]*[a-zA-Z\d\._\-]+[^\w\(/;=\-\)\[\]\{\}:>&\?\.\\\s,\d'"\%<]*
将输入的命令进行切分,获的输入命令中包含的各特征词。如利用上述正则表达式对输入的命令:
wget-o http://www.sina.com/dasd/hahah/tad.tgz/usr/loca/dasd/etc/passwd
进行切分时,可以获得如下特征词集合:
{'wget','-o','http','www.sina.com','dasd','hahah','tad.tgz','usr','loca','dasd','etc','passwd','www','sina','com'}
此外,还可以使用正则表达式:
((\w+\.){1,6}(?:net|cn|com|gov|edu|asia|me|co))
识别命令中的网址。
分类器130通过先验获取模块1304,获取在已有分类模型的训练样本集中、当一条命令是异常命令时其包含某一特征词wn的先验概率P(wn|y2),和当一条命令是正常命令时其包含某一特征词wn的先验概率P(wn|y1),以及在已有训练样本集中出现异常命令的先验概率P(y2)和出现正常命令的先验概率P(y1),再通过概率分析模块1306根据过滤器120输入的命令中包含的各特征词,以及与各特征词相关的先验概率,获得所输入的命令分别为异常命令的概率和正常命令的概率。进而通过类别识别模块1308,根据命令是异常命令的概率和正常命令的概率,识别输入的命令所属的类别,所识别出的类别,至少包括异常命令和正常命令两类。在一些应用环境中,还需要识别输入的命令是否为其他的类别,例如是否为未知命令,进而对未知命令进行及时处理,此时在该用于监控命令是否异常的设备中,先验获取模块1304还可以获取在已有分类模型的训练样本集中、当一条命令是未知命令时其包含某一特征词wn的先验概率P(wn|y3),以及在已有训练样本集中出现未知命令的先验概率P(y3);概率分析模块1306则获得输入的命令是未知命令的概率;以及类别识别模块1308来识别输入的命令是否属于未知命令的类别。类别识别模块的识别命令所属类别的过程可以根据实际需要,以及分类器130的实现方式的不同而不同,如当概率分析模块1306获取命令分别为异常命令的概率和正常命令的概率时,可以对根据获取到的概率是否符合预置的要求识别命令所属类别,例如可以预置命令属于正常命令的概率阈值为0.85,属于异常命令的概率阈值为0.5,这样,如果获得输入命令的属于正常命令的概率超过0.85,类别识别模块1308可以将属于正常命令的概率高于0.85的命令识别为正常命令,将属于异常命令的概率高于0.5的命令识别为异常命令。对于未知命令,也可以采取类似的方式识别,此外还可以将即不属于正常命令,也不属于异常命令的输入命令,识别为未知命令。
分类器130可以是基于贝叶斯原理、或费舍尔原理、或决策树原理、或逻辑回归原理、或偏最小二乘法PSL原理实现的分类器。分类器130的实现原理可以是根据已有训练样本集学习训练,产生分类模型;进而利用分类模型对输入的当前命令进行判断。具体可以利用分类器130中的先验获取模块1304来根据输入的命令所包含的各特征,以及与各特征相关的先验概率,基于贝叶斯原理或费舍尔原理,获得输入命令是异常命令的概率,和该命令是正常命令的概率,然后再根据获得的各个概率,确定输入的命令属于异常命令或正常命令。下面以基于贝叶斯原理实现分类器130,以及通过先验获取模块1304,根据命令所包含的各特征以及与各特征相关的先验概率,基于贝叶斯原理获得输入的命令是异常命令的概率和该命令是正常命令的概率的过程进行详细的介绍。
贝叶斯分类方法是一种统计分类方法,它是一类利用概率统计进行分类的算法。在许多应用中,朴素贝叶斯分类法都可以获取非常准确的分类结果,且贝叶斯分类方法本身还具有易于实现、分类准确率高、速度快的特点,贝叶斯分类方法的原理是通过对象的先验概率,利用贝叶斯公式计算出其后验概率,即该对象属于某一类的概率,选择具有最大后验概率的类作为该对象所属的类。本发明实施例中,分类器130可以利用贝叶斯分类方法来实现对当前命令是否异常命令进行识别,下面对该实现的过程进行详细的介绍。
首先可以根据第一切分模块1302对的命令进行切分,获得该命令包含的各特征词,并利用先验获取模块,获取所需的各先验概率包括:当一条命令是异常命令时其包含某一特征词wn的先验概率P(wn|y2),和当一条命令是正常命令时其包含某一特征词wn的先验概率P(wn|y1),以及在已有训练样本集中出现异常命令的先验概率P(y2)和出现正常命令的先验概率P(y1)。需要说明的是,通常情况下对一条命令进行切分,会得到该命令包含的多个特征词,此时,
设x={w1,w2,w3,…,wn}为该未知输入的命令经过分词得到的特征词集合;
并设y={y1=good,y2=bad}为类别集合,其中y1=good代表正常命令的分类,y2=bad代表异常命令的分类;
接下来需要获得P(y1|x)、P(y2|x),其中P(y1|x)表示在输入的命令含有集合x中的各个特征词时,其属于正常命令的概率,P(y2|x)表示在当前命令含有集合x中的各个特征词时,其属于异常命令的概率。然后比较P(y1|x)与P(y2|x)的值,根据比较的结果确定当前命令的分类,例如取两者之中数值较大者作为当前命令的分类,或者在两者的差值达到一定的阈值时,将其中的较大者作为当前命令的分类。下面来介绍如何获取P(y1|x)与P(y2|x)的值。
根据贝叶斯分类原理,对P(y1|x)与P(y2|x)的值有如下获取方法:
P(y1|x)=P(x|y1)*P(y1)/P(x)
P(y2|x)=P(x|y2)*P(y2)/P(x)
其中P(x)对于y1=good和y2=bad两个分类来说是相等的常数,因此,只需获取P(x|y1)*P(y1),以及P(x|y2)*P(y2)的值即可。
而其中正常命令出现的概率P(y1),以及异常命令出现的概率P(y2),可以根据已有训练样本集中正常命令以及异常命令出现的频率来确定。例如在训练样本集中一共采集了4651629条命令,而其中出现的异常命令有68440条,则异常命令出现的概率P(y2)为:
68440/4651629≈0.014713
而相应的正常命令出现的概率则为P(y1)≈(1-P(y2))=0.985287。
由于P(x|y1)=P([w1,w2,w3,…,wn]|y1),且w1,w2,w3,…,wn可以认为是条件独立的,可以将P([w1,w2,w3,…,wn]|y1)分解为:
P(w1|y1)*P(w2|y1)*P(w3|y1)*…*P(wn|y1)
而其中P(w1|y1),P(w2|y1),P(w3|y1),…,P(wn|y1)各项,表示在集合x中各特征词在正常命令里出现的概率,这些项所代表的概率数值,可以通过训练样本集中正常命令中出现目标特征词的概率统计出来。P(x|y2)的获取原理与P(x|y1)的获取方法类似,在此不再赘述。需要说明的是在获取P(w1|y1),P(w2|y1),P(w3|y1),…,P(wn|y1)各项的乘积时,由于其中各项的数值都属于(0,1)区间,导致各项连乘后得到的结果经常趋近于0,甚至由于超出了计算机能够表达的浮点数范围精度,导致可能计算结果等于0,此时可选的,还可以将:
P(w1|y1)*P(w2|y1)*P(w3|y1)*…*P(wn|y1)转化为对数和的形式,例如转化为:
至此,P(x|y1)*P(y1)/P(x)中各项,以及P(x|y2)*P(y2)/P(x)中的各项都能够通过上述方法获取,也即获取到了P(y1|x)以及P(y2|x),进而可以根据P(y1|x)以及P(y2|x)来确定在当前命令含有集合x中的各个特征词时,其属于正常命令或者异常命令。
以上介绍了以贝叶斯分类方法实现的分类器130,在实际应用中,这种方法实现的分类器130能够基于已有训练样本集进行学习,对输入的当前命令可以获取非常准确的分类结果,分类方法本身易于实现、分类准确率高、速度快。当然分类器还可以基于前述的费舍尔原理、或决策树原理、或逻辑回归原理、或偏最小二乘法PSL原理实现,利用不同的原理实现的分类器130,其数据训练学习和识别输入的命令的过程,会因分类器的实现原理的不同而不同,但同样可以非常准确的对输入的命令进行分类,识别出当前命令是正常命令还是异常命令(或者未知命令)。例如在使用决策树实现的分类器130时,需要首先根据训练样本集中的数据进行训练,生成的是决策树模型,在需要判断输入的命令的分类时,可以先将当前命令进行分词,将获得的各特征词代入到该决策树模型中,计算出其属于哪一个分类,进而确定当前命令是正常命令,或者异常命令。
已有训练样本集是包括一定数量的已知命令的集合,并且已知这些命令是否为异常命令。分类器130根据已有训练样本集进行机器学习,获得先验参数,再利用先验参数来对输入的命令进行识别分类。上述方式实现的分类器130所输出的命令所属的分类,一个逼近真实情况的近似值,这种近似值可以在当训练样本集中的训练样本达到一定的数量规模后,达到理想的精确程度,换而言之,能够收集到的训练样本越多,则训练出的分类器130的输入结果就越逼近实际的情况、越精确和可靠。所以,在实际的使用中,可以将经分类器130进行过分类的命令与已有训练样本集合并,更新分类器130使用的已有训练样本集,而这一过程可以由学习器140来实现,即由学习器140将将经分类器130进行过分类的命令与已有训练样本集合并后进行机器学习,更新分类器使用的已有训练样本集。将将经分类器130进行过分类的命令也作为训练样本的一部分,与已有训练样本集合并后进行机器学习,从而更新分类器使用的各种先验参数,进而使分类器130能够利用更加丰富的训练样本进行学习和训练,进一步提高分类器130的识别精度,使其对输入的命令的识别结果更加准确。
学习器140可以通过以下模块更新分类器130使用的已有训练样本集:合并模块1402至少将经分类器130进行过分类的命令合并至已有分类模型的训练样本集;第二切分模块1404将训练样本集中的各命令切分为若干特征词,具体实现第二切分模块1404可以采用分类器130包括第一切分模块1302的类似的实现方式,如利用正则表达式工具对已有训练样本集的命令进行切分;分类标记模块1406对训练样本集中的命令标记分类结果,其中分类结果至少包括异常命令和正常命令两类;以及建模模块1408统计在相应类别中每个特征词的概率分布和命令所属类别的概率分布,建立分类模型,为分类器130提供所需的先验概率。如前所述,已有训练样本集是包括一定数量的已知命令的集合,并且已知这些命令是否为异常命令,其中,已有训练样本集中的命令的分类结果,可以来自于人工标定,可以是经过过滤器120,或分类器130自动识别过的若干命令组成的集合,也可以是综合这些方式得到的对训练样本进行识别的结果。此外分类标记模块1406除了根据过滤器120和/或分类器130的输出结果为各命令标记分类结果之外,还可以对标记的分类结果进行修正,使训练样本集中的样本的分类更加精确,进而为分类器提供更为准确的先验参数,使分类器对输入命令的分类结果更加准确。
在该用于监控命令是否异常的设备中,还可以包括告警器150,告警器150耦接于分类器130,并至少根据分类器130的输出结果确定是否进行告警提示,告警器150可以在分类器130发现输入命令的分类为异常命令时,判断是否满足告警条件,如果满足,则发出相应主机存在异常的告警信息。发出告警信息的方式多种多样,例如,可以是向预留的电子邮件地址发送含有主机存在异常的告警信息的电子邮件,再例如也可以是向预留的电话号码发送含有主机存在异常的告警信息的消息的方式等等。如前,在各主机上执行的命令与其执行的主机是存在对应关系的,在满足告警条件时,可以发出执行异常命令的相应主机存在异常的告警信息,以及时地对对应的主机进行处理。
具体在实现告警器150时,告警器150可以统计各主机在一定的时间周期内异常命令出现的次数,判断该周期内次数是否达到预置的阈值,如果达到则发出执行异常命令的相应主机存在异常的告警信息。例如预置的设置是某主机在5分钟的时间内出现10条以上异常命令就发出告警信息,而某主机在5分钟的时间周期内被检测到输入了11次异常命令,则发出该主机存在异常的告警信息。除了这种告警方式外,为了实现更加灵活和精确的告警,告警器150还可以以其他的方式实现。下面对实现告警器150的其它方式进行介绍。
首先,由过滤器120输出被可疑规则命中的命令的告警权值,其中告警权值基于该条可疑规则的总体命中率获得。告警器150可以在异常命令出现时,根据可疑规则命中的该命令对应的总体命中率确定的告警权值,判断是否满足告警条件,并在满足告警条件时发出相应主机存在异常的告警信息,进行告警提示。
可疑规则的总体命中率可以根据可以规则命中的命令占过滤命令总数的占比获得,例如设其中一条可疑规则总共过滤了4651629条命令,并命中了其中的7915条命令,则被命中的这7915条命令就可以作为可疑命令,而这条可疑规则对应的总体命中率可以通过:该可疑规则命中的可疑命令/其检测的所有命令获得,如在本示例中,该条可疑规则的总体命中率则为:
7915/4651629≈0.001702
总体命中率统计出来后,过滤器120输出被可疑规则命中的异常命令的告警权值,告警权值可以基于该条可疑规则对命令的总体命中率获得。具体基于可疑规则对命令的总体命中率获得告警权值时,可以通过以该条可疑规则对已有命令的总体命中率作为自变量的单调递减函数,获得被该条可疑规则命中的异常命令的告警权值。例如,将总体命中率记做Pa,可以通过总体命中率作为自变量的单调递减函数(1-Pa)*D,来获取被该条可疑规则命中的异常命令的告警权值,其中D为一常数。例如在上述示例中某条可疑规则的命中率Pa为0.001702,常数D取100,可以确定该条可疑规则命中的命令的告警权值如下:
(1-Pa)*D=(1-0.001702)*100≈99.8
即被该条可疑规则命中的异常命令的告警权值约为99.8。
之所以使用总体命中率作为自变量的单调递减函数,是因为在实际应用中,一条可疑规则命中的异常命令实际为具有可疑危险性的命令,如果一条可疑规则命中命令的次数比较多或者频率比较高,说明该可疑规则命中的命令可能是比较常见的命令,而基于实际情况中毕竟真正的异常命令是少数,所以从逻辑上讲,如果某条可疑规则命中命令的次数较多或频率较高,那么被这条可疑规则命中的命令是真正异常命令的可能性相对较低,之所以被可疑规则命中,那么很可能是由于该条可疑规则是比较“严厉”的规则,进而可以认为该规则命中的命令危险性较小,因而,被其命中的异常命令可以取相对较小的告警权值。
过滤器120输出的告警权值可以作为告警器150确定是否进行告警权的依据,告警器150可以在异常命令出现时,根据可疑规则命中的该命令对应的总体命中率确定的告警权值,判断是否满足告警条件,并在满足告警条件时发出相应主机存在异常的告警信息。具体实现时,告警器150还可以统计一个告警周期内、过滤器120识别出的某一主机上的所有异常命令,将这些异常命令各自对应的告警权值进行累计,根据累计的值判断是否满足预置的告警条件。例如过滤器120输出被各可疑规则命中的异常命令和对应的告警权值的对应如下:
cmd001——99.8
cmd002——30.0
cmd003——95.3
cmd004——99.8
在预置的时间周期内,预置的告警条件为出现的各异常命令的告警权值的总和达到预置的告警阈值,如预置的告警条件为在5分钟内的时间周期内,告警权值的总和达到1000即发出告警信息,而在5分钟内上述各异常命令出现的次数如下:
cmd001——2次
cmd002——1次
cmd003——3次
cmd004——5次
根据上述的各异常命令的告警权值和出现次数得到这5分钟内的告警权值总和为1014.5,可见这5分钟内的告警权值总和已经超过了预置的告警阈值,则发出相应主机存在异常的告警信息。
其次,告警器150还可以根据过滤器120输出的告警权值和分类器130输出的结果共同确定是否进行告警提示。如前所述,分类器130可以获取到输入的命令是异常命令的概率,和输入的命令是正常命令的概率。告警器可以根据输入的命令是异常命令的概率,和输入的命令是正常命令的概率,以及对应的告警权值,来共同确定是否进行告警提示。具体实现时,可以统计一个告警周期内、分类器130识别出的某一主机上的所有异常命令,将每一异常命令对应的异常命令概率和告警权值相乘获得对应的告警指数,将这些异常命令的告警指数进行综合处理,根据综合处理后的值判断是否满足预置的告警条件。例如在预置的5分钟的时间周期内,某一主机输入的异常命令,各异常命令对应的异常命令概率和告警权值以及出现的次数如表1所示:
表1
异常命令 |
异常命令概率 |
告警权值 |
告警指数 |
出现次数 |
cmd001 |
0.95 |
99.8 |
98.41 |
2 |
cmd002 |
0.89 |
90.0 |
80.10 |
1 |
cmd003 |
0.98 |
95.3 |
93.39 |
3 |
cmd004 |
0.90 |
99.8 |
89.82 |
5 |
此时,在对异常命令的告警指数进行综处理时,可以根据输入命令是各异常命令的概率,以及告警权值获取告警指数,对应的告警指数进行累加,如某个异常命令出现多次,则将该异常命令对应的告警指数多次累加即可,或者取各异常命令对应的告警指数与出现次数的乘积的和,作为是否发出告警信息的参考数据。例如在上表中,在对异常命令的告警指数进行综合处理获得的参考值为1006.19,若预置的告警条件为一预置的告警阈值1000,且参考值高于该告警阈值时即发出告警信息,那么在该示例中对异常命令的告警指数进行综合处理获得的参考值为1006.19,高于预置的告警阈值,符合发出告警信息的预置条件,则发出相应主机存在异常的告警信息。
以上介绍本发明实施例提供的用于监控命令是否异常的设备,通过该设备,可以接收在网络系统上输入的命令,对接收到的命令采用预置的可疑规则进行过滤,并将被可以规则命中的命令作为可疑命令输入分类器,经过分类器的进一步识别,确定其中的命令是正常命令或者异常命令,通过本设备,能够对在网络系统上输入的命令及时地进行判断,且通过预置的可疑规则进行判断后,还使用分类器,对可疑规则命中的命令进行进一步的判断,从而能够有效地对网络系统上输入的命令是否异常进行判断,保证了识别的准确性,对网络系统的异常命令做出更为及时、有效、准确的判断,减少了对命令输入进行检测时的误报,保证了网络系统的安全运行。
以上介绍了本发明实施例提供的用于监控命令是否异常的设备,与该设备相对应,本发明实施例还提供了一种用于监控命令是否异常的方法,请参见图2,开始于步骤S210,首先接收受监控的命令,具体实现时,可以对各主机的命令解析器shell进行改造,增加将shell接收到的主机当前命令和主机IP通过网络传输至指定地址的函数,然后收集在各主机上输入的受监控的命令。步骤S210可以通过前述的接收器110来执行,其相关的技术特征可以参考前文中关于接收器110在实施例中的描述,此处不再赘述。
在步骤S210接收到受监控的命令后,接下来执行步骤S220,对受监控的命令采用预置的可疑规则进行过滤,获得被可疑规则命中的命令。步骤S210可以通过前述的过滤器210来执行。预置的可疑规则,可以是预先根据常见危险操作的特征生成的,每条可疑规则包括至少一个危险操作的特征标识。危险操作包括但不限于添加账户;打开、修改或删除敏感文件的关键属性;查看或修改敏感文件的密码;更改网络设置;提升用户权限;更改防火墙设置;查看系统日志;编译代码;命令中包含有害敏感词;更改文件权限和属性;关机/重启;显示特定文件内容;建立网络链接并下载指定地址的文件等等。可以对这些危险操作的对应的命令进行特征提取,利用提取到的特征,对接收到的命令中将可能有害的命令过滤出来,特征标识可以与执行上述操作的输入命令相对应,例如添加账户;打开、修改或删除敏感文件的关键属性;查看或修改敏感文件的密码等操作的特征标识,分别与相应的操作命令相对应。在具体实现可疑规则过滤时可以采用正则表达式的方式,即在正则表达式中体现危险操作的特征标识,从而通过预置的正则表达式规则过滤出具有这些危险操作特征标识的命令,即将正则表达式规则与收集到的当前命令进行匹配,将其中命中可疑规则的异常命令过滤出来,而未被可疑规则命中的命令可以视为正常命令。
接下来可以执行S230,根据已有分类模型的训练样本集,对被可疑规则命中的命令进行分类,至少识别出异常命令和正常命令。执行该步骤时,首先可以将命令切分为若干特征词,获得该命令包含的各特征词,获取在已有分类模型的训练样本集中、当一条命令是异常命令时其包含某一特征词wn的先验概率P(wn|y2),和当一条命令是正常命令时其包含某一特征词wn的先验概率P(wn|y1),以及在已有训练样本集中出现异常命令的先验概率P(y2)和出现正常命令的先验概率P(y1);根据命令包含的各特征词,以及与各特征词相关的先验概率,获得输入的命令分别为异常命令的概率和正常命令的概率;进而至少根据命令是异常命令的概率和正常命令的概率,识别命令所属类别,所述类别至少包括异常命令和正常命令两类。需要说明的是,在一些应用环境中,还需要识别输入的命令是否为其他的类别,例如是否为未知命令,进而对未知命令进行及时处理,此时在该方法还可以获取在已有分类模型的训练样本集中、当一条命令是未知命令时其包含某一特征词wn的先验概率P(wn|y3),以及在已有训练样本集中出现未知命令的先验概率P(y3);获得所述命令是未知命令的概率;进而至少根据输入的命令是未知命令的概率,识别该命令是否属于未知命令的类别。
获得命令分别为异常命令的概率和正常命令的概率时,可以基于贝叶斯原理或费舍尔原理获得命令是异常命令的概率和该命令是正常命令的概率,具体实现方法可以与分类器130的实现原理,以及分类器130中包括的先验获取模块1304的实现原理相互参照,此处不再赘述。
如前所述,已有训练样本集是包括一定数量的已知命令的集合,在当训练样本集中的训练样本达到一定的数量规模后,先验参数可以达到更为理想的精确程度,即能够收集到的训练样本越多,则对输入命令的识别结果就越逼近实际的情况、越精确和可靠。因此可以将进行过分类的命令与已有训练样本集合并后进行机器学习,更新进行分类时使用的已有训练样本集。从而更新所使用的各种先验参数,进而能够利用更加丰富的训练样本进行学习和训练,进一步提高对当前的识别精度,使其对输入的命令的识别结果更加准确。此时,机器学习的过程可以是,至少将进行过分类的命令合并至已有分类模型的训练样本集;将训练样本集中的各命令切分为若干特征词;对训练样本集中的命令标记分类结果,所述分类结果至少包括异常命令和正常命令两类;以及统计在相应类别中每个特征词的概率分布和命令所属类别的概率分布,建立分类模型,为进行分类时提供所需的先验概率。
经过预置的可疑规则进行过滤,以及根据已有分类模型的训练样本集进行分类识别的命令,如果被识别为异常命令,还可以根据分类识别的结果进行告警提示,具体在告警时,可以依据被可疑规则命中的命令的告警权值来确定是否告警,告警权值基于该条可疑规则的总体命中率获得。也可以根据被可疑规则命中的命令的告警权值和对应的分类结果共同确定是否进行告警提示。告警的步骤可以由前述的告警器150来执行,其相关的技术特征可以参考前文中关于告警器150在实施例中的描述,此处不再赘述。
以上对根据本发明一个实施例的用于监控命令是否异常的设备及方法进行了详细说明,为了更好的便于理解,下面再给出本发明实施例的一个具体应用举例,请参阅图3,图3示出了根据本发明一个实施例的具体应用示意图,图中,Linux/Unix/BSD Server是网络系统中的主机,在一个网络系统中,可以有若干台搭载Linux/Unix/BSD的主机,通过对主机的命令解析器shell进行改造,使其具有发送输入命令(即发送shell_log)到Receive Server(接收服务器,相当于前文中的接收器110)的能力,Receive Server将接收到的shell_log以日志的形式记录到数据库(database)中。通过将该数据库database中各命令所属的主机IP信息与系统中已部署的各主机IP进行对比,进而就可以知道是否所有主机都已将其上执行的命令准确传输给了Receive Server,以确保所有Linux/Unix/BSD Server命令发送正常,当有失效或者新增主机加入网络系统时,可以自动对失效或新增主机部署命令发送模块。
在具体对命令进行分析的过程中,可以基于Database的数据通过在线学习功能,对数据库里已有的数据进行机器学习,产生识别模型。在需要对当前输入的命令进行识别时,可以利用产生的模型实时监测输入的命令并识别,在识别到异常命令并满足告警条件时进行告警。在告警时,可以通过E-mail向预置的邮件地址发送包含告警信息的邮件,或者通过SMS信息中心向预置的电话号码发送包含告警信息的消息。
以上介绍本发明实施例提供的用于监控命令是否异常的设备及方法,通过该设备或方法,可以在包括若干主机的网络系统中,实时接收在网络系统上输入的命令,对接收到的命令根据已有分类模型的训练样本集,对被可疑规则命中的命令进行分类,确定其中的命令是正常命令或者异常命令。通过预置的可疑规则的过滤,以及根据已有分类模型的训练样本集的识别,相当于对输入的命令进行了双重识别,能够对在网络系统上输入的命令及时和准确的判断,从而能够有效的对网络系统上输入的命令是否异常进行检测,减少了对命令输入进行检测时的误报,保证了网络系统的安全运行。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的用于监控命令是否异常的设备中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本发明还公开了A1一种用于监控命令是否异常的设备,包括:
接收器,被配置为接收受监控的命令;
过滤器,被配置为对所述接收的命令采用预置的可疑规则进行过滤,将被所述可疑规则命中的命令输入分类器;以及
分类器,被配置为根据已有分类模型的训练样本集,对从所述过滤器新输入至分类器的命令进行分类,至少识别出异常命令和正常命令。
A2、如A1所述的设备,所述分类器包括:
第一切分模块,被配置为将从所述过滤器新输入至分类器的命令切分为若干特征词,获得该命令包含的各特征词;
先验获取模块,被配置为获取在已有分类模型的训练样本集中、当一条命令是异常命令时其包含某一特征词wn的先验概率P(wn|y2),和当一条命令是正常命令时其包含某一特征词wn的先验概率P(wn|y1),以及在已有训练样本集中出现异常命令的先验概率P(y2)和出现正常命令的先验概率P(y1);
概率分析模块,被配置为根据所述命令包含的各特征词,以及与所述各特征词相关的先验概率,获得所述命令分别为异常命令的概率和正常命令的概率;以及
类别识别模块,被配置为至少根据所述命令是异常命令的概率和正常命令的概率,识别所述命令所属类别,所述类别至少包括异常命令和正常命令两类。
A3、如A2所述的设备:
所述先验获取模块还被配置为获取在已有分类模型的训练样本集中、当一条命令是未知命令时其包含某一特征词wn的先验概率P(wn|y3),以及在已有训练样本集中出现未知命令的先验概率P(y3);
所述概率分析模块还被配置为获得所述命令是未知命令的概率;以及
所述类别识别模块还被配置为识别所述命令是否属于未知命令的类别。
A4、如A2或3所述的设备,
所述概率分析模块具体被配置为根据命令所包含的各特征,以及与所述各特征相关的先验概率,基于贝叶斯原理或费舍尔原理获得所述命令是异常命令的概率和该命令是正常命令的概率。
A5、如A1所述的设备,所述分类器具体被配置为基于贝叶斯原理或费舍尔原理或决策树原理或逻辑回归原理或偏最小二乘法PSL原理的分类器。
A6、如A1至5中任一项所述的设备,还包括:
学习器,被配置为至少将经所述分类器进行过分类的命令与已有训练样本集合并后进行机器学习,更新所述分类器使用的已有训练样本集。
A7、如A6所述的设备,所述学习器具体包括:
合并模块,被配置为至少将经所述分类器进行过分类的命令合并至已有分类模型的训练样本集;
第二切分模块,被配置为将所述训练样本集中的各命令切分为若干特征词;
分类标记模块,被配置为对所述训练样本集中的命令标记分类结果,所述分类结果至少包括异常命令和正常命令两类;以及
建模模块,统计在相应类别中每个特征词的概率分布和命令所属类别的概率分布,建立分类模型,为所述分类器提供所需的先验概率。
A8、如A7所述的设备,所述分类标记模块在根据所述过滤器和/或分类器的输出结果为所述各命令标记分类结果之外,还被配置为对所述标记的分类结果进行修正。
A9、如A1所述的设备,还包括:
告警器,被配置为至少根据所述分类器输出的结果确定是否进行告警提示。
A10、如A1至A9中任一项所述的设备,所述过滤器包括:
规则交互接口,被配置为接收预先根据常见危险操作的特征生成的可疑规则,每条可疑规则包括至少一个危险操作的特征标识,将所述可疑规则提供给匹配模块;以及
匹配模块,被配置为根据所述规则交互接口提供的可疑规则,对所述接收器接收的命令进行过滤,获得被所述可疑规则命中的命令,并输入分类器。
A11、如A10所述的设备,所述可疑规则包括下述至少一个危险操作的特征标识:
添加账户;打开、修改或删除敏感文件的关键属性;查看或修改敏感文件的密码。
A12、如A9所述的设备,所述过滤器还被配置为输出被所述可疑规则命中的命令的告警权值,所述告警权值基于该条可疑规则的总体命中率获得。
A13、如A12所述的设备,所述告警器具体被配置为根据所述过滤器输出的告警权值和所述分类器输出的结果共同确定是否进行告警提示。
本发明还公开了B14、一种用于监控命令是否异常的方法,包括:
接收受监控的命令;
对所述受监控的命令采用预置的可疑规则进行过滤,获得被所述可疑规则命中的命令;
根据已有分类模型的训练样本集,对被所述可疑规则命中的命令进行分类,至少识别出异常命令和正常命令;
B15、如B14所述的方法,所述对被可疑规则命中的命令进行分类的步骤包括:
将所述命令切分为若干特征词,获得该命令包含的各特征词;
获取在已有分类模型的训练样本集中、当一条命令是异常命令时其包含某一特征词wn的先验概率P(wn|y2),和当一条命令是正常命令时其包含某一特征词wn的先验概率P(wn|y1),以及在已有训练样本集中出现异常命令的先验概率P(y2)和出现正常命令的先验概率P(y1);
根据所述命令包含的各特征词,以及与所述各特征词相关的先验概率,获得所述命令分别为异常命令的概率和正常命令的概率;以及
至少根据所述命令是异常命令的概率和正常命令的概率,识别所述命令所属类别,所述类别至少包括异常命令和正常命令两类。
B16、如B15所述的方法,还包括:
获取在已有分类模型的训练样本集中、当一条命令是未知命令时其包含某一特征词wn的先验概率P(wn|y3),以及在已有训练样本集中出现未知命令的先验概率P(y3);
获得所述命令是未知命令的概率;以及
至少根据所述命令是未知命令的概率,识别所述命令是否属于未知命令的类别。
B17、如B15或B16所述的方法,所述获得命令分别为异常命令的概率和正常命令的概率的步骤包括:基于贝叶斯原理或费舍尔原理获得所述命令是异常命令的概率和该命令是正常命令的概率。
B18、如B14-17中任一项所述的方法,还包括:
将进行过分类的命令与已有训练样本集合并后进行机器学习,更新进行分类时使用的已有训练样本集。
B19、如B18所述的方法,所述进行机器学习的步骤包括:
至少将进行过分类的命令合并至已有分类模型的训练样本集;
将所述训练样本集中的各命令切分为若干特征词;
对所述训练样本集中的命令标记分类结果,所述分类结果至少包括异常命令和正常命令两类;以及
统计在相应类别中每个特征词的概率分布和命令所属类别的概率分布,建立分类模型,为进行分类时提供所需的先验概率。
B20、如B15所述的方法,还包括:
至少根据分类结果确定是否进行告警提示。
B21、如B14至B20中任一项所述的方法,所述对受监控的命令采用预置的可疑规则进行过滤的步骤包括:
接收预先根据常见危险操作的特征生成的可疑规则,每条可疑规则包括至少一个危险操作的特征标识;
根据所述可疑规则,对所述接收器接收的命令进行过滤。
B22、如B21所述的方法,所述可疑规则包括下述至少一个危险操作的特征标识:
添加账户;打开、修改或删除敏感文件的关键属性;查看或修改敏感文件的密码。
B23、如B20所述的方法,在对所述受监控的命令采用预置的可疑规则进行过滤的步骤还包括:
获得被所述可疑规则命中的命令的告警权值,所述告警权值基于该条可疑规则的总体命中率获得。
B24、如B23所述的方法,所述至少根据分类结果确定是否进行告警提示的步骤包括:
根据所述被可疑规则命中的命令的告警权值和对应的分类结果共同确定是否进行告警提示。