命令检测方法、装置、计算机设备以及存储介质与流程

文档序号:18160726发布日期:2019-07-13 09:19阅读:178来源:国知局
命令检测方法、装置、计算机设备以及存储介质与流程

本发明涉及网络技术领域,特别涉及一种命令检测方法、装置、计算机设备以及存储介质。



背景技术:

互联网应用与人们的生活正变得密不可分,而支撑每一款网络应用的背后,是数以万计的服务器。用户的个人数据、业务的商业数据也存储于这些服务器中。如何保障服务器的运行安全,对于每一家互联网公司来说,都变得尤为重要。

攻击者的入侵渠道不胜枚举,但不管如何,一旦完成渗透,则一定会执行相应操作,从而达到入侵的目的。这类操作可以通过下发恶意命令来实现。现有的防御手段,往往会在对服务器所上报的命令进行检测,例如,将上报的命令与已知的恶意命令集合进行匹配,以获知哪些命令是恶意命令。但是,由于恶意命令集合也很容易被攻击者获知,攻击者往往会利用操作系统下默认允许的语法功能,如变量替换、字符倒序、通配符、各种编码格式等,对实际运行的命令进行语法变形,从而达到常人直观无法阅读和理解的效果。上述技术,这里称之为命令混淆。命令混淆的使用,会导致已有的防护检测手段彻底失效,攻击者借助混淆变形,可以肆无忌惮地对服务器下达任何恶意命令。为此,亟需一种能够提高检测准确率的命令检测方法。



技术实现要素:

本发明实施例提供了一种命令检测方法、装置、计算机设备以及可读存储介质,能够在实现实时检测的同时,提高命令检测的准确性。该技术方案如下:

一方面,提供了一种命令检测方法,所述方法包括:

基于已知混淆命令的多个第一特征和正常业务命令的多个第二特征,对多个待检测的命令进行检测,确定多个目标命令,每个目标命令均具有一个或多个第一特征但不具有任一第二特征的命令;

获取所述多个目标命令的运行态文本;

基于所述多个目标命令以及对应的运行态文本,获取所述多个目标命令的可疑程度信息,其中,所述可疑程度信息用于表示命令为混淆命令的可能性;

当任一个目标命令的可疑程度信息符合目标条件,将所述目标命令确定为混淆命令。

一方面,提供了一种命令检测装置,所述装置包括:

检测模块,用于基于已知混淆命令的多个第一特征和正常业务命令的多个第二特征,对多个待检测的命令进行检测,确定多个目标命令,每个目标命令均具有一个或多个第一特征但不具有任一第二特征的命令;

文本格式获取模块,用于获取所述多个目标命令的运行态文本;

可疑程度信息获取模块,用于基于所述多个目标命令以及对应的运行态文本,获取所述多个目标命令的可疑程度信息,其中,所述可疑程度信息用于表示命令为混淆命令的可能性;

命令确定模块,用于当任一个目标命令的可疑程度信息符合目标条件,将所述目标命令确定为混淆命令。

在一种可能实现方式中,所述检测模块包括:

第一特征匹配单元,用于基于所述多个第一特征,对所述多个待检测的命令进行特征匹配,确定与所述多个第一特征中任一个特征匹配成功的第一命令;

第二特征确定单元,用于根据每个第一命令所匹配的第一特征,确定所述每个第一命令的目标第二特征,所述目标第二特征是指所述第一特征对应的至少一个第二特征;

目标命令确定单元,用于根据所述每个第一命令的目标第二特征,对所述多个第一命令进行特征匹配,确定所述多个目标命令。

在一种可能实现方式中,该目标命令确定单元,用于根据所述每个第一命令的目标第二特征,对所述多个第一命令进行特征匹配,确定所述多个第二命令,所述第二命令为具有任一目标第二特征的第一命令;从所述多个第一命令中过滤掉所述多个第二命令,得到所述多个目标命令。

在一种可能实现方式中,所述文本格式获取模块,用于将所述多个目标命令导入沙箱调试程序,通过所述沙箱调试程序执行所述多个目标命令,记录脚本调试执行过程中的运行态文本。

在一种可能实现方式中,所述装置还包括:

存储模块,用于将所述多个目标命令存储至目标数据库,所述目标数据库用于存储所述目标命令以及对应的运行态文本;

该存储模块还用于当获取到第一目标命令的运行态文本时,将所述运行态文本存储至所述第一目标命令在所述目标数据库中的存储位置。

在一种可能实现方式中,所述沙箱调试程序执行任一个目标命令的执行时间小于目标时长;或,对调用所述沙箱调试程序的代码进行更改,使得所述代码不执行任一个目标命令。

在一种可能实现方式中,所述装置还包括:删除模块,用于当第二目标命令被确定为混淆命令或非混淆命令时,从所述目标数据库中删除所述第二目标命令。

在一种可能实现方式中,所述可疑程度信息获取模块用于根据下述一项信息或任意两项信息的组合,获取所述多个目标命令的可疑程度信息:

所述多个目标命令所匹配的第一特征;

所述多个目标命令以及对应的运行态文本之间的文本差异;

所述多个目标命令的运行态文本和预设命令之间的匹配信息。

