掌桥专利:专业的专利平台
掌桥专利
首页

一种挖矿木马程序检测方法及装置

文献发布时间:2023-06-19 18:46:07


一种挖矿木马程序检测方法及装置

技术领域

本申请涉及网络安全技术领域,特别涉及一种挖矿木马程序检测方法及装置。

背景技术

挖矿木马是指通过各种手段被植入用户计算机中的矿机程序,挖矿木马可以在用户不知情的情况下,偷偷利用用户的计算机执行挖矿行为,从而获取收益。由于挖矿木马会利用计算机的运算力进行挖矿,因此会占用大量CPU资源,导致计算机上其他应用变得非常卡顿,无法正常运行。为了更好地保护用户的计算机,需要对挖矿木马进行及时地检测。

传统的挖矿木马检测方法主要包括静态检测方法和动态检测方法。静态检测方法主要是将可疑木马程序的哈希值(或者字符串等常量特征)与木马程序样本的哈希值(或者字符串等常量特征)进行匹配,如果能够匹配,则判定可疑木马程序为挖矿木马。动态检测方法主要是监测计算机日常网络连接信息的流量中是否包含挖矿流量特征(例如某些特殊字符),如果包含挖矿流量特征,则认为存在挖矿木马的通信行为,其中,挖矿流量特征是预先基于对计算机连接检测矿池所产生的网络流量进行分析后所得到的。

然而,传统的挖矿木马检测方法虽然复杂度较低,但是由于仅依靠固定的特征进行检测,当通过混淆、简单修改固定的值或微调内部特征后就会产生对抗性,因此对于变种的挖矿木马程序,传统方法的检出率会明显降低,误报率会增加,进而无法对用户计算机起到有效保护。

发明内容

本申请提供了一种挖矿木马程序检测方法及装置,可用于解决现有挖矿木马检测方法仅依靠固定的特征进行检测,对于变种的挖矿木马程序检出率较低,误报率较高的技术问题。

第一方面,本申请实施例提供一种挖矿木马程序检测方法,包括:

获取待检测的可疑程序;

基于所述可疑程序,生成一组待测控制流图,所述一组待测控制流图包括至少一个待测控制流图,各个待测控制流图与所述可疑程序的各个待测核心功能函数一一对应,所述待测核心功能函数用于执行所述可疑程序对应的行为逻辑中任一核心行为逻辑;

获取预先生成的多组标准控制流图,任意一组标准控制流图是基于预先获取的任一挖矿木马家族的源程序生成的,包括至少一个标准控制流图,各个标准控制流图与所述挖矿木马家族的各个标准核心功能函数一一对应,所述标准核心功能函数包括多个特征函数,所述标准核心功能函数用于执行挖矿行为逻辑中任一核心行为逻辑;

将每个待测控制流图分别与多组标准控制流图中的各个标准控制流图进行比对,得到每个待测控制流图的比对结果;

如果所述一组待测控制流图包含多组标准控制流图中的一组标准控制流图,则判定所述可疑程序为挖矿木马程序。

结合第一方面,在第一方面的一种可实现方式中,所述将每个待测控制流图分别与多组标准控制流图中的各个标准控制流图进行比对,得到每个待测控制流图的比对结果,包括:

针对所有待测控制流图和多组标准控制流图中的任一控制流图,获取所述控制流图对应的可达矩阵;

检测每个待测控制流图对应的可达矩阵是否与任一标准控制流图对应的可达矩阵相等;

如果每个待测控制流图对应的可达矩阵与任一标准控制流图对应的可达矩阵相等,则判定所述待测控制流图与所述标准控制流图相同。

结合第一方面,在第一方面的一种可实现方式中,所述获取所述控制流图对应的可达矩阵,包括:

将所述控制流图转换为有向图;

将所述有向图转换为邻接矩阵;

基于所述邻接矩阵生成可达矩阵。

结合第一方面,在第一方面的一种可实现方式中,所述基于所述可疑程序,生成一组待测控制流图,包括:

利用预设的反编译工具对所述可疑程序进行反编译处理,得到一组待测控制流图。

结合第一方面,在第一方面的一种可实现方式中,所述多组标准控制流图中任意一组标准控制流图通过以下方式预先生成:

