欢迎光临小豌豆知识网!
当前位置:首页 > 电学技术 > 电通讯技术> 恶意软件心跳检测方法、装置、设备及可读存储介质独创技术25263字

恶意软件心跳检测方法、装置、设备及可读存储介质

2021-02-01 21:09:36

恶意软件心跳检测方法、装置、设备及可读存储介质

  技术领域

  本申请涉及计算机安全技术领域,特别涉及一种恶意软件心跳检测方法、装置、设备及可读存储介质。

  背景技术

  恶意软件(如:木马)一般与C2服务器(Command and Control Server)采用心跳上线的方式通信,即:恶意软件会周期性地发送心跳报文给C2服务器,因此恶意软件与C2服务器之间的心跳具有周期性这一特点。其中,C2服务器为恶意软件的控制服务器,其能够基于恶意软件发送的心跳报文回传控制指令。

  由于恶意软件与C2服务器之间的心跳具有周期性,因此现有技术一般以固定周期来检测网络中的恶意软件心跳(即恶意软件与C2服务器之间的心跳)。但是在实际网络环境中,网络延时或拥堵会导致以固定周期传输的数据的传输周期延长或缩短,即:数据的传输周期在实际传输过程中会出现波动,因此仅以固定周期来检测网络中的恶意软件心跳,误报率和漏报率较高。

  因此,如何降低恶意软件心跳检测的误报率和漏报率,是本领域技术人员需要解决的问题。

  发明内容

  有鉴于此,本申请的目的在于提供一种恶意软件心跳检测方法、装置、设备及可读存储介质,以降低恶意软件心跳检测的误报率和漏报率。其具体方案如下:

  第一方面,本申请提供了一种恶意软件心跳检测方法,包括:

  获取待检测目标,所述待检测目标为同一源地址在不同时刻访问同一域名获得的多个DNS请求事件;

  将所述待检测目标包括的所有DNS请求事件的时间戳按序排列,获得时间戳序列;

  按照所述时间戳序列计算相邻时间戳之间的时间间隔,获得多个时间间隔;

  根据所述多个时间间隔计算周期波动范围,若落入所述周期波动范围的时间间隔的个数超过所述待检测目标的目标参数,则对所述域名进行whois查询和威胁情报IOC匹配,并记录相应结果。

  优选地,所述根据所述多个时间间隔计算周期波动范围,包括:

  计算所有时间间隔的平均值,并根据所述平均值计算所述周期波动范围。

  优选地,根据所述平均值计算所述周期波动范围,包括:

  按照第一公式计算所述周期波动范围的下限值,按照第二公式计算所述周期波动范围的上限值;

  所述第一公式为:A=a×dm,A为所述下限值,a为下限系数,dm为所述平均值;

  所述第二公式为:B=b×dm,B为所述上限值,b为上限系数,dm为所述平均值,a<b。

  优选地,所述目标参数按照第三公式计算获得,所述第三公式为:S=0.5×(n-1),S为所述目标参数,n为所述待检测目标包括的所有DNS请求事件的事件个数。

  优选地,确定所述待检测目标的过程包括:

  从网络流量中获取多个DNS请求事件,以获得DNS请求事件集;

  将所述DNS请求事件集中的每个DNS请求事件转换为包括源地址、目的地址和域名的组合;

  若所述组合包括的所有DNS请求事件的事件个数大于预设第一阈值,则将所述组合确定为所述待检测目标。

  优选地,所述将所述组合确定为所述待检测目标之前,还包括:

  在DNS请求事件集中,若访问任一个目标域名的不同源地址的个数大于预设第二阈值,则将所述目标域名添加至白名单;

  利用所述白名单对所述组合进行筛选,以删除记录在所述白名单中的域名对应的组合。

  优选地,还包括:

  存储所述相应结果和所述白名单分别对应的核验结果。

  第二方面,本申请提供了一种恶意软件心跳检测装置,包括:

  获取模块,用于获取待检测目标,所述待检测目标为同一源地址在不同时刻访问同一域名获得的多个DNS请求事件;

  排列模块,用于将所述待检测目标包括的所有DNS请求事件的时间戳按序排列,获得时间戳序列;

  计算模块,用于按照所述时间戳序列计算相邻时间戳之间的时间间隔,获得多个时间间隔;

  检测模块,用于根据所述多个时间间隔计算周期波动范围,若落入所述周期波动范围的时间间隔的个数超过所述待检测目标的目标参数,则对所述域名进行whois查询和威胁情报IOC匹配,并记录相应结果。

  第三方面,本申请提供了一种恶意软件心跳检测设备,包括:

  存储器,用于存储计算机程序;

  处理器,用于执行所述计算机程序,以实现前述公开的恶意软件心跳检测方法。

  第四方面,本申请提供了一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述公开的恶意软件心跳检测方法。

  通过以上方案可知,本申请提供了一种恶意软件心跳检测方法,包括:获取待检测目标,所述待检测目标为同一源地址在不同时刻访问同一域名获得的多个DNS请求事件;将所述待检测目标包括的所有DNS请求事件的时间戳按序排列,获得时间戳序列;按照所述时间戳序列计算相邻时间戳之间的时间间隔,获得多个时间间隔;根据所述多个时间间隔计算周期波动范围,若落入所述周期波动范围的时间间隔的个数超过所述待检测目标的目标参数,则对所述域名进行whois查询和威胁情报IOC匹配,并记录相应结果。

  可见,本申请针对同一源地址在不同时刻访问同一域名获得的多个DNS请求事件进行检测,若这些DNS请求事件的时间间隔落入周期波动范围的个数超过待检测目标的目标参数,则表明该源地址是按照一定的周期访问该域名的,也就是这些DNS请求事件具备周期性这一特点,因此这些DNS请求事件是恶意软件与C2服务器之间的心跳的概率较大,故对该域名进行whois查询和威胁情报IOC匹配,并记录相应结果,以便检测该域名是否属于C2服务器。其中,周期波动范围基于这些DNS请求事件的时间间隔计算获得,因此周期波动范围会基于不同待检测目标相应调整,也就是不按照固定周期检测这些DNS请求事件,而是允许这些DNS请求事件在一定范围内波动发生,因此扩大了检测范围,降低了误报率和漏报率。

  相应地,本申请提供的一种恶意软件心跳检测装置、设备及可读存储介质,也同样具有上述技术效果。

  附图说明

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

  图1为本申请公开的第一种恶意软件心跳检测方法流程图;

  图2为本申请公开的第二种恶意软件心跳检测方法流程图;

  图3为本申请公开的一种恶意软件心跳检测装置示意图;

  图4为本申请公开的一种恶意软件心跳检测设备示意图。

  具体实施方式

  下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

  目前,现有技术一般以固定周期来检测网络中的恶意软件心跳(即恶意软件与C2服务器之间的心跳)。但是在实际网络环境中,网络延时或拥堵会导致以固定周期传输的数据的传输周期延长或缩短,即:数据的传输周期在实际传输过程中会出现波动,因此仅以固定周期来检测网络中的恶意软件心跳,误报率和漏报率较高。为此,本申请提供了一种恶意软件心跳检测方案,能够降低恶意软件心跳检测的误报率和漏报率。

  参见图1所示,本申请实施例公开了第一种恶意软件心跳检测方法,包括:

  S101、获取待检测目标,待检测目标为同一源地址在不同时刻访问同一域名获得的多个DNS请求事件。

  在本实施例中,待检测目标从网络流量中获得,每个DNS请求事件均可以用源地址(即源IP地址)、目的地址(即目的IP地址)和域名这三个字段表示。每个DNS请求事件对应一个时间戳。

  S102、将待检测目标包括的所有DNS请求事件的时间戳按序排列,获得时间戳序列。

  S103、按照时间戳序列计算相邻时间戳之间的时间间隔,获得多个时间间隔。

  S104、根据多个时间间隔计算周期波动范围,若落入周期波动范围的时间间隔的个数超过待检测目标的目标参数,则对域名进行whois查询和威胁情报IOC匹配,并记录相应结果。

  在一种具体实施方式中,根据多个时间间隔计算周期波动范围,包括:计算所有时间间隔的平均值,并根据平均值计算周期波动范围。

  在一种具体实施方式中,根据平均值计算周期波动范围,包括:按照第一公式计算周期波动范围的下限值,按照第二公式计算周期波动范围的上限值;第一公式为:A=a×dm,A为下限值,a为下限系数,dm为平均值;第二公式为:B=b×dm,B为上限值,b为上限系数,dm为平均值,a<b。其中,a和b可根据经验或实际应用灵活取值,如a=0.8,b=1.2。不同待检测目标对应的a和b可相同,也可不同。

  假设待检测目标包括7个DNS请求事件,这7个DNS请求事件的时间戳升序排列所得的时间戳序列为:[1,2,3,5,7,8,9],那么可计算获得6个时间间隔,这6个时间间隔为:[1,1,2,2,1,1]。计算这6个时间间隔的平均值,则有dm=(1+1+2+2+1+1)/6≈1.33,将dm代入第一公式和第二公式即可获得周期波动范围的上限值和下限值。

  具体的,假设a=0.8,b=1.2,那么周期波动范围的下限值为:0.8×1.33=1.064,周期波动范围的上限值为:1.2×1.33=1.596。那么周期波动范围即为1.064~1.596,下一步统计落入1.064~1.596的时间间隔的个数。

  在一种具体实施方式中,目标参数按照第三公式计算获得,第三公式为:S=0.5×(n-1),S为目标参数,n为待检测目标包括的所有DNS请求事件的事件个数。

  在一种具体实施方式中,确定待检测目标的过程包括:从网络流量中获取多个DNS请求事件,以获得DNS请求事件集;将DNS请求事件集中的每个DNS请求事件转换为包括源地址、目的地址和域名的组合;若组合包括的所有DNS请求事件的事件个数大于预设第一阈值,则将组合确定为待检测目标。

  例如:DNS请求事件集中有5个DNS请求事件,这5个DNS请求事件转换为组合后获得:{源地址1、目的地址2和域名1};{源地址2、目的地址2和域名1};{源地址2、目的地址2和域名1};{源地址1、目的地址2和域名1};{源地址1、目的地址3和域名1}。据此可确定:{源地址1、目的地址2和域名1}这个组合包括的所有DNS请求事件的事件个数为2;{源地址2、目的地址2和域名1}这个组合包括的所有DNS请求事件的事件个数为2;{源地址1、目的地址3和域名1}这个组合包括的所有DNS请求事件的事件个数为1。若组合包括的所有DNS请求事件的事件个数大于预设第一阈值(如5),则表明该组合中的这些DNS请求事件可能是周期性发生的,因此将该组合确定为待检测目标,以便对其进行进一步检测。

  对比组合包括的所有DNS请求事件的事件个数与预设第一阈值的大小这一条件可能会获得较多组合,为降低检测数据量,可以基于DNS请求事件集确定白名单,并利用白名单先对组合进行筛选,以剔除一些组合,从而降低组合数量。

  在一种具体实施方式中,将组合确定为待检测目标之前,还包括:在DNS请求事件集中,若访问任一个目标域名的不同源地址的个数大于预设第二阈值(如10),则将目标域名添加至白名单;利用白名单对组合进行筛选,以删除记录在白名单中的域名对应的组合。其中,若目标域名被不同源地址访问。且这些不同源地址的个数大于预设第二阈值,则表明目标域名被经常访问,因此目标域名属于C2服务器的概率较小,其可能是人们常用的搜索引擎域名,故而将目标域名添加至白名单,后续利用该白名单对组合进行筛选,可以剔除记录在白名单中的域名对应的组合,从而减少组合的个数,即减少待检测目标的个数。白名单记录的域名的个数可以限制在预设数量个(如1000个),也可以不做限制。

  在一种具体实施方式中,为了保障白名单、whois查询和威胁情报IOC匹配的正确性,可以人工对这些内容进行核验,然后存储相应核验结果,即:存储相应结果(whois查询的结果和威胁情报IOC(Indicators of Compromise)匹配的结果)和白名单分别对应的核验结果。其中,对域名进行whois查询可查询到该域名对应的注册信息(如所属公司等);对域名进行威胁情报IOC匹配可获取到该域名的一些标签。whois查询和威胁情报IOC匹配均可参照现有技术,本说明书在此不再赘述。

  可见,本申请实施例针对同一源地址在不同时刻访问同一域名获得的多个DNS请求事件进行检测,若这些DNS请求事件的时间间隔落入周期波动范围的个数超过待检测目标的目标参数,则表明该源地址是按照一定的周期访问该域名的,也就是这些DNS请求事件具备周期性这一特点,因此这些DNS请求事件是恶意软件与C2服务器之间的心跳的概率较大,故对该域名进行whois查询和威胁情报IOC匹配,并记录相应结果,以便检测该域名是否属于C2服务器。其中,周期波动范围基于这些DNS请求事件的时间间隔计算获得,因此周期波动范围会基于不同待检测目标相应调整,也就是不按照固定周期检测这些DNS请求事件,而是允许这些DNS请求事件在一定范围内波动发生,因此扩大了检测范围,降低了误报率和漏报率。

  参见图2所示,本申请实施例公开了第二种恶意软件心跳检测方法,该方法包括:数据选取、白名单生成、待查项确定、周期性算法判断以及结果处理这几部分。

  利用一台用作数据记录的存储服务器获取网络流量日志信息。其中,使用定时任务方式每日提取前一日的数据。

  聚合前一日的网络流量日志信息,查询其中的所有DNS请求事件(即A记录)。将所有DNS请求事件涉及的域名按照访问其的源地址的个数降序排列,若访问任一个域名的不同源地址的个数大于如10。则将该域名加入白名单。

  将所有DNS请求事件以包括源地址、目的地址、域名这个三个字段的组合表示,若某个组合出现5次以上,则将该组合列为待查项。

  利用白名单筛查上述待查项,将出现在白名单中的域名对应的待查项删除。其中,每个待查项为同一源地址在不同时刻访问同一域名获得的多个DNS请求事件的集合,每个待查项包括源地址、目的地址、域名这个三个字段。

  针对筛查后获得的任一个待查项(即待检测目标),进行周期性检测算法,具体如下:

  将其对应的所有DNS请求事件按照时间戳升序排列(也可以降序排列),获得时间戳序列:T1,T2,T3,...Tn(n为当前待查项对应的所有DNS请求事件的事件个数),计算相邻时间戳之间的时间间隔(取整数,精确到秒),获得时间间隔序列:d1,d2,...,dn-1;对时间间隔序列取中值(即计算所有时间间隔的平均值),则有:dm=median([d1,d2,...,dn-1]),将该中值确定为候选周期。利用该候选周期计算周期波动范围0.8×dm~1.2×dm,若落入周期波动范围的时间间隔的个数大于0.5×(n-1)(即目标参数),则确认当前待查项对应的所有DNS请求事件之间存在周期性,因此将当前待查项对应的域名加入结果集。

  其中,目标参数接近当前待查项对应的所有DNS请求事件的事件个数的二分之一,因此若落入周期波动范围的时间间隔的个数大于目标参数,则可以认为所有时间间隔中,存在周期性的时间间隔的数量>50%,相应的,上述中间值也会位于这些存在周期性的时间间隔中。其中,目标参数也可以为当前待查项对应的所有DNS请求事件的事件个数的二分之一。

  对于结果集中的任一个域名,进行whois查询和威胁情报IOC匹配,并记录相应结果。其中,记录的结果可以参照如下示例:

  {src_address:192.xx.xx.xx,dst_address:10.xx.xx.xx,domain:www.xx.top,period:30,ioc:(tag1,tag2),whois:"whois注册信息"}

  其中,192.xx.xx.xx为源地址,10.xx.xx.xx为目的地址,www.xx.top为域名,30为上述候选周期,(tag1,tag2)为威胁情报IOC匹配的结果,whois注册信息为whois查询的结果。

  之后,还可以对白名单中的域名进行人工审查,以避免漏报;同时,对结果集中的任一个域名的whois查询的结果和威胁情报IOC匹配的结果进行人工确认,以防止误报。

  可见,本实施例针对任一个待查项进行周期性检测算法,从而可确定该待查项对应的候选周期和周期波动范围,从而扩大了检测范围,降低了因网络波动而导致的误报和漏报,能够降低误报率和漏报率。

  下面对本申请实施例提供的一种恶意软件心跳检测装置进行介绍,下文描述的一种恶意软件心跳检测装置与上文描述的一种恶意软件心跳检测方法可以相互参照。

  参见图3所示,本申请实施例公开了一种恶意软件心跳检测装置,包括:

  获取模块301,用于获取待检测目标,待检测目标为同一源地址在不同时刻访问同一域名获得的多个DNS请求事件;

  排列模块302,用于将待检测目标包括的所有DNS请求事件的时间戳按序排列,获得时间戳序列;

  计算模块303,用于按照时间戳序列计算相邻时间戳之间的时间间隔,获得多个时间间隔;

  检测模块304,用于根据多个时间间隔计算周期波动范围,若落入周期波动范围的时间间隔的个数超过待检测目标的目标参数,则对域名进行whois查询和威胁情报IOC匹配,并记录相应结果。

  在一种具体实施方式中,检测模块具体用于:

  计算所有时间间隔的平均值,并根据平均值计算周期波动范围。

  在一种具体实施方式中,检测模块具体用于:

  按照第一公式计算周期波动范围的下限值,按照第二公式计算周期波动范围的上限值;

  第一公式为:A=a×dm,A为下限值,a为下限系数,dm为平均值;

  第二公式为:B=b×dm,B为上限值,b为上限系数,dm为平均值,a<b。

  在一种具体实施方式中,目标参数按照第三公式计算获得,第三公式为:S=0.5×(n-1),S为目标参数,n为待检测目标包括的所有DNS请求事件的事件个数。

  在一种具体实施方式中,还包括确定模块,用于确定待检测目标;确定模块包括:

  获取单元,用于从网络流量中获取多个DNS请求事件,以获得DNS请求事件集;

  转换单元,用于将DNS请求事件集中的每个DNS请求事件转换为包括源地址、目的地址和域名的组合;

  确定单元,用于若组合包括的所有DNS请求事件的事件个数大于预设第一阈值,则将组合确定为待检测目标。

  在一种具体实施方式中,确定模块还包括:

  白名单生成单元,用于在DNS请求事件集中,若访问任一个目标域名的不同源地址的个数大于预设第二阈值,则将目标域名添加至白名单;

  筛选单元,用于利用白名单对组合进行筛选,以删除记录在白名单中的域名对应的组合。

  在一种具体实施方式中,还包括:

  存储模块,用于存储相应结果和白名单分别对应的核验结果。

  其中,关于本实施例中各个模块、单元更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。

  可见,本实施例提供了一种恶意软件心跳检测装置,该装置不按照固定周期检测待检测目标包括的这些DNS请求事件,而是允许这些DNS请求事件在一定范围内波动发生,因此扩大了检测范围,降低了误报率和漏报率。

  下面对本申请实施例提供的一种恶意软件心跳检测设备进行介绍,下文描述的一种恶意软件心跳检测设备与上文描述的一种恶意软件心跳检测方法及装置可以相互参照。

  参见图4所示,本申请实施例公开了一种恶意软件心跳检测设备,包括:

  存储器401,用于保存计算机程序;

  处理器402,用于执行所述计算机程序,以实现上述任意实施例公开的方法。

  下面对本申请实施例提供的一种可读存储介质进行介绍,下文描述的一种可读存储介质与上文描述的一种恶意软件心跳检测方法、装置及设备可以相互参照。

  一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述实施例公开的恶意软件心跳检测方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。

  本申请涉及的“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法或设备固有的其它步骤或单元。

  需要说明的是,在本申请中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。

  本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。

  结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的可读存储介质中。

  本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

《恶意软件心跳检测方法、装置、设备及可读存储介质.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)