在一种可能实现方式中,所述可疑程度信息获取模块包括第一获取单元,该第一获取单元用于获取所述多个目标命令所匹配的第一特征的可疑程度信息;对于任一个目标命令,对所述任一目标命令的第一特征的可疑程度信息进行累计,得到所述任一个目标命令的可疑程度信息。

在一种可能实现方式中,所述可疑程度信息获取模块包括第二获取单元,该第二获取单元用于获取所述多个目标命令与对应的运行态文本之间的文本差异;根据所述多个目标命令的文本差异和文本差异阈值,确定所述多个目标命令的可疑程度信息。

在一种可能实现方式中,所述可疑程度信息获取模块包括第三获取单元该第三获取单元用于基于所述多个目标命令的运行态文本与预设命令进行匹配,当第三目标命令的运行态文本与所述预设命令中的一个或多个的组合匹配成功时,根据所述第三目标命令的匹配情况,获取所述第三目标命令的可疑程度信息。

在一种可能实现方式中,所述装置还包括:告警模块,用于对所述目标命令的来源服务器进行告警。

一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如上述的命令检测方法所执行的操作。

一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如上述的命令检测方法所执行的操作。

本发明实施例提供的技术方案带来的有益效果至少包括:

通过基于已知混淆命令所得到的第一特征和基于正常业务命令的第二特征,进行静态的特征匹配和筛选,从而显著降低了数据分析的规模,从而使得实时的命令检测成为可能,并通过获取命令的运行态文本,实现了一定程度的去混淆功能,避免了由于语义分析而造成的计算困难和耗时,再通过采用命令和运行态文本来确定可疑程度信息的方式,来作为最终确定命令是否为混淆命令的参考,大大提高了检测准确性。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的命令检测方法的实施环境示意图;

图2是本发明实施例提供的一种命令检测方法的流程图;

图3是本发明实施例提供的一种命令检测方法的流程图;

图4是本发明实施例提供的一种获取可疑程度信息的示例图;

图5是本发明实施例提供的一种获取可疑程度信息的示例图;

图6是本发明实施例提供的一种检测过程中的数据流向的示例图;

图7是本发明实施例提供的一种命令检测装置的结构示意图;

图8是本发明实施例提供的一种计算机设备的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

图1是本发明实施例提供的命令检测方法的实施环境示意图。该实施环境中可以包括至少一个服务器101、至少一个服务器102以及管理员终端等设备。其中,至少一个服务器101可以用于为用户提供业务服务,并且,该至少一个服务器101可以基于服务器上所运行的命令向至少一个服务器102进行上报,其上报的内容可以包括运行的全量数据,也即是,运行的命令、命令相关的进程以及网络连接情况等等。上述上报也可以是由服务器101所配置的数据采集器(如agent)来进行。该至少一个服务器102可以基于上报的命令,通过基于已知混淆命令的多个第一特征和正常业务命令的多个第二特征,对多个待检测的命令进行检测,确定多个目标命令,以实现对命令的初步筛选,从而得到一些疑似是混淆命令的目标命令,再获取这些目标命令的运行态文本,以获知这些目标命令在运行时所进行的操作,从而基于目标命令和运行态文本,来确定目标命令的可疑程度信息,通过可疑程度信息可以判断目标命令是否为混淆命令,当确定混淆命令后,还可以将所确定的混淆命令进行告警,例如,向管理员终端进行报警以及向相关服务器进行告警等,当然,该服务器102还可以将所确定的混淆命令发送至管理员终端,由技术人员进行人工检测,从而确定是否为混淆命令,再确定是否进行进一步告警。当然,在上述至少一个服务器102的处理过程中,还可以涉及到数据库存储,例如,以图1中所示的目标数据库来说,在服务器上报的命令被初步筛选后,可以存储于目标数据库,而当对于目标数据库中所存储的命令获取到运行态文本后,还可以将运行态文本存储至目标数据库,以便再次以目标数据库为基础,来进一步进行命令检测等,本发明实施例对此不做具体限定。

图2是本发明实施例提供的一种命令检测方法的流程图。该图2所示的实施例中,仅以计算机设备作为该方法的执行主体进行介绍,该实施例具体包括:

201、基于已知混淆命令的多个第一特征和正常业务命令的多个第二特征,对多个待检测的命令进行检测,确定多个目标命令,每个目标命令均具有一个或多个第一特征但不具有任一第二特征的命令。

上述多个第一特征是基于已知混淆命令所提取的特征,第二特征是基于已知正常业务命令所提取的特征,通过这两类特征的检测,以实现筛选的目的,所得到的目标命令是一些疑似的混淆命令,通过该检测过程,可以减小后续需要处理的命令数量。

202、获取该多个目标命令的运行态文本。

该运行态文本用于描述该目标命令在运行中所执行的操作,能够体现一个命令在实际运行中到底都会进行哪些操作,从而可以基于命令所对应的操作,来获知命令是否为混淆命令。

203、基于该多个目标命令以及对应的运行态文本,获取该多个目标命令的可疑程度信息,其中,该可疑程度信息用于表示命令为混淆命令的可能性。