利用所述反编译工具对预先获取的任一挖矿木马家族的源程序进行反编译处理,得到与所述挖矿木马家族的各个标准核心功能函数相对应的标准控制流图;

将各个标准控制流图共同确定为所述一组标准控制流图。

结合第一方面,在第一方面的一种可实现方式中,还包括:

如果所述一组待测控制流图仅包含任一组标准控制流图中的部分标准控制流图,或者所述一组待测控制流图中不包含多组标准控制流图中任一组标准控制流图,则判定所述可疑程序不为挖矿木马程序。

结合第一方面,在第一方面的一种可实现方式中,所述获取待检测的可疑程序,包括:

将计算机的监控系统监控得到的告警程序确定为待检测的可疑程序,所述监控系统包括态势感知系统、日志审计系统、网络流量审计系统和主机防护系统中的至少一种。

第二方面,本申请实施例提供一种挖矿木马程序检测装置,包括:

可疑程序监测模块,用于获取待检测的可疑程序;

待测控制流图生成模块,用于基于所述可疑程序,生成一组待测控制流图,所述一组待测控制流图包括至少一个待测控制流图,各个待测控制流图与所述可疑程序的各个待测核心功能函数一一对应,所述待测核心功能函数用于执行所述可疑程序对应的行为逻辑中任一核心行为逻辑;

标准控制流图获取模块,用于获取预先生成的多组标准控制流图,任意一组标准控制流图是基于预先获取的任一挖矿木马家族的源程序生成的,包括至少一个标准控制流图,各个标准控制流图与所述挖矿木马家族的各个标准核心功能函数一一对应,所述标准核心功能函数包括多个特征函数,所述标准核心功能函数用于执行挖矿行为逻辑中任一核心行为逻辑;

比对模块,用于将每个待测控制流图分别与多组标准控制流图中的各个标准控制流图进行比对,得到每个待测控制流图的比对结果;

判定模块,用于如果所述一组待测控制流图包含多组标准控制流图中的一组标准控制流图,则判定所述可疑程序为挖矿木马程序。

结合第二方面,在第二方面的一种可实现方式中,所述比对模块包括:

可达矩阵获取子模块,用于针对所有待测控制流图和多组标准控制流图中的任一控制流图,获取所述控制流图对应的可达矩阵;

相等性检测子模块,用于检测每个待测控制流图对应的可达矩阵是否与任一标准控制流图对应的可达矩阵相等;

判定子模块,用于如果每个待测控制流图对应的可达矩阵与任一标准控制流图对应的可达矩阵相等,则判定所述待测控制流图与所述标准控制流图相同。

结合第二方面,在第二方面的一种可实现方式中,所述可达矩阵获取子模块被配置为获取所述控制流图对应的可达矩阵,包括:

将所述控制流图转换为有向图;

将所述有向图转换为邻接矩阵;

基于所述邻接矩阵生成可达矩阵。

结合第二方面,在第二方面的一种可实现方式中,所述待测控制流图生成模块包括:

反编译子模块,用于利用预设的反编译工具对所述可疑程序进行反编译处理,得到一组待测控制流图。

结合第二方面,在第二方面的一种可实现方式中,所述多组标准控制流图中任意一组标准控制流图通过以下方式预先生成:

利用所述反编译工具对预先获取的任一挖矿木马家族的源程序进行反编译处理,得到与所述挖矿木马家族的各个标准核心功能函数相对应的标准控制流图;

将各个标准控制流图共同确定为所述一组标准控制流图。

结合第二方面,在第二方面的一种可实现方式中,所述判定模块还用于:

如果所述一组待测控制流图仅包含任一组标准控制流图中的部分标准控制流图,或者所述一组待测控制流图中不包含多组标准控制流图中任一组标准控制流图,则判定所述可疑程序不为挖矿木马程序。

结合第二方面,在第二方面的一种可实现方式中,所述可疑程序监测模块具体用于:

将计算机的监控系统监控得到的告警程序确定为待检测的可疑程序,所述监控系统包括态势感知系统、日志审计系统、网络流量审计系统和主机防护系统中的至少一种。

