具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域技术人员知道,本发明的实施方式可以实现为一种系统、方法、设备、或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
根据本发明的实施方式,提出了一种检测攻击行为的方法、介质、系统和计算设备。
在本文中,需要理解的是,所涉及的术语APT表示高级持续性威胁。并不是指特定的攻击技术,而是指利用所有可用的攻击手段,对攻击目标进行长期持续性攻击的攻击行为;rootkit表示一种特殊的恶意软件,用来在安装目标上隐藏自身以及指定的文件、进程、内核模块、网络链接等信息,通常与后门、木马等恶意程序结合使用。此外,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
发明概述
本发明人发现,由于黑客入侵技术变化太快的原因,现有技术提供的攻击检测方法需要专门人员实时跟进最新的黑客入侵技术,针对不同的入侵方法,及时更新语法分析规则和特征关键字,并且该方法通常误报率较高,触发报警后,往往需要人工复查,对于现在动辄数以万计的服务器运维工作来讲,人工复查难以实现。并且针对高级攻击,现有的检测方法可能无效,而当下APT攻击十分普遍,大部分APT攻击并不会进行大范围的破坏,相反则是将整个入侵行动尽量隐蔽起来,所以攻击者获得shell后,执行的操作基本上都是正常的系统命令,这令传统的基于语法分析和关键字匹配的方法难以检测到。因此在现有技术中,攻击检测方法存在很多缺陷,比如人工成本高,误报率高,对高级攻击无效,这是非常令人烦恼的。
基于以上分析,发明人构想到通过用户操作日志分析用户的操作习惯和操作对象的特点来判断是否在攻击入侵行为,以避免通过语法规则分析和关键字匹配造成的上述缺陷。根据本发明的技术构想,通过获取操作日志,并基于获取的操作日志,提取用于表征目标用户的操作习惯的行为特征数据,和/或提取用于表征操作对象的特点的对象特征数据,进而基于提取的行为特征数据和/或对象特征数据,可以确定是否存在攻击行为,使得攻击入侵检测方法不再依赖于基于有监督学习的语法分析和关键字匹配,从而显著地减少了人工操作的干预,为用户带来了更好的体验,并且降低了误报率,提高了对高级攻击检测的有效性。
在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。
应用场景总览
首先参考图1A和图1B详细阐述本发明实施例的检测攻击行为的方法及其系统的应用场景。
图1A和图1B示意性地示出了根据本发明实施方式的应用场景示意图。
通常,分析操作系统中各用户的操作日志,不仅可以了解各个用户的操作习惯和操作行为,而且还可以了解各用户所操作的对象的特点。
例如,如图1A所示,用户1一般习惯于操作对象1~对象5,且操作路径通常如图1A所示,在这种情况下,使用本发明提供的检测攻击行为的方法和系统,可以分析用户1的操作习惯,以确定用户1是否为黑客,即用户1是否存在攻击入侵行为。
例如,如图1B所示,针对对象1,用户1在操作对象1之后,通常会跳转至对象2进行操作,在这种情况下,使用本发明提供的检测攻击行为的方法和系统,可以分析对象1和/或对象2的特点,以确定用户1是否为黑客,即该用户1是否存在攻击入侵行为。
需要注意的是,图1A和图1B所示仅为可以应用本发明实施例的应用场景的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他场景。
示例性方法
下面结合图1A和图1B的应用场景,参考图2来描述根据本发明示例性实施方式的检测攻击行为的方法。需要注意的是,上述应用场景仅是为了便于理解本发明的精神和原理而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可以应用于适用的任何场景。
根据本发明实施例的检测攻击行为的方法包括三个并列方案,分别为:
方案一,包括以下操作:获取操作日志;基于获取的操作日志,提取用于表征目标用户的操作习惯的行为特征数据;以及基于提取的行为特征数据,确定是否存在攻击行为。
方案二,获取操作日志;基于获取的操作日志,提取用于表征操作对象的特点的对象特征数据;以及基于提取的对象特征数据,确定是否存在攻击行为。
方案三,获取操作日志;基于获取的操作日志,提取用于表征目标用户的操作习惯的行为特征数据和用于表征操作对象的特点的对象特征数据;以及基于提取的行为特征数据和对象特征数据,确定是否存在攻击行为。
针对方案一,在获取操作日志时,可以只获取目标用户的操作日志。应该理解,任何一个网络用户都可以被当作目标用户处理。
具体地,如果想要知道一个用户是否是黑客攻击入侵行为,则可以获取该用户的shell日志,并基于获取的shell日志分析该用户的操作习惯,比如,可以从这些shell日志中提取完整的命令执行序列,不包含命令参数,只包含命令名称,来分析该用户的操作习惯,进而确定其是否是黑客,是否具有攻击入侵行为。
针对方案二,在获取操作日志时,需要获取所有用户的操作日志。
具体地,如果想要知道是否存在黑客攻击入侵行为,则可以获取所有用户的shell日志,并基于获取的shell日志分析这些用户所操作的对象的特点,比如,针对任何一条命令,可以从获取的shell日志中提取它的所有执行集,其中,命令参数可以不同,来分析该命令所针对的操作对象的特点,进而确定其是否是存在黑客攻击入侵行为。
针对方案三,由于该方案在分析是否存在黑客攻击入侵行为,不仅考虑了用户操作行为,而且还考虑了操作对象的特点,因此既需要了解用户操作行为,又需要了解操作对象的特点。
具体地,可以先根据方案一提供的操作流程分析用户操作行为,并根据方案二提供的操作流程分析操作对象的特点,然后再根据用户操作行为和操作对象的特点,确定是否存在黑客攻击入侵行为。
图2示意性地示出了根据本发明实施例的检测攻击行为的方法的流程图(即方案三)。
如图2所示,根据本发明实施例的检测攻击行为的方法包括操作S210~操作S230。
在操作S210,获取操作日志;
在操作S220,基于获取的操作日志,提取用于表征目标用户的操作习惯的行为特征数据,并提取用于表征操作对象的特点的对象特征数据;以及
在操作S230,基于提取的行为特征数据和对象特征数据,确定是否存在攻击行为。
需要说明的是,在基于提取的行为特征数据和对象特征数据确定是否存在攻击行为时,可以先基于提取的行为特征数据进行初步过滤,确定是否存在攻击行为,再基于提取的对象特征数据进行二次过滤,进一步确定是否存在攻击行为,或者可以先基于提取的对象特征数据进行初步过滤,确定是否存在攻击行为,再基于提取的行为特征数据进行二次过滤,进一步确定是否存在攻击行为。
与现有技术中基于语法分析和关键字匹配进行有监督学习的攻击行为检测,需要事先对训练数据进行标记,导致人工成本高,且对高级攻击可能无效相比,本发明实施例提供了一种基于无监督学习的shell日志分析方法,能够基于用户的行为特征和/或操作对象的特征进行攻击行为检测,无需事先对训练数据进行标记,相比于有监督学习,节省了一定的人力成本,此外,本发明实施例提供的检测方法针对个人的日常shell日志进行训练,由于从不同角度学习一个人的操作习惯以及操作对象的相关特征,并且采用非白即黑的策略,因此无需实时动态跟踪外界最新攻击动态,也能节省了一定的人力成本。另外,由于本发明实施例,不再关注语法规则分析关键字匹配,因而即使攻击者使用的是系统标准命令,也具备一定的检测的能力,而不是像现有的检测方法那样束手无策,从而能够有效应对APT攻击。
下面参考图3~图8,结合具体实施例对图2所示的方法做进一步说明。
图3示意性地示出了根据本发明实施例的提取用户的行为特征数据的流程图。在该实施例中,如图3所示,操作S220中基于获取的操作日志,提取用于表征目标用户的操作习惯的行为特征数据可以包括操作S221~S224,其中:
在操作S221,基于获取的操作日志,提取目标用户的命令执行序列。
如前文所述,基于行为特征判断攻击行为,是针对特定个体进行的,因此,可以选取任一用户作为目标用户,从操作系统中获取该用户的shell日志,并从shell日志中提取关于这个用户的命令执行序列,可以不包含命令参数,而只包含命令名称。
在操作S222,对命令执行序列中的每条命令进行数字化标号,得到第一映射序列,其中,所有标号在整体上表现为连续性数字。
具体地,需要对命令执行序列中的每一条命令进行标号,对于标号范围和顺序,无特别要求,但是要求标号必须保证连续。
在操作S223,按照第一预设步长对第一映射序列进行截取,得到多个行为特征向量。
应该理解,对于第一预设步长,用户可以选择,但需要保证步长大于1。步长决定截取到的映射序列被具体映射的空间维度,例如,如果步长为3,那么第一映射序列为一个三维空间向量,如果步长为2,那么第一映射序列为一个二维平面向量。步长无固定计算公式,只要是大于1的整数即可。但是步长过大会导致行为特征向量难以收敛,通常建议步长取3,然后再根据实际训练结果进行调整。例如:
一命令执行序列为:is clear netstat cat tail;
对命令进行标号,得到一映射序列为:12345,也可以是其他的5个连续数字,在此不做限定;
当步长为3时,截取得到的行为特征向量包括:[1,2,3][2,3,4][3,4,5]。
在操作S224,将多个行为特征向量作为行为特征数据。
在本发明实施例中,在将行为特征数据表示为多个行为特征向量后,可以根据这些向量的正态分布是否存在异常点来确定是否存在攻击。其中,如果这些向量的正态分布存在异常点,则认为存在攻击行为;如果这些向量的正态分布不存在异常点,则认为不存在攻击行为。
此外,可以将这些行为特征向量输入针对目标用户训练得到的行为特征检测模型,从而输出对应的检测结果,进而根据输出的检测结果判断该目标用户是否具有攻击性。
通过本发明实施例,将行为特征数据表示成数字化的行为特征向量,可以简单地根据其正态分布是否存在异常点来确定是否存在攻击。
图4和图5示意性示出了根据本发明其他实施例的检测攻击行为的方法的流程图。
其中,图4具体示出了行为特征检测模型的训练方法,其中,该训练方法对所有的用户都具有普遍适应性。
如图4所示,在该实施例中,该方法除了包括上文参考方案一或方案二或方案三(如图2描述的操作S210~S230)以及图3描述的操作S221~S224之外,还包括操作S240和S250。为了描述的简洁起见,这里省略对方案一或方案二或方案三中的相关操作以及操作S221~S224的描述。
在操作S240,获取包含有多个样本行为特征向量的第一训练样本。
其中,这些样本行为特征向量也是根据目标用户的shell日志得到的,其具体获取方法可以参考前述实施例中行为特征向量的获取方法,在此不再赘述。
在操作S250,基于第一训练样本中包含的多个样本行为特征向量,训练一行为特征检测模型,其中,向行为特征检测模型输入多个行为特征向量时所输出的第一结果能够表征目标用户是否存在攻击行为。例如,将通过前述实施例得到的关于目标用户的多个行为特征向量输入该关于目标用户的行为特征检测模型,就可以输出用于判断目标用户是否存在攻击行为的检测结果。
应该理解,对不同的用户进行攻击行为判断时,一般需要基于这些用户各自的shell日志训练一个专用的特定行为特征检测模型,这是因为通常情况下不同的用户其操作行为一般不同。
通过本发明实施例,可以预先为特定用户训练对应的行为特征检测模型,并利用对应的行为特征检测模型检测该特定用户是否具有攻击性。
由于同一用户在不同的时间,根据实际的业务需要,可能具有不同的操作习惯。在这种情况下,为了保证检测结果的准确性,可以根据另一实现方式训练行为特征检测模型。
具体地,在上述操作即基于提取的行为特征数据确定是否存在攻击行为的基础上,该训练方法包括:将多个行为特征向量分成一训练样本和一检测样本;基于该训练样本,训练一行为特征检测模型;将该检测样本输入行为特征检测模型,得到对应的第一输出结果;以及基于第一输出结果,确定是否存在攻击行为。
其中,在划分训练样本和检测样本时,可以将这多个行为特征向量中的80%作为训练样本,20%作为检测样本。
由于在该训练方法中,训练样本和检测样本都来自这多个行为特征向量,因此,训练样本和检测样本所使用的数据更接近一个时期,因而更能保证检测结果的准确性。
需要说明的是,在本发明实施例中,可以通过离群点检测类算法,对训练样本进行模型训练。其中,适应于本方案的离群点检测类算法可以包括多种,One Class-SVM算法,在此不做限定。
如图5所示,在该实施例中,该方法除了包括上文参考方案一或方案二或方案三(如图2描述的操作S210~S230)以及图3描述的操作S221~S224以及图4描述的操作S240和S250之外,还包括操作S260和S270。为了描述的简洁起见,这里省略对方案一或方案二或方案三中的相关操作以及操作S221~S224和操作S240和S250的描述。
在操作S260,比较第一结果与通过人工分析多个行为特征向量得到的检测结果,以确定行为特征检测模型的第一正报率和第一误报率;以及
在操作S270,基于第一正报率和第一误报率,调整行为特征检测模型的偏离系数。
需要说明的是,上述第一正报率和第一误报率之和为1。并且,正报包括:用户行为实际上是攻击行为,检测结果也是攻击行为,或者用户行为实际上是非攻击行为,检测结果也是非攻击行为,即检测结果与实际相符;误报包括:用户行为实际上是攻击行为,检测结果却是非攻击行为,或者用户行为实际上是非攻击行为,检测结果却是攻击行为,即检测结果与实际不符。
此外,如果一个行为特征检测模型的偏离系数越高,那么在检测结果显示“用户行为是攻击行为”时,该用户行为实际上是攻击行为的可能性就越大,即如果检测结果是攻击行为,那么检测结果与实际相符的可能性就越大。
如果一个行为特征检测模型的正报率和误报率没有达到一个合适的水平,那么使用该行为特征检测模型检测攻击行为的准确率就难以保证,因此,为了保证较高的准确率,在行为特征检测模型训练完毕后,还需要调整其正报率和误报率,使两者达到一个合适的水平。
具体地,针对某个行为特征检测模型,一方面可以将检测样本输入该行为特征检测模型,输出一个检测结果,另一方面可以通过人工分析手段,分析检测样本集,得到另一个的检测结果,然后对比两个检测结果,就可以大概了解该行为特征检测模型的正报率和误报率,从而可以根据两者调整行为特征检测模型的偏离系数,直到两者达到一个合适的水平为止。
需要说明的是,对一个行为特征检测模型而言,其正报率和误报率的平衡点并不是一个确定的量,它与用户或者企业对业务的实际需求有关。比如,一业务对攻击检测的准确度要求不高,正报率为60%,误报率为40%,也可以认为两者达到了一个合适的水平。再比如,一业务对攻击检测的准确度要求较高,正报率为80%,误报率为20%,才可以认为两者达到了一个合适的水平。
图6示意性示出了根据本发明实施例的提取操作对象的对象特征数据的流程图。在该实施例中,如图6所示,操作S220中基于获取的操作日志,提取用于表征操作对象的特点的对象特征数据可以包括操作S225~S229,其中:
在操作S225,基于获取的操作日志,提取用户集群的命令执行集。
如前文所述,基于对象特征判断攻击行为,是针对集群中的所有用户进行的,而不是针对某个个人。因此,需要从操作系统中获取集群中所有用户的shell日志,并从shell日志中提取关于这些用户的命令执行集,然后针对每一条命令确定对应的对象特征向量。
在操作S226,针对命令执行集中的每条命令,确定一对应的命令参数序列。
具体地,对于命令执行集中的每一条命令而言,选择该命令的所有执行集,即命令相同,参数可以不同,执行用户可以不同,然后遍历执行集中的每一条命令,分割命令获取参数序列,不包含命令名称,那么最终将得到一个命令参数序列的集合。
在操作S227,针对每个命令参数序列,对其中的每个命令参数进行数字化标号,得到一第二映射序列,其中,在任一第二映射序列中所有标号在整体上表现为连续性数字。
具体地,针对每个命令参数序列,遍历该命令参数序列,对出现过的参数进行标号,数字化标号方法与行为特征向量提取过程中的数字化标号方法类似,无指定范围,连续即可。
在操作S228,按照第二预设步长对每个第二映射序列进行截取,得到与每条命令对应的多个对象特征向量。
应该理解,对于第二预设步长,用户也可以选择,但需要保证步长大于1。步长决定截取到的映射序列被具体映射的空间维度,例如,如果步长为3,那么第一映射序列为一个三维空间向量,如果步长为2,那么第一映射序列为一个二维平面向量。步长无固定计算公式,只要是大于1的整数即可。但是步长过大会导致对象特征向量难以收敛,通常建议步长取2,然后再根据实际训练结果进行调整。
以步长为2获取对象特征向量为例,如果只有一个参数,那么向量中的X坐标值可以都取0,或者向量中的Y坐标值可以都取0;由于linux命令的操作通常都是option+argument的形式,所以建议步长取2。
例如,有两条命令:
Is-x/usr/
Is-l/root/
获取命令参数序列:
[“-X”“/usr/”]
[“-l”“/root/”]
对参数进行编号:
“-x”:1
“/usr/”:2
“-1”:3
“/root/”:4
以步长为2获取对象特征向量:
[1,2][3,4]。
在操作S229,将与每条命令对应的多个对象特征向量作为对象特征数据。
在本发明实施例中,在将对象特征数据表示为多个对象特征向量后,可以根据这些向量的正态分布是否存在异常点来确定是否存在攻击。其中,如果这些向量的正态分布存在异常点,则认为存在攻击行为;如果这些向量的正态分布不存在异常点,则认为不存在攻击行为。
此外,可以将这些对象特征向量输入针对特定命令训练得到的对象特征检测模型,从而输出对应的检测结果,进而根据输出的检测结果判断该特定命令是否具有攻击性。
通过本发明实施例,将对象特征数据表示成数字化的对象特征向量,可以简单地根据其正态分布是否存在异常点来确定是否存在攻击。
图7和图8示意性地示出了根据本发明其他实施例的检测攻击行为的方法的流程图。
其中,图7具体示出了对象特征检测模型的训练方法,其中,该训练方法对所有的命令都具有普遍适应性。
如图7所示,在该实施例中,该方法除了包括上文参考方案一或方案二或方案三(如图2描述的操作S210~S230)以及图6描述的操作S225~S229之外,还包括操作S280和S300。为了描述的简洁起见,这里省略对方案一或方案二或方案三中的相关操作以及操作S225~S229的描述。
在操作S280,遍历每条命令。
在操作S290,针对每条命令获取一包含有多个样本对象特征向量的第二训练样本。
其中,这些样本对象特征向量也是根据集群中所有用户的shell日志得到的,其具体获取方法可以参考前述实施例中对象特征向量的获取方法,在此不再赘述。
在操作S300,基于每个第二训练样本中包含的多个样本对象特征向量,训练一对象特征检测模型,其中,向每个对象特征检测模型输入与命令对应的多个对象特征向量时所输出的第二结果能够表征对应对象是否存在攻击行为。例如,将通过前述实施例得到的关于集群中所有用户的多个对象特征向量输入该关于特定命令的对象特征检测模型,就可以输出用于判断特定命令是否存在攻击性的检测结果。
应该理解,对不同的命令进行攻击行为判断时,一般需要基于这个命令的集群中的所有用户的shell日志训练一个专用的特定对象特征检测模型,这是因为通常情况下不同的命令其操作者可能不同。
通过本发明实施例,可以预先为特定命令训练对应的对象特征检测模型,并利用对应的对象特征检测模型检测该特定命令是否具有攻击性。
此外,本发明实施例还提供了另一种模型训练方法。具体地,在上述操作即基于提取的对象特征数据确定是否存在攻击行为的基础上,该训练方法包括:将针对某条特定命令的多个对象特征向量分成一训练样本和一检测样本;基于该训练样本,训练一对象特征检测模型;将该检测样本输入该对象特征检测模型,得到对应的第二输出结果;以及基于第二输出结果,确定是否存在攻击行为。
其中,在本发明实施例中,在划分训练样本和检测样本时,也可以将这多个对象特征向量中的80%作为训练样本,20%作为检测样本。
需要说明的是,在本发明实施例中,行为特征检测模型是为了学习一个人的操作习惯,而对象特征检测模型,则是为了学习一个集群中,被操作对象的设置、维护、分布等特征属性。
如图8所示,在该实施例中,该方法除了包括上文参考方案一或方案二或方案三(如图2描述的操作S210~S230)以及图6描述的操作S225~S229以及图7描述的操作S280和S300之外,还包括操作S310和S320。为了描述的简洁起见,这里省略对方案一或方案二或方案三中的相关操作以及操作S225~S229和操作S280和S300的描述。
在操作S310,比较每个第二结果与通过人工分析与对应命令对应的多个对象特征向量得到的检测结果,以确定对应对象特征检测模型的第二正报率和第二误报率;以及
在操作S320,基于第二正报率和第二误报率,调整对应对象特征检测模型的偏离系数。
需要说明的是,上述第二正报率和第二误报率之和为1。并且,正报包括:与操作对象关联的操作命令实际上具有攻击性即属于攻击行为,检测结果也是攻击行为,或者与操作对象关联的操作命令实际上不具有攻击性即不属于攻击行为,检测结果也是非攻击行为,即检测结果与实际相符;误报包括:与操作对象关联的操作命令实际上具有攻击性,检测结果却是不具有攻击性,或者与操作对象关联的操作命令实际上不具有攻击性,检测结果却是具有攻击性,即检测结果与实际不符。
此外,如果一个对象特征检测模型的偏离系数越高,那么在检测结果显示“与操作对象关联的操作命令具有攻击性”时,该操作命令实际上具有攻击性的可能性就越大,即如果检测结果具有攻击性,那么检测结果与实际相符的可能性就越大。
如果一个对象特征检测模型的正报率和误报率没有达到一个合适的水平,那么使用该对象特征检测模型检测攻击行为的准确率就难以保证,因此,为了保证较高的准确率,在对象特征检测模型训练完毕后,还需要调整其正报率和误报率,使两者达到一个合适的水平。
具体地,针对某个对象特征检测模型,一方面可以将检测样本输入该对象特征检测模型,输出一个检测结果,另一方面可以通过人工分析手段,分析检测样本集,得到另一个的检测结果,然后对比两个检测结果,就可以大概了解该对象特征检测模型的正报率和误报率,从而可以根据两者调整对象特征检测模型的偏离系数,直到两者达到一个合适的水平为止。
需要说明的是,对一个对象特征检测模型而言,其正报率和误报率的平衡点也不是一个确定的量,它也与用户或者企业对业务的实际需求有关。比如,一业务对攻击检测的准确度要求不高,正报率为60%,误报率为40%,也可以认为两者达到了一个合适的水平。再比如,一业务对攻击检测的准确度要求较高,正报率为80%,误报率为20%,才可以认为两者达到了一个合适的水平。
作为一种可选的实施例,基于提取的行为特征数据和对象特征数据,确定是否存在攻击行为,还包括:先基于所述提取的行为特征数据确定是否存在攻击行为,再基于所述提取的对象特征数据确定是否存在攻击行为;或者先基于所述提取的对象特征数据确定是否存在攻击行为,再基于所述提取的行为特征数据确定是否存在攻击行为。
具体地,在基于提取的行为特征数据和对象特征数据确定是否存在攻击行为时,可以先基于提取的行为特征数据进行初步过滤,确定是否存在攻击行为,再基于提取的对象特征数据进行二次过滤,进一步确定是否存在攻击行为,或者可以先基于提取的对象特征数据进行初步过滤,确定是否存在攻击行为,再基于提取的行为特征数据进行二次过滤,进一步确定是否存在攻击行为。
通过本发明实施例,设置双层攻击行为检测,可以防止无检测或者漏检测。
此外,两个模型(即行为特征检测模型和对象特征检测模型)即可以同时使用,也可以独立运行,互不干扰。
两个模型虽然都是从shell日志中训练而来,但是训练对象完全不同,行为特征检测模型是针对执行者的,对象特征检测模型是针对被操作对象的,所以一般不建议通过取两个模型的检测结果的交集的方式来确定最终结果,因为很多时候两个模型的检测结果根本没有交集。
此外,当有攻击被检出时,不管是哪个模型的检出结果。我们可以根据该结果对应的执行者去调整行为特征检测模型的偏离系数,根据该结果对应的命令名称去调整对象特征检测模型的偏离系数,以此来增加高危用户和高危命令被检出的概率即可能性的大小。
通过本发明提供了基于无监督学习分析shell日志从而检测黑客入侵的系统和方法,可以解决传统的基于语法分析和关键字匹配方法中人力成本大和无法应对APT等高级攻击的问题。该方法提供了从shell日志提取行为特征和对象特征的方法,基于此方法,可以有效学习一个人的日常操作习惯以及集群中关键对象的被操作特征,从而提高对黑客入侵检测的识别率和准确率,并且对APT等高级攻击行为极为有效,改变了传统检测方法应对高级攻击束手无策的局面。
示例性装置
在介绍了本发明示例性实施方式的方法之后,接下来,参考图9对本发明示例性实施方式的检测攻击行为的系统进行描述。
图9示意性地示出了根据本发明实施例的检测攻击行为的系统的框图。
如图9所示,该系统900包括获取模块910、提取模块920和确定模块930。该系统900可以用来实现参考图2~图8所示的方法。
获取模块910,用于获取操作日志;
提取模块920,用于基于获取的操作日志,提取用于表征目标用户的操作习惯的行为特征数据,和/或提取用于表征操作对象的特点的对象特征数据;以及
确定模块930,用于基于提取的行为特征数据和/或对象特征数据,确定是否存在攻击行为。
与现有技术中基于语法分析和关键字匹配进行有监督学习的攻击行为检测,需要事先对训练数据进行标记,导致人工成本高,且对高级攻击可能无效相比,本发明实施例提供了一种基于无监督学习的shell日志分析方法,能够基于用户的行为特征和/或操作对象的特征进行攻击行为检测,无需事先对训练数据进行标记,相比于有监督学习,节省了一定的人力成本,此外,本发明实施例提供的检测方法针对个人的日常shell日志进行训练,由于从不同角度学习一个人的操作习惯以及操作对象的相关特征,并且采用非白即黑的策略,因此无需实时动态跟踪外界最新攻击动态,也能节省了一定的人力成本。另外,由于本发明实施例,不再关注语法规则分析关键字匹配,因而即使攻击者使用的是系统标准命令,也具备一定的检出的能力,而不是像现有的检测方法那样束手无策,从而能够有效应对APT攻击。
作为一种可选的实施例,如图10所示,提取模块920包括:第一提取单元921,用于基于所述获取的操作日志,提取所述目标用户的命令执行序列;第一标号单元922,用于对所述命令执行序列中的每条命令进行数字化标号,得到第一映射序列,其中,所有标号在整体上表现为连续性数字;第一截取单元923,用于按照第一预设步长对所述第一映射序列进行截取,得到多个行为特征向量;以及第一确定单元924,用于将所述多个行为特征向量作为所述行为特征数据。
通过本发明实施例,将行为特征数据表示成数字化的行为特征向量,可以简单地根据其正态分布是否存在异常点来确定是否存在攻击。
作为一种可选的实施例,如图11所示,确定模块930包括:第一获取单元931,用于获取包含有多个样本行为特征向量的第一训练样本;第一训练单元932,用于基于所述第一训练样本中包含的所述多个样本行为特征向量,训练一行为特征检测模型,其中,向所述行为特征检测模型输入所述多个行为特征向量时所输出的第一结果能够表征所述目标用户是否存在攻击行为。
通过本发明实施例,可以预先为特定用户训练对应的行为特征检测模型,并利用对应的行为特征检测模型检测该特定用户是否具有攻击性。
作为一种可选的实施例,所述系统还包括:第一比较模块,用于比较所述第一结果与通过人工分析所述多个行为特征向量得到的检测结果,以确定所述行为特征检测模型的第一正报率和第一误报率;以及第一调整模块,用于基于所述第一正报率和所述第一误报率,调整所述行为特征检测模型的偏离系数。
如果一个行为特征检测模型的正报率和误报率没有达到一个合适的水平,那么使用该行为特征检测模型检测攻击行为的准确率就难以保证,因此,为了保证较高的准确率,在行为特征检测模型训练完毕后,还需要调整其正报率和误报率,使两者达到一个合适的水平。
作为一种可选的实施例,所述提取模块包括:第二提取单元,用于基于所述获取的操作日志,提取用户集群的命令执行集;第二确定单元,用于针对所述命令执行集中的每条命令,确定一对应的命令参数序列;第二标号单元,用于针对每个命令参数序列,对其中的每个命令参数进行数字化标号,得到一第二映射序列,其中,在任一第二映射序列中所有标号在整体上表现为连续性数字;第二截取单元,用于按照第二预设步长对每个第二映射序列进行截取,得到与每条命令对应的多个对象特征向量;以及第三确定单元,用于将所述与每条命令对应的多个对象特征向量作为所述对象特征数据。
通过本发明实施例,将对象特征数据表示成数字化的对象特征向量,可以简单地根据其正态分布是否存在异常点来确定是否存在攻击。
作为一种可选的实施例,所述确定模块包括:遍历单元,用于遍历每条命令;第二获取单元,用于针对获取一包含有多个样本对象特征向量的第二训练样本;第二训练单元,用于基于每个第二训练样本中包含的多个样本对象特征向量,训练一对象特征检测模型,其中,向每个对象特征检测模型输入与命令对应的多个对象特征向量时所输出的第二结果能够表征对应对象是否存在攻击行为。
通过本发明实施例,可以预先为特定命令训练对应的对象特征检测模型,并利用对应的对象特征检测模型检测该特定命令是否具有攻击性。
作为一种可选的实施例,所述系统还包括:第二比较模块,用于比较每个第二结果与通过人工分析与对应命令对应的多个对象特征向量的检测结果,以确定对应对象特征检测模型的第二正报率和第二误报率;以及第二调整模块,用于基于所述第二正报率和所述第二误报率,调整所述对应对象特征检测模型的偏离系数。
如果一个对象特征检测模型的正报率和误报率没有达到一个合适的水平,那么使用该对象特征检测模型检测攻击行为的准确率就难以保证,因此,为了保证较高的准确率,在对象特征检测模型训练完毕后,还需要调整其正报率和误报率,使两者达到一个合适的水平。
作为一种可选的实施例,所述确定模块还用于:先基于所述提取的行为特征数据确定是否存在攻击行为,再基于所述提取的对象特征数据确定是否存在攻击行为;或者先基于所述提取的对象特征数据确定是否存在攻击行为,再基于所述提取的行为特征数据确定是否存在攻击行为。
通过本发明实施例,设置双层攻击行为检测,可以防止无检测或者漏检测。
示例性介质
在介绍了本发明示例性实施方式的装置之后,接下来,参考图12对本发明示例性实施方式的、用于存储有计算机可执行指令,该指令在被处理单元执行时用于实现图2至图8中的检测攻击行为的方法的介质进行描述。
在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在计算设备上运行时,所述程序代码用于使所述计算设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的检测攻击行为的方法中的步骤,例如,所述计算设备可以执行如下操作:获取操作日志;基于获取的操作日志,提取用于表征目标用户的操作习惯的行为特征数据,和/或提取用于表征操作对象的特点的对象特征数据;以及基于提取的行为特征数据和/或对象特征数据,确定是否存在攻击行为。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
图12示意性地示出了根据本发明实施方式的检测攻击行为的方法的程序产品示意图。
如图12所示,描述了根据本发明的实施方式的检测攻击行为的的程序产品40,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在计算设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆,RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言——诸如Java,C++等,还包括常规的过程式程序设计语言——诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)——连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
示例性计算设备
在介绍了本发明示例性实施方式的方法、介质和装置之后,接下来,参考图13对本发明示例性实施方式的计算设备进行描述,该计算设备包括处理单元和存储单元,存储单元存储有计算机可执行指令,上述指令在被上述处理单元执行时用于实现图2至图8中的检测攻击行为的方法进行描述。
本发明实施例还提供了一种计算设备。所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
在一些可能的实施方式中,根据本发明的计算设备可以至少包括至少一个处理单元、以及至少一个存储单元。其中,所述存储单元存储有程序代码,当所述程序代码被所述处理单元执行时,使得所述处理单元执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的检测攻击行为的方法中的步骤。例如,所述处理单元可以执行如下步骤:获取操作日志;基于获取的操作日志,提取用于表征目标用户的操作习惯的行为特征数据,和/或提取用于表征操作对象的特点的对象特征数据;以及基于提取的行为特征数据和/或对象特征数据,确定是否存在攻击行为。
图13示意性地示出了根据本发明实施例的检测攻击行为的方法的计算设备的框图。
下面参照图13来描述根据本发明的这种实施方式的检测攻击行为的计算设备50。如图13所示的计算设备50仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图13所示,计算设备50以通用计算设备的形式表现。计算设备50的组件可以包括但不限于:上述至少一个处理单元501、上述至少一个存储单元502、连接不同系统组件(包括存储单元502和处理单元501)的总线503。
总线503包括数据总线、地址总线和控制总线。
存储单元502可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)5021和/或高速缓存存储器5022,还可以进一步包括只读存储器(ROM)5023。
存储单元502还可以包括具有一组(至少一个)程序模块5024的程序/实用工具5025,这样的程序模块5024包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
计算设备50也可以与一个或多个外部设备504(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与计算设备50交互的设备通信,这种通信可以通过输入/输出(I/O)接口505进行。并且,计算设备50还可以通过网络适配器506与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器506通过总线503与计算设备50的其它模块通信。应当明白,尽管图中未示出,可以结合计算设备50使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
应当注意,尽管在上文详细描述中提及了系统的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。
此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。