在本发明实施例中,目标命令以及对应的运行态文本,可以表示目标命令本身以及其真实运行时对应的操作,由此,可以基于上述信息的对比等方式,来获知命令是否经过了混淆,例如,可以通过命令与运行态文本之间的文本差异、命令本身所匹配的特征以及命令是否是一些预设命令等情况,来综合判断命令是否为混淆命令。

204、当任一个目标命令的可疑程度信息符合目标条件,将该目标命令确定为混淆命令。

当基于上述的可疑程度信息确定目标命令为混淆命令时,可以基于系统的设定,来对目标设备进行告警,例如,系统设定是向来源服务器告警,则可确定目标命令的来源服务器,将告警信息发送至来源服务器,该告警信息可以包括目标命令本身或者目标命令的相关进程等。当然,如果系统设定是向管理员终端进行告警,则可以向管理员终端发送告警信息,此时,告警信息可以包括目标命令本身、来源服务器,当然也可以包括目标命令的相关进程等等,以便于管理员终端对目标命令进行定位。

本发明实施例针对大规模服务器应用场景,提出了一种具备可运营性的混淆命令的实时检测方法,大大提升了防御效果,提供了更具弹性的检测方法。具体地,本发明实施例结合了命令的静态与动态混淆属性的分析,首先,对于上报的命令来说,会通过基于已知混淆命令所得到的第一特征和基于正常业务命令的第二特征,进行静态的特征匹配和筛选,从而显著降低了数据分析的规模,从而使得实时的命令检测成为可能,并通过获取命令的运行态文本,实现了一定程度的去混淆功能,避免了由于语义分析而造成的计算困难和耗时,再通过采用命令和运行态文本来确定可疑程度信息的方式,来作为最终确定命令是否为混淆命令的参考,大大提高了检测准确性。当然,伴随着准确性的提升,也就大大降低了误报的可能性,实现了精准地识别可疑的混淆变形命令,提升对于高级威胁入侵手段的有效感知能力,还能够显著增强服务器的安全防护效果。

图3是本发明实施例提供的一种命令检测方法的流程图。该图3所示的实施例中,仅以计算机设备作为该方法的执行主体进行介绍,该实施例具体包括:

301、计算机设备基于已知混淆命令的多个第一特征,对多个待检测的命令进行特征匹配,确定与该多个第一特征中任一个特征匹配成功的第一命令。

其中,该多个第一特征可以根据下述过程获取:获取多个已知混淆命令,确定该多个已知混淆命令的共性特征,来作为第一特征,该第一特征可以用来表示混淆类型,当然,对于一个混淆类型来说,可以对应于一个或多个第一特征。例如,在确定该多个已知混淆命令的共性特征时,可以对多个已知混淆命令进行聚类,获取多个命令集,对于任一命令集来说,确定其聚类中心的已知混淆命令,对该聚类中心的已知混淆命令进行分析,将分析得到的混淆类型提取为该命令集对应的第一特征。

在一种可能实现方式中,基于不同的泛化程度,提取该多个已知混淆命令的不同粒度的共性特征,泛化程度越大,共性特征数量越少,反之,泛化程度越小,共性特征数量越多。当然,随着恶意样本也即是已知混淆命令的不断扩充,还可以对各个混淆方式的第一特征进行更新,以便提高准确性。

需要说明的是,上述已知混淆命令可以是由技术人员基于服务器的历史运行配置或是从网络上收集,本发明实施例对这些作为恶意样本的已知混淆命令的来源不做限定。而对于该多个待检测的命令来说,可以通过服务器上报得到,具体地,服务器可以通过布设于服务器侧的数据采集器进行命令收集并上报,当然,在上报服务器上所运行的命令时,还可以上传命令的执行进程、父进程等、进程状态、事件时间、业务信息、网络连接的运行数据。

在执行该步骤301时,计算机设备可以先提取运行数据中的命令,再将各个命令输入由该多个第一特征构成的特征过滤环,各个命令与特征过滤环上的各个第一特征进行匹配,当任一命令与任一特征匹配成功,则将该命令作为筛选结果输出至下一个特征匹配流程。需要说明的是,上述特征匹配过程可以是基于第一特征的数量,对多个待检测的命令进行复制,得到多个副本,每个副本中均包含该多个待检测命令,每个副本里的所有待检测命令均与同一个第一特征进行特征匹配,以确定该多个待检测命令中与该第一特征匹配的命令,从而保证所有待检测命令和所有第一特征均进行过匹配的过程,能够保证不会遗漏混淆命令。

上述的特征匹配过程能够基于已知混淆命令,来确定一些用于代表混淆类型的静态特征来代表已知混淆命令的一些共性,而对上报的命令基于这些静态特征进行筛选,则可以除去不具备混淆特征的常规命令,并输出与这些静态特征匹配的命令。

在一些实施例中,上述多个第一特征可以包括但不限于如下特征:

a)变量名混淆,即存在利用“$”符号赋值的操作,且在同一命令中重复至少1次。以原命令“cat/etc/passwd”为例,混淆后的命令示例:“a=ca;b=t;c=pas;d=swd;$a$b/etc/$c$d”。