本申请实施例提供一种挖矿木马程序检测方法及装置,在检测方法中,基于待检测的可疑程序生成与各个待测核心功能函数相对应的待测控制流图,将每个待测控制流图分别与预先生成的多组标准控制流图进行比对,如果所有待测控制流图中包含多组标准控制流图中的任一组标准控制流图,则判定可疑程序为挖矿木马程序。整个方法通过将可疑程序的各核心功能函数的控制流图与挖矿木马家族的核心功能函数的控制流图进行比对来进行检测,由于是基于核心功能函数的行为逻辑进行分析判定,因此能够覆盖该挖矿木马家族的各类变种木马程序,检出率可以显著提高,对用户计算机可以起到非常有效的保护作用。

附图说明

图1为本申请实施例适用的一种场景示意图;

图2为本申请实施例提供的一种挖矿木马程序检测方法的工作流程示意图;

图3为本申请实施例提供的待测控制流图的示例结构示意图;

图4为本申请实施例提供的将控制流图转换为可达矩阵的流程示意图;

图5为图3所示待测控制流图转换所得到的有向图的示意图;

图6为本申请实施例提供的一种挖矿木马程序检测装置的结构示意图。

具体实施方式

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

下面首先结合图1对本申请实施例适用的可能的场景进行介绍。

图1为本申请实施例适用的一种场景示意图。本申请实施例提供的挖矿木马程序检测方法适用于对挖矿木马程序进行及时检测。如图1所示,挖矿木马通常会呈现家族性质。虽然各个挖矿木马程序(例如A1、A2、A3、A4、……、An)会呈现不同的形式,但是基于对互联网上多个开源的挖矿木马的原始样本进行分析可知,目前流行的挖矿木马都起源于某个木马家族的原始样本,所以各个挖矿木马程序的核心功能函数的内部逻辑基本一致,例如都包括更新、加载、删除等逻辑步骤,即使是变种挖矿木马,也会保留源家族程序的核心功能函数的行为逻辑。

基于上述场景分析,为了解决现有挖矿木马检测方法仅依靠固定的特征进行检测,对于变种的挖矿木马程序检出率较低,误报率较高的技术问题,本申请通过以下实施例公开了一种挖矿木马程序检测方法。本申请实施例提供的挖矿木马程序检测方法利用各个挖矿木马程序核心功能函数的内部行为逻辑来进行检测,以覆盖该挖矿木马家族的各类变种木马程序,从而可以显著提高检出率。参见图2所示的工作流程示意图,本申请实施例提供的一种挖矿木马程序检测方法具体包括以下步骤:

101:获取待检测的可疑程序。

在一些实施例中,可以将计算机的监控系统监控得到的告警程序确定为待检测的可疑程序。其中,监控系统可以包括态势感知系统、日志审计系统、网络流量审计系统和主机防护系统中的至少一种。在其他实施例中,也可以单独设置可疑程序捕获系统,本申请实施例对可疑程序的获取方式不作具体限定。

示例性地,当计算机监测到某一程序的CPU占用率较高(比如超过预设阈值),则对该程序进行告警。计算机同时可以将该程序作为待检测的可疑程序进行检测。

102:基于可疑程序,生成一组待测控制流图。

其中,一组待测控制流图包括至少一个待测控制流图。各个待测控制流图与可疑程序的各个待测核心功能函数一一对应,待测核心功能函数用于执行可疑程序对应的行为逻辑中任一核心行为逻辑。示例性地,待测核心功能函数可以为连接、认证、传输命令、传输运算结果、回收等核心功能函数。每个待测核心功能函数包括多个待测特征函数。

在一些实施例中,可以利用预设的反编译工具对可疑程序进行反编译处理,得到与各个待测核心功能函数相对应的一组待测控制流图。反编译工具可以根据需要和实际情况进行设置,本申请实施例不作具体限定。这样,能够对可疑程序在完全黑盒的状态下进行分析检测,其中黑盒状态是指不用分析可疑程序的源代码,而是分析可疑程序二进制执行文件的状态,也就是说无需了解待测特征函数的具体内容,只需要分析各个待测特征函数之间的行为逻辑。如此检测非常简单,具有较强的实用性。在其他实施例中,也可以先提取可疑程序的各个待测核心功能函数的源程序,再将每个待测核心功能函数的源程序转换为对应的控制流图。本申请实施例对此不作具体限定。

