本发明涉及信息安全,尤其涉及一种恶意软件检测方法及装置。
背景技术:
1、随着信息化技术的发展,涌现了多种多样的应用软件。例如,利用这些应用软件,可以进行线上购物、看新闻、聊天和刷短视频。可以说,应用软件在日常生活中越来越重要。然而,这些应用软件中也存在一些恶意应用,例如,非法收集个人信息,广告弹窗关不掉,后台扣费,以及强制、过度和频繁索取权限等。在用户使用应用软件前或应用软件在应用市场上架前,对应用软件进行分析检测,识别其是否是恶意软件,对保护用户隐私、财产安全,具有重要意义。
2、现有恶意软件检测方法通常是特征码检测方式。特征码是被确定为只有恶意软件才可能存在的一段或多段数据序列,正常软件不会存在这种数据序列,这种数据序列通常是代码文件中的某段代码或汇编指令序列。特征码是应用比较广泛的恶意软件检测技术,具有检测速度快、准确率高的特点。但是特征码只能检测已知的恶意程序,对已知恶意程序的变体或未知的恶意程序无能为力,导致现有恶意软件检测方法的准确性较低。
技术实现思路
1、本发明提供了一种恶意软件检测方法及装置,以解决现有特征码恶意软件检测方式中,恶意软件识别准确性较低的问题。
2、第一方面,本发明提供了一种恶意软件检测方法,包括:获取多个恶意软件样本。基于多个恶意软件样本的特征码和api的对应关系,建立特征码集;基于多个恶意软件样本的api调用关系特征,建立api调用关系向量数据库;所述api调用关系特征表示api与所调用的其他api的对应关系;基于多个恶意软件样本的api调用序列特征,建立api调用序列向量数据库;所述api调用序列特征表示api调用其他api的先后顺序;获取目标软件的特征码、api调用关系和api调用序列特征;根据所述特征码集、所述api调用关系向量数据库和所述api调用序列向量数据库,对目标软件进行综合检测,以确定所述目标软件是否是恶意软件。
3、在一种可能的实现方式中,所述基于多个恶意软件样本的api调用关系特征,建立api调用关系向量数据库包括:针对任一恶意软件样本中的任一个风险api,获取该风险api所调用的api的名称;基于该风险api所调用的api的名称,得到该风险api的调用关系向量;基于各恶意软件样本中的各个风险api的调用关系向量,建立api调用关系向量数据库。
4、在一种可能的实现方式中,在所述针对任一恶意软件样本中的任一个风险api,获取该风险api所调用的api的名称之前,还包括:获取恶意软件样本库;所述恶意软件样本库中包括多个恶意软件样本;获取正常软件样本库;所述正常软件样本库中包括多个正常软件样本;针对恶意软件样本中的任一api,基于该api在所述恶意软件样本库和正常软件样本库中的出现频次,得到该api的风险系数;若该api的风险系数大于预设值,则将该api判定为风险api。
5、在一种可能的实现方式中,所述基于该api在所述恶意软件样本库和正常软件样本库中的出现频次,得到该api的风险系数,包括:基于以下公式得到该api的风险系数:
6、
7、其中,rf表示该api的风险系数;x表示正常软件样本库中api的总数;y表示恶意软件样本库中api的总数;fy表示该api在恶意软件中出现的频次;fx表示该api在正常软件中出现的频次。
8、在一种可能的实现方式中,在所述基于该风险api所调用的api的名称,得到该风险api的调用关系向量之前,还包括:基于每个恶意软件样本的每个风险api的名称,获得名称向量;所述名称向量的每个元素对应一个风险api,每个元素的值表示是否调用该名称的风险api;相应的,所述基于该风险api所调用的api的名称,得到该风险api的调用关系向量包括:针对风险api所调用的任一api的名称,在名称向量中查找名称一致的元素;将名称一致的元素的值修改为调用该名称的风险api,得到调用关系向量。
9、在一种可能的实现方式中,所述基于多个恶意软件样本的api调用序列特征,建立api调用序列向量数据库包括:针对任一恶意软件样本的任一api,在该样本模拟运行中,获取该api调用api的先后顺序;基于该api调用api的先后顺序,得到该api的调用序列向量;基于各个恶意软件样本的各个api的调用序列向量,得到api调用序列向量数据库。
10、在一种可能的实现方式中,在基于多个恶意软件样本的api调用序列特征,建立api调用序列向量数据库之前,还包括:基于每个恶意软件样本的每个风险api的名称,获得名称向量;所述名称向量的每个元素对应一个风险api;相应的,所述基于该api调用api的先后顺序,得到该api的调用序列向量包括:针对该api调用的任一api,基于被调用api的名称,确定所述被调用api在所述名称向量中相应元素的序号;将该api调用的各api的所述序列,按被调用的先后顺序排列,得到该api的调用序列向量。
11、在一种可能的实现方式中,所述对目标软件进行检测,以确定所述目标软件是否是恶意软件包括:基于所述目标软件的特征码与所述特征码集,得到特征码匹配的第一api;基于所述目标软件的api调用关系特征与api调用关系向量数据库进行距离计算,得到距离值小于阈值的第二api;基于所述目标软件的api调用序列特征与api调用序列向量数据库进行距离计算,得到距离值小于阈值的第三api;根据目标软件的第一api、第二api和第三api,确定所述目标软件是否是恶意软件。
12、第二方面,本发明提供了一种恶意软件检测装置,包括:恶意软件获取模块,用于获取多个恶意软件样本。第一建立模块,用于基于多个恶意软件样本的特征码和api的对应关系,建立特征码集;第二建立模块,用于基于多个恶意软件样本的api调用关系特征,建立api调用关系向量数据库;所述api调用关系特征表示api与所调用的其他api的对应关系;第三建立模块,用于基于多个恶意软件样本的api调用序列特征,建立api调用序列向量数据库;所述api调用序列特征表示api调用其他api的先后顺序;目标软件获取模块,用于获取目标软件的特征码、api调用关系和api调用序列特征;检测模块,用于根据所述特征码集、所述api调用关系向量数据库和所述api调用序列向量数据库,对目标软件进行综合检测,以确定所述目标软件是否是恶意软件。
13、在一种可能的实现方式中,所述第二建立模块,具体用于针对任一恶意软件样本中的任一个风险api,获取该风险api所调用的api的名称;基于该风险api所调用的api的名称,得到该风险api的调用关系向量;基于各恶意软件样本中的各个风险api的调用关系向量,建立api调用关系向量数据库。
14、本发明提供一种恶意软件检测方法及装置。本发明通过建立恶意软件的特征码集、api调用关系向量数据库和api调用序列特征向量数据库。api调用关系表示api与所调用的其他api的对应关系,api调用序列特征表示api调用其他api的先后顺序特征。恶意软件的api调用关系、api调用序列特征存在相似性。因此,本发明基于软件的特征码,再结合api调用关系和api调用序列,对目标软件进行综合检测,可避免特征码识别方式对未知恶意软件的漏识别问题,提升了恶意软件识别准确性。
1.一种恶意软件检测方法,其特征在于,包括:
2.根据权利要求1所述的恶意软件检测方法,其特征在于,所述基于所述多个恶意软件样本的api调用关系特征,建立api调用关系向量数据库包括:
3.根据权利要求2所述的恶意软件检测方法,其特征在于,在所述针对任一恶意软件样本中的任一个风险api,获取该风险api所调用的api的名称之前,还包括:
4.根据权利要求3所述的恶意软件检测方法,其特征在于,所述基于该api在所述恶意软件样本库和正常软件样本库中的出现频次,得到该api的风险系数,包括:
5.根据权利要求2所述的恶意软件检测方法,其特征在于,在所述基于该风险api所调用的api的名称,得到该风险api的调用关系向量之前,还包括:
6.根据权利要求1所述的恶意软件检测方法,其特征在于,所述基于所述多个恶意软件样本的api调用序列特征,建立api调用序列向量数据库包括:
7.根据权利要求6所述的恶意软件检测方法,其特征在于,在基于所述多个恶意软件样本的api调用序列特征,建立api调用序列向量数据库之前,还包括:
8.根据权利要求1所述的恶意软件检测方法,其特征在于,所述对目标软件进行检测,以确定所述目标软件是否是恶意软件包括:
9.一种恶意软件检测装置,其特征在于,包括:
10.根据权利要求9所述的恶意软件检测装置,其特征在于,所述第二建立模块,具体用于针对任一恶意软件样本中的任一个风险api,获取该风险api所调用的api的名称;