b)ifs滥用,即使用预定义的“ifs”字符变量,对原始命令进行拆分,从而达到混淆的目的。以原命令“cat/etc/passwd”为例,混淆后的命令示例:“cat/et${ifs}c/pas${ifs}swd”。

c)位移控制,即使用linux环境允许的位移量选择语法,隐藏实际执行的命令字符。以原命令“cat/etc/passwd”为例,混淆后的命令示例:“a=ppasswddd;cat/etc/${a:1:6}”。

d)base64编码,即使用base64编码隐藏执行的命令。混淆后的命令示例:“`echoy2f0ic9ldgmvcgfzc3dkcg==|base64-d`”。

e)其他进制编码,即使用二进制以外的进制对原命令进行编码,如使用十六进制编码原命令。

以原命令“cat/etc/passwd”为例,混淆后的命令示例:“`echo$'\x63\x61\x74\x30\x2f\x65\x74\x63\x2f\x70\x61\x73\x73\x77\x64'`”。

f)rot13加密,即使用替换加密的方式隐藏所执行的命令。以原命令“cat/etc/passwd”为例,混淆后的命令示例:“`echopng/rgp/cnffjq|tra-mn-zn-za-m`”。

g)倒序手法,即使用rev函数,将原始命令进行倒序从而实现混淆变形。以原命令“cat/etc/passwd”为例,混淆后的命令示例:“`echodwssap/cte/tac|rev`”。

h)回显绕过,即使用echo命令达到隐藏原始命令的效果。以原命令“cat/etc/passwd”为例,混淆后的命令示例:“$(echoca)t/$(echoetc)/$(echopas)swd”。

i)通配符混淆,即使用系统可识别的“*”、“?”作为通配符,将原始命令进行混淆变形,已逃逸高危基线的监控。以原命令“cat/etc/passwd”为例,混淆后的命令示例:“cat/et?/p*assw?”。

上述特征的举例仅是本发明实施例提供的一些实施例,可以理解的是,随着对混淆命令的检测,该第一特征还可以有所增减,本发明实施例对此不做限定。

302、该计算机设备根据每个第一命令所匹配的第一特征,确定每个第一命令的目标第二特征,该目标第二特征是指第一特征对应的至少一个第二特征,第二特征为正常业务命令的特征。

其中,该多个第二特征可以根据下述过程获取:获取多个已知正常业务命令,确定该多个已知正常业务命令的共性特征,来作为第二特征。当然,还可以基于第一特征,来获取与第一特征匹配的至少一个正常业务命令,提取该与第一特征匹配的至少一个正常业务命令的共性特征,得到第一特征对应的至少一个第二特征,从而提高过滤的针对性。

需要说明的是,针对每一个第一特征,也即是,针对每一类混淆类型,会不断更新维护相应的第二特征。例如,当确定任一命令为正常业务命令时,可以根据该命令所匹配的第一特征,来更新该第一特征所对应的第二特征,其具体更新过程与特征的获取过程同理,在此不做赘述。

例如,上述确定任一命令为正常业务命令,可以在误报的场景下确定的,从而计算机设备可以基于误报的情况来更新第二特征,也即是,该方法还包括:当接收到任一命令的误报通知,该误报通知用于表示该命令被告警为混淆命令但是实际为正常业务命令,则可以基于该命令所匹配的第一特征,来更新该第一特征所对应的第二特征,例如,将该命令作为用于获取该第一特征对应的第二特征的正常业务命令之一,重新进行第二特征的获取。可选地,当接收到任一命令的漏报通知,该漏报通知用于表示该命令被确定为正常业务命令但是实际为混淆命令,则可以基于该命令所匹配的第一特征,来更新该第一特征所对应的第二特征,例如,将该命令从该第一特征对应的第二特征的正常业务命令中删除,重新进行第二特征的获取。通过上述基于误报或漏报情况的更新,能够实现对误报或漏报的收敛与调控。

对于任一个第一特征来说,当任一命令与第一特征匹配,并不能够说明该第一命令确实是混淆命令,此时,该第一命令也可能是正常业务命令,因此,还可以基于该步骤302和303的过程,通过正常业务命令所具有的特征,对该第一命令进行进一步判断,以降低误判率,提高检测的准确性。

需要说明的是,在步骤301的匹配过程中,计算机设备可以基于匹配结果为第一命令进行标记,例如,为第一命令添加所匹配的第一特征的特征标记符,以便在基于第二特征进行特征匹配时,可以根据各个第一命令的特征标记符,将第一命令与第一命令的目标第二特征进行匹配,以实现来进一步判断。

303、根据每个第一命令的目标第二特征,对多个第一命令进行特征匹配,确定多个目标命令,每个目标命令均具有一个或多个第一特征但不具有任一第二特征的命令。

需要说明的是,上述基于第二特征的特征匹配可以基于已知的业务正常命令本身或命令的正则表达式进行。在一些实施例中,该步骤303中可以包括:根据该每个第一命令的目标第二特征,对该多个第一命令进行特征匹配,确定该多个第二命令,该第二命令为具有任一目标第二特征的第一命令;从该多个第一命令中过滤掉该多个第二命令,得到该多个目标命令。