示例性地,图3为本申请实施例提供的待测控制流图的示例结构示意图。如图3所示,以XMRig挖矿家族源程序中的某核心功能函数为例,节点A、B、C、D、E、F分别表示待测特征函数,该核心功能函数的内部行为逻辑可以为节点A、B、C、D、F依次连接,节点A的出口还与节点C的入口连接,节点C的出口还连接有节点E,节点E的出口还与节点F的入口连接。

103:获取预先生成的多组标准控制流图。

其中,任意一组标准控制流图是基于预先获取的任一挖矿木马家族的源程序生成的,一组标准控制流图与一个挖矿木马家族相对应。一组标准控制流图包括至少一个标准控制流图,各个标准控制流图与该挖矿木马家族的各个标准核心功能函数一一对应。标准核心功能函数包括多个标准特征函数,标准核心功能函数用于执行挖矿行为逻辑中任一核心行为逻辑。挖矿木马家族的源程序可以从开源的挖矿木马原始样本中提取。

具体地,一组标准控制流图可以通过以下方式预先生成:

首先,利用反编译工具对预先获取的任一挖矿木马家族的源程序进行反编译处理,得到与挖矿木马家族的各个标准核心功能函数相对应的标准控制流图。其中,反编译工具可以根据需要和实际情况进行设置,本申请实施例不作具体限定。

然后,将各个标准控制流图共同确定为一组标准控制流图。

示例性地,如果一个挖矿木马家族的源程序中包括五个标准核心功能函数,则可以得到五个标准控制流图,这五个标准控制流图组成一组标准控制流图。如果另一个挖矿木马家族的源程序中包括十个标准核心功能函数,则可以得到十个标准控制流图,这十个标准控制流图组成另一组标准控制流图。

104:将每个待测控制流图分别与多组标准控制流图中的各个标准控制流图进行比对,得到每个待测控制流图的比对结果。

在一些实施例中,每个待测控制流图可以通过以下步骤分别与多组标准控制流图中的各个标准控制流图进行比对:

步骤一,针对所有待测控制流图和多组标准控制流图中的任一控制流图,获取控制流图对应的可达矩阵。

其中,可达矩阵指的是用矩阵形式来描述有向图的各节点之间经过一定长度的通路后可达到的程度,描述的是要素之间的相对位置的关系。

图4为本申请实施例提供的将控制流图转换为可达矩阵的流程示意图。如图4所示,具体可以通过以下步骤获取控制流图对应的可达矩阵:

401:将控制流图转换为有向图。

具体地,根据控制流图的可达方向,将控制流图步骤逐一的生成有向图。

示例性地,图5为图3所示待测控制流图转换所得到的有向图的示意图。如图5所示,通过有向图可以更加清晰地表示出各个节点之间的关系。

402:将有向图转换为邻接矩阵。

具体地,邻接矩阵为用一个二维数组来存放各节点之间的关系(边或弧)的数据,每个元素代表各节点之间是否有边相连,例如:用1表示某两节点之间有边存在,用0表示这两节点之间是没有边存在的。

示例性地,以图5所示的有向图为例,将该有向图转换为邻接矩阵,可以通过以下公式(1)进行表示:

公式(1)中,M为邻接矩阵,M的第一列至第六列分别对应节点A、B、C、D、E、F,M的第一行至第六行分别对应节点A、B、C、D、E、F。示例性地,第一行第二列的数值1表示A和B之间有边存在。

403:基于邻接矩阵生成可达矩阵。

具体地,可以通过以下公式(2)和公式(3)确定可达矩阵:

(m+I)

公式(2)和公式(3)中,M2为可达矩阵,M为邻接矩阵,I为与M维度相同的单位矩阵,k为计算次数。

当满足公式(3)中的关系时,M2即为M的可达矩阵,再结合公式(1)可得,M的可达矩阵M2可以通过以下公式(4)表示:

步骤二,检测每个待测控制流图对应的可达矩阵是否与任一标准控制流图对应的可达矩阵相等。如果每个待测控制流图对应的可达矩阵与任一标准控制流图对应的可达矩阵相等,则执行步骤三,如果每个待测控制流图对应的可达矩阵与任一标准控制流图对应的可达矩阵均不相等,则执行步骤四。