上述步骤301至步骤303,是基于已知混淆命令的多个第一特征和正常业务命令的多个第二特征,对多个待检测的命令进行检测,确定多个目标命令的过程,可以将该多个第一特征看作是灰特征过滤环,而将该多个第二特征看作是白特征过滤环,通过该灰白两个层次过滤环的筛选,可以大大降低待检测命令的数据量,实现了对数据量的压制,从而使得快速、及时的检测成为可能,对于各个服务器来说,也就可以采用较短的周期来进行命令的上报,大大提高了检测的实时性,也能够实现后续告警的及时性。

304、将该多个目标命令存储至目标数据库,该目标数据库用于存储该目标命令以及对应的运行态文本。

通过上述两层的筛选,可以将这些可疑的目标命令存储至目标数据库,以避免数据处理过程中发生丢失等情况。在进行数据库存储时,可以按照目标格式进行存储,数据库字段可以包括分析所需的命令信息和发送工单所需的提示信息,包括但不限于:(1)命令;(2)命令的执行进程以及父进程等,可以作为后续告警和业务分析的数据基础;(3)事件时间;(4)业务信息,如机器负责人、所属区域、对应ip,可以作为后续告警和业务分析的数据基础;(5)匹配成功的第一特征的特征标记符,可以作为后续获取可疑程度信息的基础,如果无需采用第一特征来获取可疑程度信息,则该项也可以不存储在目标数据库中;(6)沙箱还原得到的该命令的运行态文本,在将目标命令存储至目标数据库时,该部分可以预设为空。

需要说明的是,本发明实施例通过目标数据库来对目标命令进行存储,以避免目标命令的丢失,且基于目标数据库的存储可以更有利于对命令的并行处理,而在一些实施例中,也可以不采用数据库形式对目标命令进行存储,而是采用队列等形式来存储,本发明实施例对具体采用哪种形式进行存储不进行限定。

305、该计算机设备将该多个目标命令导入沙箱调试程序,通过该沙箱调试程序执行该多个目标命令,记录脚本调试执行过程中的运行态文本。

其中,沙箱调试程序可以提供一个相对独立的运行环境,使得在沙箱调试程序中运行的命令不会影响到系统的运行,可以看作是一个实验环境。

该计算机设备可以通过将多个目标命令逐个导入沙箱调试程序,从而由沙箱调试程序执行各个目标命令,逐个记录脚本调试执行过程中的运行态文本。当然,计算机设备可以基于多个沙箱调试程序并行执行多个目标命令,记录各个沙箱调试程序在脚本调试执行过程中的运行态文本。其中,可以为各个沙箱调试程序设置处理队列,从目标数据库中提取出多个目标命令,将多个目标命令入列至各个沙箱调试程序的处理队列中,基于先进先出的原则,由各个沙箱调试程序来执行多个目标命令。上述示例仅为对沙箱调试程序的命令执行方式的举例,本发明实施例对具体采取哪种来实现不做限定。

需要说明的是,该沙箱调试程序可以不在该计算机设备上实现,而是在其他计算机设备上实现,以避免对当前计算机设备的处理资源的过多占用,也可以相对加快对命令的检测流程。当然,该计算机设备可以是设置有防火墙的设备,该其他计算机设备也可以是设置有防火墙的设备,以使得在运行时可以由防火墙来对一些恶意行为进行阻止和保护,进一步提高检测的安全性。

在一种示例中,计算机设备可以使用“sh-x”方式执行包含该命令的sh脚本,记录脚本调试执行过程中的运行态文本。例如,如下述代码所示,sh_x_sandbox_test.sh脚本文件中为变量替换类型的混淆命令“a=ca;b=t;c=pas;d=swd;$a$b/etc/$c$d”,可以通过“sh-x”执行得到其运行态文本,以原始命令“cat/etc/passwd”为例,其所得到的运行态文本可以为+cat/etc/passwd(如代码最后一行)。

[root@vm_0_3_centos~]#sh–xsh_x_sandbox_test.sh

+a=ca

+b=t

+c=pas

+d=swd

+cat/etc/passwd

在一些实施例中,还可以对沙箱调试程序的处理速度进行加速,例如,可以为沙箱调试程序设置每个目标命令的目标时长作为最大执行时长,使得该沙箱调试程序执行任一个目标命令的执行时间小于目标时长,例如,可以选用“timeout”函数限制脚本执行时间,如限制脚本运行不超过0.01秒。又例如,可以对调用该沙箱调试程序的代码进行更改,使得该代码不执行任一个目标命令,也即是,对执行沙箱调试程序的bash本身代码进行修改,注释执行部分的代码逻辑,实现不执行任一个目标命令的目的。

通过上述导入和执行命令的过程,可以还原得到被实际执行命令的运行态文本,达到去混淆的目的,从而可以利用还原所得到的运行态文本来进行后续的可疑程度信息的获取。

306、当该计算机设备获取到任一目标命令的运行态文本时,将该运行态文本存储至该目标命令在该目标数据库中的存储位置。

当计算机设备获取到任一个目标命令的运行态文本后,可以基于该目标命令的运行态文本来更新目标数据库,使得在目标命令对应的数据项里包含命令本身和该命令去混淆后的结果,也即是该运行态文本。

307、该计算机设备基于该多个目标命令以及对应的运行态文本,获取该多个目标命令的可疑程度信息。

计算机设备可以从目标数据库中获取在本发明实施例中,计算机设备可以根据下述一项信息或任意两项信息的组合,获取该多个目标命令的可疑程度信息:

(1)该多个目标命令所匹配的第一特征。

基于该所匹配的第一特征获取可疑程度信息时,计算机设备可以获取该多个目标命令所匹配的第一特征的可疑程度信息;对该多个目标命令的第一特征的可疑程度信息分别进行累计,得到该多个目标命令的可疑程度信息。各个第一特征的可疑程度信息可以预先设置,以在获取时使用。

当然,当一个目标命令所匹配的第一特征为一个时,则可以将该第一特征的可疑程度信息对应的可疑程度信息作为该目标命令的可疑程度信息,而当一个目标命令所匹配的第一特征为多个时,可以基于该多个第一特征的可疑程度信息来获取可疑程度信息。其中,第一特征本身可以设置有可疑程度信息,从而该目标命令的可疑程度信息可以为第一特征的可疑程度信息的累计值。

在一些实施例中,对于不同混淆类型的第一特征,还可以基于该目标命令所匹配的混淆类型所包含的第一特征数量和所匹配上的第一特征总数,来为混淆类型获取对应的权重,以得到该目标命令的可疑程度信息。例如,当目标命令匹配上的第一特征总数为l,其中,第一混淆类型的第一特征数量为m,第二混淆类型的第一特征数量为n,则可以将m/l作为第一混淆类型的权重,将n/l作为第二混淆类型的权重,在计算目标命令的可疑程度信息时,则可以采用(第一混淆类型的第一特征的可疑程度信息的累计值)*m/l+(第二混淆类型的第一特征的可疑程度信息的累计值)*n/l,以得到目标命令的可疑程度信息。

而如果可疑程度信息是为混淆类型设置的,则对于一个目标命令来说,可以确定其所匹配的第一特征对应的混淆类型,再基于混淆类型对应的可疑程度信息进行累计,以得到该目标命令的可疑程度信息。如ifs滥用、base64编码等为高危特征,可以设置其可疑程度信息为1,则当目标命令与ifs滥用、base64编码这两个混淆类型均匹配时,可以获取到该目标命令的可疑程度信息为2。

(2)该多个目标命令以及对应的运行态文本之间的文本差异。

在基于目标命令以及对应的运行态文本之间的文本差异来获取可疑程度信息时,计算机设备可以获取该多个目标命令与对应的运行态文本之间的文本差异;根据该多个目标命令的文本差异和文本差异阈值,确定该多个目标命令的可疑程度信息。由于运行态文本实际上是去混淆后的命令,因此,对命令以及去混淆后的命令之间进行文本比较,可以确定命令前后是否有发生改变,如果发生了显著的改变,则可能是由于确实目标命令是混淆命令。对于上述文本差异的获取,可以采用simhash算法,计算目标命令和沙箱调试程序所返回的运行态格式的simhash值,并计算二者之间的海明距离,如果两者的海明距离超过预设的文本差异阈值,则认为沙箱调试前后文本差异显著,则可以获取目标值作为可疑程度信息,当然,还可以基于文本差异的显著程度,来获取可疑程度信息,也即是,对于不同的文本差异程度设置有不同的可疑程度信息,当文本差异程度通过数值区间来表示,相应地,可疑程度信息也可以用数值来表示,也即是,确定命令和运行态文本之间的文本差异数值所属的数值区间,确定该数值区间所对应的可疑程度值,从而得到目标命令的可疑程度信息。

仍以命令“cat/etc/passwd”为例,假设文本差异阈值为3。当沙箱调试程序执行该命令时,由于没有混淆变形,则沙箱调试程序返回结果依然为“cat/etc/passwd”。即目标命令与对应的运行态文本均为“cat/etc/passwd”,此时有海明距离为0。当采用上述所示代码段中的变量替换类型来混淆,即目标命令为“a=ca;b=t;c=pas;d=swd;$a$b/etc/$c$d”,其运行态文本为“cat/etc/passwd”时,同理可计算得到海明距离为8,超过文本差异阈值3,此时可疑程度信息可以获取为1。

(3)该多个目标命令的运行态文本和预设命令之间的匹配信息。

在基于多个目标命令的运行态文本和预设命令之间的匹配信息来获取可疑程度信息时,计算机设备可以基于该多个目标命令的运行态文本与该预设命令进行匹配,当任一目标命令的运行态文本与该预设命令中的一个或多个的组合匹配成功时,根据该目标命令的匹配情况,获取该目标命令的可疑程度信息。

对于一些危险程度较高的命令,可以基于这些命令设置高危命令基线,也即是,可以事先设置一些命令来作为衡量目标命令是否为混淆命令的参照,如果运行态文本与预设命令中的一个或多个的组合匹配成功,则可以获取目标值作为可疑程度信息。当然,还可以根据所匹配的预设命令对应的可疑程度信息来进行累计,以得到目标命令的可疑程度信息。