步骤三,判定待测控制流图与标准控制流图相同。

步骤四,判定待测控制流图与标准控制流图不相同。

如此,本申请实施例提供的方法通过可达矩阵的相等性判断来检测控制流图是否相同,简单易行,易于推广,且十分快捷和准确,具有非常高的实用性。

在另一些实施例中,可以检测每个待测控制流图对应的可达矩阵是否包含任一标准控制流图对应的可达矩阵,如果待测控制流图对应的可达矩阵包含任一标准控制流图对应的可达矩阵,则判定待测控制流图涵盖标准控制流图。如果待测控制流图对应的可达矩阵未包含任一标准控制流图对应的可达矩阵,则判定待测控制流图未涵盖标准控制流图。本申请实施例对判断矩阵包含关系的方法不作具体限定。

在其他实施例中,每个待测控制流图也可以通过其他方式分别与多组标准控制流图中的各个标准控制流图进行比对,例如:每个待测控制流图与任一标准控制流图通过图像识别检测的方式进行相似度比对,本申请实施例对控制流图之间的比对方式不作具体限定。

105:检测一组待测控制流图中是否包含多组标准控制流图中的一组标准控制流图。如果一组待测控制流图中包含多组标准控制流图中的一组标准控制流图,则执行步骤106,如果一组待测控制流图仅包含任一组标准控制流图中的部分标准控制流图,或者一组待测控制流图中不包含多组标准控制流图中任一组标准控制流图,则执行步骤107。

其中,根据各个待测控制流图的比对结果,来检测一组待测控制流图中是否包含多组标准控制流图中的一组标准控制流图。

示例性地,在通过判断每个待测控制流图的可达矩阵与各个标准控制流图的可达矩阵是否相等,来比对待测控制流图与标准控制流图的情况下,当一组待测控制流图中存在与任一组标准控制流图相同的待测控制流图,则判定一组待测控制流图中包含多组标准控制流图中的一组标准控制流图。例如:挖矿木马家族1对应的一组标准控制流图包括三个标准控制流图,可疑程序对应的一组待测控制流图包括五个待测控制流图,其中的三个待测控制流图分别与三个标准控制流图相同,则判定该组待测控制流图包含该组标准控制流图。

又示例性地,在通过判断每个待测控制流图的可达矩阵是否包含任一标准控制流图的可达矩阵,来比对待测控制流图与标准控制流图的情况下,当一组待测控制流图中存在包含任一组标准控制流图的待测控制流图,则判定一组待测控制流图中包含多组标准控制流图中的一组标准控制流图。例如:挖矿木马家族1对应的一组标准控制流图包括三个标准控制流图,可疑程序对应的一组待测控制流图包括五个待测控制流图,其中的三个待测控制流图分别包含了三个标准控制流图,则判定该组待测控制流图包含该组标准控制流图。

106:判定可疑程序为挖矿木马程序。

在判定可疑程序为挖矿木马程序之后,还可以确定该挖矿木马程序隶属于所包含的一组标准控制流图所对应的挖矿木马家族。另外,还可以对可疑程序进行告警,以及时提醒用户计算机可能遭到挖矿木马的入侵。

107:判定可疑程序不为挖矿木马程序。

如此,本申请实施例提供的挖矿木马程序检测方法,利用挖矿木马呈家族性质的特点,通过将挖矿木马家族源程序的核心功能函数生成控制流图,再转换成可达矩阵。然后提取可疑程序的各个核心功能函数的控制流图后转换成可达矩阵,最后将可疑程序的可达矩阵与挖矿木马家族源程序的核心功能函数控制流的可达矩阵进行相等性判断,如相等则将可疑程序标注为已确认的当前挖矿木马家族。整个方法可以在对可疑程序完全黑盒的状态下进行分析检测,由于变种木马在演变过程中会保留源家族程序的核心功能函数流程的逻辑,本申请实施例基于核心功能函数流程的逻辑进行分析判定,因此能够覆盖各类变种的木马程序,从而解决传统挖矿木马检测中误报率高的问题,应用效果极为显著。

下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。