上述(1)-(3)介绍了如何基于这三种信息中任一个信息获取目标命令的可疑程度信息,在一些实施例中,还可以综合上述三种信息中的至少两种信息,来获取目标命令的可疑程度信息。例如,计算机设备可以基于(1)所提供的目标命令所匹配的第一特征来获取第一可疑程度信息,基于(2)所提供的文本差异来获取第二可疑程度信息,基于(3)所提供的匹配信息来获取第三可疑程度信息,将上述第一可疑程度信息、第二可疑程度信息以及第三可疑程度信息的累计值作为该目标命令的可疑程度信息,以结合静态特征和动态特征来确定目标命令是否为混淆命令,大大降低了误判的可能性,提高了检测准确性。

308、该当任一个目标命令的可疑程度信息符合目标条件,该计算机设备将该目标命令确定为混淆命令。

其中,该目标条件可以为可疑程度信息大于可疑程度阈值,当然,该可疑程度信息也可以采用可疑级别表示,则该目标条件也可以为可疑程度信息大于可疑程度级别阈值,本发明实施例对此不做限定。

对于任一个目标命令来说,在步骤307的获取可疑程度信息的过程中,可以有如图4的过程,也即是,每当获取到一部分可疑程度信息时,对已获取到的可疑程度信息进行监测,当已获取到的可疑程度信息符合目标条件,则确定该目标命令为混淆命令,无需等待所有获取过程均完成,也即是,当基于上述步骤307中的(1)-(3)的信息获取可疑程度信息时,如果已获取到的第一可疑程度信息符合目标条件,则直接将该目标命令确定为混淆命令,无需再进行其他获取过程,以减轻计算机设备的计算压力,而当已获取的可疑程度信息不符合目标条件,则继续基于下一种方式来继续获取可疑程度信息。

上述过程可以有如下示例,以可疑程度信息为s,可疑程度阈值为3为例,当基于匹配的第一特征的可疑程度信息累计值为2时,则此时s=2,将s的当前取值与可疑程度阈值3相比,确定当前取值小于可疑程度阈值,则继续基于命令和运行态文本之间的文本差异来确定s的取值,例如,文本差异大于文本差异阈值,则对s进行以2为单位的增量处理,则此时s=2+2=4,此时确定s的取值大于可疑程度阈值,则可以不继续进行后续的处理,将该目标命令确定为混淆命令。

当然,上述获取可疑程度信息的过程还可以是多种方式并行,并基于多种方式所获取的可疑程度信息进行累计,以得到命令的可疑程度信息,例如图5所示,基于目标命令分别采用上述(1)、(2)和(3)的方式以得到对应的可疑程度信息,再获取三种方式多得到的可疑程度信息的累计值,来作为目标命令的可疑程度信息,再基于是否符合目标条件来确定是否为混淆命令。

在一些实施例中,当任一目标命令被确定为混淆命令或非混淆命令时,从该目标数据库中删除该目标命令,以节约存储空间。

309、该计算机设备对该目标命令的来源服务器进行告警。

计算机设备可以基于被确定为混淆命令的目标命令的业务信息,对该目标命令的来源服务器进行告警,对于目标命令来说,在目标数据库中会存储有目标命令的业务信息,该业务信息中可以存储有服务器的ip信息,因此,对于计算机设备来说,可以基于这些信息实现告警,当然,该告警可以是对来源服务器进行告警,也可以是对系统管理员进行告警,本发明实施例不做限定。在进行告警时,可以通过移动端、网页端告警信息等形式,返回给系统管理员或服务器所归属的用户。

当任一告警被确定为入侵,则可以进行应急响应流程,从而保障运行安全。而如果任一告警被确定为误报,则可以将相应的目标命令增添至正常业务命令中,用于对步骤302中所涉及的第二特征进行更新,以提升后续检测的准确率。

上述过程也可以参照图6所示的数据流向图。该数据流向图直观的体现了步骤301至309的处理流程,对于agent所上报的数据可以经过基于第一特征也即是灰特征的第一层筛选,再经过基于第二特征也即是白特征的第二层筛选,进而将筛选所得到的命令进行数据库存储,再基于数据库存储的命令来进行沙箱调试,以得到各个命令的运行态文本,基于命令和运行态文本进行综合判断,再输出判断结果,并基于判断结果可以实现有针对性和及时的告警。

本发明实施例针对大规模服务器应用场景,提出了一种具备可运营性的混淆命令的实时检测方法,大大提升了防御效果,提供了更具弹性的检测方法。具体地,本发明实施例结合了命令的静态与动态混淆属性的分析,首先,对于上报的命令来说,会通过基于已知混淆命令所得到的第一特征和基于正常业务命令的第二特征,进行静态的特征匹配和筛选,从而显著降低了数据分析的规模,从而使得实时的命令检测成为可能,并通过获取命令的运行态文本,实现了一定程度的去混淆功能,避免了由于语义分析而造成的计算困难和耗时,再通过采用命令和运行态文本来确定可疑程度信息的方式,来作为最终确定命令是否为混淆命令的参考,大大提高了检测准确性。当然,伴随着准确性的提升,也就大大降低了误报的可能性,实现了精准地识别可疑的混淆变形命令,提升对于高级威胁入侵手段的有效感知能力,还能够显著增强服务器的安全防护效果。

进一步地,本发明实施例还通过综合考虑上报数据本身的静态混淆特征、沙箱分析前后命令文本格式的差异性程度以及去混淆后命令是否异常等三个维度,并最终结合判定条件来确定是否存在混淆,能够大大提高检测的准确性。

图7是本发明实施例提供的一种命令检测装置的结构示意图,参见图7,所述装置包括:

检测模块701,用于基于已知混淆命令的多个第一特征和正常业务命令的多个第二特征,对多个待检测的命令进行检测,确定多个目标命令,每个目标命令均具有一个或多个第一特征但不具有任一第二特征的命令;

文本格式获取模块702,用于获取所述多个目标命令的运行态文本;

可疑程度信息获取模块703,用于基于所述多个目标命令以及对应的运行态文本,获取所述多个目标命令的可疑程度信息,其中,所述可疑程度信息用于表示命令为混淆命令的可能性;

命令确定模块704,用于当任一个目标命令的可疑程度信息符合目标条件,将所述目标命令确定为混淆命令。

在一种可能实现方式中,所述检测模块701包括:

第一特征匹配单元7011,用于基于所述多个第一特征,对所述多个待检测的命令进行特征匹配,确定与所述多个第一特征中任一个特征匹配成功的第一命令;

第二特征确定单元7012,用于根据每个第一命令所匹配的第一特征,确定所述每个第一命令的目标第二特征,所述目标第二特征是指所述第一特征对应的至少一个第二特征;

目标命令确定单元7013,用于根据所述每个第一命令的目标第二特征,对所述多个第一命令进行特征匹配,确定所述多个目标命令。

在一种可能实现方式中,该目标命令确定单元7013,用于根据所述每个第一命令的目标第二特征,对所述多个第一命令进行特征匹配,确定所述多个第二命令,所述第二命令为具有任一目标第二特征的第一命令;从所述多个第一命令中过滤掉所述多个第二命令,得到所述多个目标命令。

在一种可能实现方式中,所述文本格式获取模块702,用于将所述多个目标命令导入沙箱调试程序,通过所述沙箱调试程序执行所述多个目标命令,记录脚本调试执行过程中的运行态文本。

在一种可能实现方式中,所述装置还包括:

存储模块705,用于将所述多个目标命令存储至目标数据库,所述目标数据库用于存储所述目标命令以及对应的运行态文本;

该存储模块705还用于当获取到第一目标命令的运行态文本时,将所述运行态文本存储至所述第一目标命令在所述目标数据库中的存储位置。

在一种可能实现方式中,所述沙箱调试程序执行任一个目标命令的执行时间小于目标时长;或,对调用所述沙箱调试程序的代码进行更改,使得所述代码不执行任一个目标命令。

在一种可能实现方式中,所述装置还包括:删除模块706,用于当第二目标命令被确定为混淆命令或非混淆命令时,从所述目标数据库中删除所述第二目标命令。

在一种可能实现方式中,所述可疑程度信息获取模块703用于根据下述一项信息或任意两项信息的组合,获取所述多个目标命令的可疑程度信息:

所述多个目标命令所匹配的第一特征;

所述多个目标命令以及对应的运行态文本之间的文本差异;

所述多个目标命令的运行态文本和预设命令之间的匹配信息。

在一种可能实现方式中,所述可疑程度信息获取模块703包括第一获取单元7021,该第一获取单元7021用于获取所述多个目标命令所匹配的第一特征的可疑程度信息;对于任一个目标命令,对所述任一目标命令的第一特征的可疑程度信息进行累计,得到所述任一个目标命令的可疑程度信息。

在一种可能实现方式中,所述可疑程度信息获取模块703包括第二获取单元7022,该第二获取单元7022用于获取所述多个目标命令与对应的运行态文本之间的文本差异;根据所述多个目标命令的文本差异和文本差异阈值,确定所述多个目标命令的可疑程度信息。

在一种可能实现方式中,所述可疑程度信息获取模块703包括第三获取单元7023,该第三获取单元7023用于基于所述多个目标命令的运行态文本与预设命令进行匹配,当第三目标命令的运行态文本与所述预设命令中的一个或多个的组合匹配成功时,根据所述第三目标命令的匹配情况,获取所述第三目标命令的可疑程度信息。

在一种可能实现方式中,所述装置还包括:告警模块707,用于对所述目标命令的来源服务器进行告警。

图8是本发明实施例提供的一种计算机设备的结构示意图,该计算机设备800可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessingunits,cpu)801和一个或一个以上的存储器802,其中,该存储器802中存储有至少一条指令,该至少一条指令由该处理器801加载并执行以实现上述各个方法实施例提供的命令检测方法。当然,该计算机设备还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该计算机设备还可以包括其他用于实现设备功能的部件,在此不做赘述。

在示例性实施例中,还提供了一种计算机可读存储介质,例如包括指令的存储器,上述指令可由终端中的处理器执行以完成上述实施例中的命令检测方法。例如,该计算机可读存储介质可以是只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、只读光盘(compactdiscread-onlymemory,cd-rom)、磁带、软盘和光数据存储设备等。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

上述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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