图6为本申请实施例提供的一种挖矿木马程序检测装置的结构示意图。如图6所示,本申请实施例提供的装置具有实现上述挖矿木马程序检测方法的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。该系统可以包括:可疑程序监测模块601、待测控制流图生成模块602、标准控制流图获取模块603、比对模块604和判定模块605。其中:

可疑程序监测模块601,用于获取待检测的可疑程序。

待测控制流图生成模块602,用于基于可疑程序,生成一组待测控制流图,一组待测控制流图包括至少一个待测控制流图,各个待测控制流图与可疑程序的各个待测核心功能函数一一对应,待测核心功能函数用于执行可疑程序对应的行为逻辑中任一核心行为逻辑。

标准控制流图获取模块603,用于获取预先生成的多组标准控制流图,任意一组标准控制流图是基于预先获取的任一挖矿木马家族的源程序生成的,包括至少一个标准控制流图,各个标准控制流图与挖矿木马家族的各个标准核心功能函数一一对应,标准核心功能函数包括多个特征函数,标准核心功能函数用于执行挖矿行为逻辑中任一核心行为逻辑。

比对模块604,用于将每个待测控制流图分别与多组标准控制流图中的各个标准控制流图进行比对,得到每个待测控制流图的比对结果。

判定模块605,用于如果一组待测控制流图包含多组标准控制流图中的一组标准控制流图,则判定可疑程序为挖矿木马程序。

在一种可实现方式中,比对模块604包括:

可达矩阵获取子模块,用于针对所有待测控制流图和多组标准控制流图中的任一控制流图,获取控制流图对应的可达矩阵。

相等性检测子模块,用于检测每个待测控制流图对应的可达矩阵是否与任一标准控制流图对应的可达矩阵相等。

判定子模块,用于如果每个待测控制流图对应的可达矩阵与任一标准控制流图对应的可达矩阵相等,则判定待测控制流图与标准控制流图相同。

在一种可实现方式中,可达矩阵获取子模块被配置为获取控制流图对应的可达矩阵,包括:

将控制流图转换为有向图。

将有向图转换为邻接矩阵。

基于邻接矩阵生成可达矩阵。

在一种可实现方式中,待测控制流图生成模块602包括:

反编译子模块,用于利用预设的反编译工具对可疑程序进行反编译处理,得到一组待测控制流图。

在一种可实现方式中,多组标准控制流图中任意一组标准控制流图通过以下方式预先生成:

利用反编译工具对预先获取的任一挖矿木马家族的源程序进行反编译处理,得到与挖矿木马家族的各个标准核心功能函数相对应的标准控制流图。

将各个标准控制流图共同确定为一组标准控制流图。

在一种可实现方式中,判定模块605还用于:

如果一组待测控制流图仅包含任一组标准控制流图中的部分标准控制流图,或者一组待测控制流图中不包含多组标准控制流图中任一组标准控制流图,则判定可疑程序不为挖矿木马程序。

在一种可实现方式中,可疑程序监测模块601具体用于:

将计算机的监控系统监控得到的告警程序确定为待检测的可疑程序,监控系统包括态势感知系统、日志审计系统、网络流量审计系统和主机防护系统中的至少一种。

如此,本申请实施例提供的一种挖矿木马程序检测装置中,基于待检测的可疑程序生成与各个待测核心功能函数相对应的待测控制流图,将每个待测控制流图分别与预先生成的多组标准控制流图进行比对,如果所有待测控制流图中包含多组标准控制流图中的任一组标准控制流图,则判定可疑程序为挖矿木马程序。整个装置通过将可疑程序的各核心功能函数的控制流图与挖矿木马家族的核心功能函数的控制流图进行比对来进行检测,由于是基于核心功能函数的行为逻辑进行分析判定,因此能够覆盖该挖矿木马家族的各类变种木马程序,检出率可以显著提高,对用户计算机可以起到非常有效的保护作用。

以上结合具体实施方式和范例性实例对本申请进行了详细说明,不过这些说明并不能理解为对本申请的限制。本领域技术人员理解,在不偏离本申请精神和范围的情况下,可以对本申请技术方案及其实施方式进行多种等价替换、修饰或改进,这些均落入本申请的范围内。本申请的保护范围以所附权利要求为准。

技术分类

06120115686217