CN114817913A - 代码检测方法、装置、计算机设备和存储介质 - Google Patents

代码检测方法、装置、计算机设备和存储介质 Download PDF

Info

Publication number
CN114817913A
CN114817913A CN202110069078.9A CN202110069078A CN114817913A CN 114817913 A CN114817913 A CN 114817913A CN 202110069078 A CN202110069078 A CN 202110069078A CN 114817913 A CN114817913 A CN 114817913A
Authority
CN
China
Prior art keywords
code
target
feature
malicious
substring
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110069078.9A
Other languages
English (en)
Inventor
申军利
杨勇
甘祥
郑兴
许艾斯
彭婧
华珊珊
郭晶
刘羽
范宇河
唐文韬
何澍
常优
王悦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202110069078.9A priority Critical patent/CN114817913A/zh
Publication of CN114817913A publication Critical patent/CN114817913A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/3331Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/126Character encoding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Artificial Intelligence (AREA)
  • Virology (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请涉及一种代码检测方法、装置、计算机设备和存储介质。所述方法包括:获取待检测的目标代码;对所述目标代码进行字符串划分,得到目标子字符串序列;获取所述目标子字符串序列中各个目标子字符串分别对应的子字符串向量,组成向量序列;对所述向量序列进行线性特征提取,得到第一提取特征,以及对所述向量序列进行非线性特征提取,得到第二提取特征;对所述第一提取特征以及所述第二提取特征进行融合处理,得到融合特征;基于所述融合特征进行代码检测,得到所述目标代码对应的代码检测结果。云服务器可以利用基于人工智能的恶意代码检测模型实现本申请的代码检测方法,实现减少网络攻击的目的。采用本方法能够提高恶意代码检测准确度。

Description

代码检测方法、装置、计算机设备和存储介质
技术领域
本申请涉及网络安全技术领域,特别是涉及一种代码检测方法、装置、计算机设备和存储介质。
背景技术
随着计算机技术的发展,各种各样的恶意代码层出不穷,给网络安全领域带来了极大的挑战,严重危害了用户的生产生活方式,恶意代码的检测成为了热点问题。恶意代码指的是会带来危险的代码,例如网页恶意代码可以利用网页对网站进行破坏。
目前,检测恶意代码的方法有很多,例如基于人工智能或云技术的恶意代码检测方法,但是由于恶意代码的种类繁多,功复杂,目前的恶意代码检测方法经常存在无法检测到恶意代码的情况,导致检测恶意代码的准确度低。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高恶意代码检测准确度的代码检测方法、装置、计算机设备和存储介质。
一种代码检测方法,所述方法包括:获取待检测的目标代码;对所述目标代码进行字符串划分,得到目标子字符串序列;获取所述目标子字符串序列中各个目标子字符串分别对应的子字符串向量,组成向量序列;对所述向量序列进行线性特征提取,得到第一提取特征,以及对所述向量序列进行非线性特征提取,得到第二提取特征;对所述第一提取特征以及所述第二提取特征进行融合处理,得到融合特征;基于所述融合特征进行代码检测,得到所述目标代码对应的代码检测结果。
一种代码检测装置,所述装置包括:目标代码获取模块,用于获取待检测的目标代码;目标子字符串序列得到模块,用于对所述目标代码进行字符串划分,得到目标子字符串序列;向量序列组成模块,用于获取所述目标子字符串序列中各个目标子字符串分别对应的子字符串向量,组成向量序列;提取特征得到模块,用于对所述向量序列进行线性特征提取,得到第一提取特征,以及对所述向量序列进行非线性特征提取,得到第二提取特征;融合特征得到模块,用于对所述第一提取特征以及所述第二提取特征进行融合处理,得到融合特征;代码检测结果得到模块,用于基于所述融合特征进行代码检测,得到所述目标代码对应的代码检测结果。
在一些实施例中,所述目标子字符串序列得到模块,还用于从所述目标代码中获取当前子字符串,将当前子字符串与代码子字符串集合中的代码子字符串进行对比,当对比一致时,将当前子字符串作为所述目标代码对应的目标子字符串;所述代码子字符串通过对恶意代码文件进行字符串划分得到;将所述目标代码对应的目标子字符串按照在所述目标代码中的位置组成所述目标子字符串序列。
在一些实施例中,所述目标子字符串序列得到模块,还用于从所述目标代码中获取当前子字符串,将当前子字符串与所述代码子字符串集合中的代码子字符串进行对比;当对比一致时,从所述目标代码中获取当前子字符串对应的后向字符,将所述后向字符加入到当前子字符串中,得到更新后的当前子字符串;当更新后的当前子字符串与所述代码子字符串集合中的代码子字符串对比不一致时,将更新前的当前子字符串作为所述目标代码对应的目标子字符串。
在一些实施例中,所述提取特征得到模块,包括:第一提取特征得到单元,用于利用第一卷积模型对所述向量序列进行卷积,得到所述第一提取特征;卷积特征得到单元,用于利用第二卷积模型对所述向量序列进行卷积,得到所述向量序列对应的卷积特征,所述第一卷积模型与所述第二卷积模型是联合训练得到的;第二提取特征得到单元,用于对所述卷积特征进行非线性处理,得到所述第二提取特征。
在一些实施例中,所述第二提取特征得到单元,还用于对所述卷积特征的各个初始特征值进行指数运算,得到所述初始特征值对应的指数运算特征值;根据所述指数运算特征值得到所述第二提取特征的特征值,组成所述第二提取特征。
在一些实施例中,所述代码检测结果得到模块包括:对比单元,用于将所述融合特征中的特征值与特征阈值进行对比;屏蔽后的融合特征得到单元,用于屏蔽所述融合特征中小于所述特征阈值的特征值,得到屏蔽后的融合特征;代码检测结果得到单元,用于基于所述屏蔽后的融合特征进行代码检测,得到所述目标代码对应的代码检测结果。
在一些实施例中,所述代码检测结果得到单元,还用于获取预设尺寸的特征提取窗口;获取所述屏蔽后的融合特征中,所述特征提取窗口对应的各个特征区域的关键特征值,组成关键特征;基于所述关键特征进行代码检测,得到所述目标代码对应的代码检测结果。
在一些实施例中,所述代码检测结果得到模块包括:全连接特征得到单元,用于基于所述融合特征进行全连接处理,得到全连接特征;代码定位特征得到单元,用于当基于所述全连接特征确定所述目标代码的代码检测结果为存在恶意代码时,对所述全连接特征进行尺度变换处理,得到代码定位特征;恶意子字符串确定单元,用于根据所述代码定位特征的特征值确定所述目标代码中的恶意子字符串。
在一些实施例中,所述代码定位特征的特征值用于表示所述向量序列中各个向量为恶意代码对应的向量的概率,所述恶意子字符串确定单元,还用于获取所述代码定位特征中大于第一概率阈值的特征值,作为恶意特征值;获取所述向量序列中所述恶意特征值所对应的向量,作为恶意向量;获取所述恶意向量所对应的字符串,作为所述目标代码中的恶意子字符串。
在一些实施例中,所述融合特征得到模块包括:融合特征值得到单元,用于将所述第一提取特征中的特征值,与所述第二提取特征中的对应位置的特征值进行加权计算,得到融合特征值;融合特征得到单元,用于将各个融合特征值按照在提取特征的位置进行组合,得到融合特征。
在一些实施例中,所述目标代码获取模块,还用于从目标程序中获取预设长度的代码,作为待检测的目标代码;所述装置还包括:返回模块,用于当所述目标程序中的代码未检测完毕时,则返回所述从目标程序中获取预设长度的代码,作为待检测的目标代码的步骤,直到所述目标程序中的代码检测完毕;程序检测结果得到模块,用于基于各个所述目标代码对应的代码检测结果得到所述目标程序对应的程序检测结果。
在一些实施例中,所述代码检测结果得到模块,还包括:恶意代码检测概率确定单元,用于基于所述融合特征确定所述目标代码对应的恶意代码检测概率;恶意代码确定单元,用于当所述恶意代码检测概率大于第二概率阈值时,确定所述目标代码中存在恶意代码。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述代码检测方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述代码检测方法的步骤。
在一些实施例中,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各方法实施例中的步骤。
上述代码检测方法、装置、计算机设备和存储介质,获取待检测的目标代码,对目标代码进行字符串划分,得到目标子字符串序列,获取目标子字符串序列中各个目标子字符串分别对应的子字符串向量,组成向量序列,对向量序列进行线性特征提取,得到第一提取特征,以及对向量序列进行非线性特征提取,得到第二提取特征,对第一提取特征以及第二提取特征进行融合处理,得到融合特征,基于融合特征进行代码检测,得到目标代码对应的代码检测结果,通过字符串划分,可以将目标代码划分为有语义的多个子字符串,从而可以实现根据目标代码的语义确定代码检测结果,提高了代码检测结果的准确度。另外,通过对向量序列进行线性特征提取以及非线性特征提取,可以得到向量序列的线性特征以及非线性特征,使得融合特征中即包括线性特征又包括非线性特征,能够挖掘出更能体现代码特性的特征,从而提高了根据融合特征得到的代码检测结果的准确度。
附图说明
图1A为一些实施例中代码检测方法的应用环境图;
图1B为一些实施例中展示代码检测结果的界面图;
图2为一些实施例中代码检测方法的流程示意图;
图3为一些实施例中得到目标代码对应的子字符串的步骤的流程示意图;
图4为一些实施例中得到第二提取特征的步骤的流程示意图;
图5为一些实施例中代码检测方法的流程示意图;
图6为一些实施例中恶意代码检测模型的结构图;
图7为一些实施例中定位恶意子字符串的原理图;
图8为一些实施例中代码检测装置的结构框图;
图9为一些实施例中计算机设备的内部结构图;
图10为一些实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的代码检测方法,可以应用于如图1A所示的应用环境中。该应用环境中包括第一终端102A、第二终端102B、应用发布服务器104A、应用分享服务器104B、恶意代码检测服务器106以及数据库108,各个设备之间通过网络进行通信,例如,第一终端102A通过网络与应用发布服务器104A进行通信。第一终端102A上可以运行有软件发布工具,可以在软件发布工具中展示应用程序发布界面,可以通过应用程序发布界面获取并展示待发布的应用程序,当获取到应用发布指令时,例如获取到对应用程序发布界面中的“发布”按钮的点击操作时,可以将待发布的应用程序发送至应用发布服务器104A,应用发布服务器104A可以将接收到的待发布的应用程序发送至恶意代码检测服务器106,恶意代码检测服务器106可以对待发布的应用程序进行代码检测,并将代码检测结果返回至应用发布服务器104A,应用发布服务器104A可以将代码检测结果反馈至第一终端102A。第二终端102B上可以运行有软件分享工具,同样的,恶意代码检测服务器106可以对通过软件分享工具分享的待分享应用程序进行代码检测。其中代码检测结果可以包括恶意代码的位置信息、恶意代码的长度或恶意代码的内容中的至少一个,恶意代码的位置信息可以包括恶意代码的起始位置或终止位置中的至少一个。恶意代码检测结果例如可以是图1B中的“程序中存在恶意代码,恶意代码的位置是第aa字节开始的bb个字节,具体为“\x90\x00\x03\x00”,其中“第aa字节”表示恶意代码的起始位置,“bb个字节”表示恶意代码的长度。“\x90\x00\x03\x00”表示恶意代码的内容。
具体地,服务器106可以获取目标程序,目标程序例如可以是图1A中的待发布的应用程序或待分享的应用程序,服务器106可以从目标程序中获取待检测的目标代码,可以对目标代码进行字符串划分,得到目标子字符串序列,获取目标子字符串序列中各个目标子字符串分别对应的子字符串向量,组成向量序列,对向量序列进行线性特征提取,得到第一提取特征,以及对向量序列进行非线性特征提取,得到第二提取特征,对第一提取特征以及第二提取特征进行融合处理,得到融合特征,基于融合特征进行代码检测,得到目标代码对应的代码检测结果。第一终端102A以及第二终端102B上还可以运行有软件应用商城或邮箱软件,恶意代码检测服务器106可以对通过软件应用商城或邮箱软件传输的程序文件进行代码检测。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、车载终端和便携式可穿戴设备。服务器104可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器,还可以是提供车联网服务、路网协同、车路协同、智能交通、自动驾驶、工业互联网服务、数据通信(如4G、5G等)等平台服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表、车载终端等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
云技术(Cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。
云技术基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
云安全(Cloud Security)是指基于云计算商业模式应用的安全软件、硬件、用户、机构、安全云平台的总称。云安全融合了并行处理、网格计算、未知病毒行为判断等新兴技术和概念,通过网状的大量客户端对网络中软件行为的异常监测,获取互联网中木马、恶意程序的最新信息,并发送到服务端进行自动分析和处理,再把病毒和木马的解决方案分发到每一个客户端。
云安全主要研究方向包括:1.云计算安全,主要研究如何保障云自身及云上各种应用的安全,包括云计算机系统安全、用户数据的安全存储与隔离、用户接入认证、信息传输安全、网络攻击防护、合规审计等;2.安全基础设施的云化,主要研究如何采用云计算新建与整合安全基础设施资源,优化安全防护机制,包括通过云计算技术构建超大规模安全事件、信息采集与处理平台,实现对海量信息的采集与关联分析,提升全网安全事件把控能力及风险控制能力;3.云安全服务,主要研究各种基于云计算平台为用户提供的安全服务,如防病毒服务等。本申请提出的代码检测方法可以应用于云安全的网络攻击防护中,以提高云安全的安全等级。
可以理解,上述应用场景仅是一种示例,并不构成对本申请实施例提供的代码检测方法的限定,本申请实施例提供的方法还可以应用在其他应用场景中,例如终端102可以执行代码检测的步骤,得到代码检测结果,终端102可以将代码检测结果上传至服务器104。
在一些实施例中,如图2所示,提供了一种代码检测方法,以该方法应用于图1A中的服务器106为例进行说明,包括以下步骤:
S202,获取待检测的目标代码。
其中,目标代码指的是待检测的代码。通过对目标代码进行检测可以确定目标代码中是否存在恶意(Malware)代码。目标代码可以是软件对应的代码文件中的全部或者部分内容,例如可以将代码文件作为目标代码,或者从代码文件中获取预设位置的代码作为目标代码。预设位置可以根据需要设置,例如可以是文件头。文件头指的是文件开头的一段内容,可以包括文件属性信息,文件属性信息可以包括文件名、创建时间、修改时间或文件大小中的至少一种。目标代码文件可以有多个,例如可以将软件对应的代码文件进行划分,得到多个子代码文件,可以将每个子代码文件分别作为目标代码。在对代码文件进行划分时,可以按照预设数据量大小对代码文件进行划分,得到多个预设数据量大小的子代码文件,作为各个目标代码。预设数据量大小可以根据需要设置,例如可以是2M(兆)。服务器可以采用串行或并行的方式对目标代码进行代码检测,确定目标代码对应的代码检测结果。
软件对应的代码文件可以是源代码、二进制代码或可执行代码中的任意一种。源代码指的是采用汇编语言或高级语言编写的代码。二进制代码指的是对源代码进行处理得到的能被CPU(Central Processing Unit,中央处理器)直接识别的代码。可执行代码为二进制文件,也可以称为可执行文件(executable file)。可执行文件指的是可以由操作系统进行加载执行的文件,在不同的操作系统环境中,可执行文件的呈现方式不一样,例如在Windows操作系统中,可执行文件可以是.exe、.sys或.com类型中的任意一种。
具体地,服务器可以确定待检测的代码文件,根据待检测的代码文件得到待检测的目标代码。服务器可以将待检测的代码文件进行文件格式转换,得到目标文件格式的代码文件,将目标文件格式的代码文件作为待检测的目标代码,或者对目标文件格式的代码文件进行划分得到待检测的目标代码。文件格式指的是文件中数据的格式,可以为二进制文件格式、十六进制文件格式或十进制文件格式中的任意一种。目标文件格式可以是预先设定的,也可以是根据需要设置的,例如可以是十进制文件格式。举个例子,待检测的代码文件是二进制文件格式的,目标文件格式为十进制文件格式,服务器可以将待检测的代码文件由二进制文件格式转化为十进制文件格式,或者将待检测的代码文件由二进制文件格式转化为十六进制文件格式,得到十六进制的代码文件,然后将十六进制的代码文件转化为十进制文件格式,得到十进制的代码文件,将十进制的代码文件作为待检测的目标代码,或者对十进制的代码文件进行划分,得到待检测的目标代码。十六进制的代码文件例如可以是“\x90\x00\x03\x00”,对应的十进制的代码文件为“145,1,4,1”。其中,x90对应的十进制为144,145为x90的十进制加1。
在一些实施例中,服务器中可以存储有文件来源黑名单或文件来源白名单中的至少一个。服务器可以将获取的代码文件对应的文件来源,与文件来源黑名单中的文件来源进行对比,当确定代码文件的文件来源属于文件来源黑名单时,将代码文件作为待检测的代码文件。或者服务器可以将获取的代码文件对应的文件来源,与文件来源白名单中的文件来源进行对比,当确定代码文件的文件来源不属于文件来源白名单时,将代码文件作为待检测的代码文件。
在一些实施例中,待检测的目标代码可以是服务器104从终端获取的,也可以是服务器104从本地获取的,还可以是服务器104从其他服务器获取的,例如可以是从与服务器104独立的数据库服务器中获取的。例如终端可以向服务器发送代码检测请求,代码检测请求中可以携带代码文件或文件标识中的任意一种,文件标识指的是代码文件对应的标识。服务器可以从代码检测请求中提取代码文件,根据代码文件得到目标代码。或者服务器可以从代码检测请求中提取文件标识,获取文件标识对应的代码文件,根据代码文件得到待检测的目标代码。
S204,对目标代码进行字符串划分,得到目标子字符串序列。
其中,字符串可以包括一个或者多个字符,字符指的是目标代码中数据的最小单元。例如,当目标代码中的数据为十进制格式时,目标代码中数据的最小单元指的是一个十进制数据,即目标代码中的一个字符指的是一个十进制数据。目标代码中字符与字符之间的分割可以是采用预设分隔符进行分割的,预设分隔符可以是任意的分隔符,例如可以是逗号。目标代码例如可以为“78,9,3,145,1,4,1,1,1,5,1”,即目标代码通过逗号划分字符,78为一个字符。
子字符串序列中包括多个子字符串。目标子字符串序列可以包括多个目标子字符串。目标子字符串是对目标代码进行字符串划分得到的。目标子字符串序列中的目标子字符串根据目标子字符串在目标代码中的排列顺序进行排序。例如将“78,91,3,145,1,4,1,1,1,5”划分得到3个目标子字符串,分别为“78,91,3”、“145,1,4,1”以及“1,1,5”,则目标子字符串序列中首个目标子字符串为“78,91,3”,尾部的目标子字符串为“1,1,5”。
具体地,服务器可以根据代码子字符串集合对目标代码进行字符串划分,得到目标子字符串序列。代码子字符串集合中包括多个代码子字符串。代码子字符串集合中的代码子字符串可以是通过对代码文件集合中的代码文件进行字符串划分得到的。代码文件集合中可以包括恶意代码文件或良性(benign)代码文件中的至少一种,即代码子字符串集合可以是通过对恶意代码文件进行字符串划分得到。代码文件集合中恶意代码文件的数量与良性代码文件的数量之间的比例关系可以是任意的,也可以是预设比例关系,预设比例关系可以根据需要设置,例如可以是1:1。恶意代码文件指的是会带来危害的代码文件,例如可以是病毒文件。良性代码文件指的是具有正常功能的代码文件。服务器可以将代码文件集合中的各个代码文件进行字符串的划分,得到代码文件集合对应的代码子字符串集合。
在一些实施例中,服务器可以建立不同恶意类型对应的代码子字符串集合,还可以生成用于检测不同恶意类型的代码所使用的恶意代码检测模型。采用同一恶意类型对应的代码子字符串集合以及恶意代码检测模型,分别对目标代码进行字符串的划分以及代码检测。
在一些实施例中,服务器可以从目标代码中选取字符串,得到选取字符串,将选取字符串与代码子字符串集合中的代码子字符串进行对比,当存在与选取字符串一致的代码子字符串时,确定选取字符串属于代码子字符串集合,将选取字符串作为目标代码对应的目标子字符串。在从目标代码中选取字符串时,可以按照字符顺序在目标代码中的排列顺序,从目标代码中选取第一字符长度的第一初始字符串,当确定第一初始字符串不属于代码子字符串集合时,将第一初始字符串中的最后一个字符从第一初始字符串中移除,得到第一更新字符串,当确定第一更新字符串属于代码子字符串集合时,将第一更新字符串作为目标代码对应的第一个子字符串。然后从目标代码中第一个子字符串的后向字符开始,选取第一字符长度的字符串,得到下一轮的第一初始字符串,按照得到第一个子字符串的方式,从下一轮的第一初始字符串中确定目标代码对应的第二个子字符串。从而得到目标代码对应的各个目标子字符串,组成目标子字符串序列。其中,第一字符长度可以根据需要设置,例如可以是10。
在一些实施例中,服务器可以从目标代码中选取第二字符长度的字符串,得到第二初始字符串,当确定第二初始字符串属于代码子字符串集合时,从目标代码中获取第二初始字符串的后向字符,加入到第二初始字符串中,得到第二更新字符串,当确定第二更新字符串不属于代码子字符串集合时,将更新前的字符串作为目标代码对应的目标子字符串。第二字符长度小于第一字符长度。第二字符长度可以根据需要设置,例如可以是2。
在一些实施例中,服务器可以统计代码子字符串集合中同一代码子字符串的数量,得到代码子字符串集合中各个代码子字符串分别对应的子字符串数量,计算子字符串数量与代码子字符串集合的子字符串总数的比值,得到各个子字符串出现的频率。子字符串出现的频率与子字符串数量之间成正相关关系。其中,代码文件集合中的各个恶意代码文件可以是同一恶意类型的,也可以是不同恶意类型的。恶意类型可以根据恶意代码文件的传播方式进行划分,例如可以划分为计算机病毒、特洛伊木马、计算机蠕虫、移动代码或复合型病毒。
正相关关系指的是:在其他条件不变的情况下,两个变量变动方向相同,一个变量由大到小变化时,另一个变量也由大到小变化。可以理解的是,这里的正相关关系是指变化的方向是一致的,但并不是要求当一个变量有一点变化,另一个变量就必须也变化。例如,可以设置当变量a为10至20时,变量b为100,当变量a为20至30时,变量b为120。这样,a与b的变化方向都是当a变大时,b也变大。但在a为10至20的范围内时,b可以是没有变化的。
在一些实施例中,服务器可以采用多种代码划分方式,对目标代码进行划分,得到目标代码对应的候选字符串序列;不同的代码划分方式得到的候选字符串序列可以相同也可以不同。服务器可以根据代码子字符串集合中各个代码子字符串出现的频率,计算不同的候选字符串序列分别对应的概率,将概率最大的候选字符串序列作为目标代码对应的目标子字符串序列。候选字符串序列中的每个字符串可以对应有字符串概率,各个字符串概率通过统计计算得到的,例如可以是对多个代码文件中的出现的字符串进行统计计算得到的。候选字符串序列对应的概率可以根据候选字符串序列中各个字符串分别对应的概率计算得到,例如可以将候选字符串序列中各个字符串分别对应的概率的乘积,得到候选字符串序列对应的概率。
在一些实施例中,服务器可以计算候选字符串序列中各个字符串分别对应的概率的对数值,得到各个字符串分别对应的对数概率,根据各个对数概率得到候选字符串序列对应的概率,例如可以对各个对数概率进行相加运算,得到候选字符串序列对应的概率。当然,还可以利用联合概率计算得到候选字符串序列对应的概率,这里不做过多限制。
S206,获取目标子字符串序列中各个目标子字符串分别对应的子字符串向量,组成向量序列。
其中,子字符串向量指的是目标子字符串对应的向量表示形式,该子字符串向量用于表示目标子字符串所代表的语义,例如一个字符串可以视为一个词,子字符串向量视为词向量。本申请实施例中,通过将代码划分为具有语义意思的子字符串,从而可以得到代表其语义的子字符串向量,故可以基于语义进行代码检测。不同的目标子字符串对应的子字符串向量是不同的。服务器中可以预先存储代码子字符串集合中各个代码子字符串分别对应的向量表示形式。
向量序列指的是由子字符串向量组成的序列。向量序列中的子字符串向量可以按照目标子字符串在目标子字符串序列中的排列顺序进行排列的。向量序列可以以矩阵的形式表示,当向量序列以矩阵的形式表示时,向量序列可以成为向量矩阵。向量矩阵的大小可以根据需要设置,向量矩阵中的每一行可以表示一个子字符串向量,向量矩阵的列数可以表示一个子字符串向量的维度,向量矩阵的行数可以为子字符串向量的个数。例如,向量矩阵的大小为m*n,则m表示子字符串向量的个数,n表示一个子字符串向量的维度,即子字符串向量中所包括的元素的个数。
具体地,服务器可以根据目标子字符串在目标子字符串序列中的排列顺序,将目标子字符串对应的子字符串向量进行排序,得到向量序列。
在一些实施例中,服务器可以通过已训练的向量生成模型对目标代码进行处理,得到目标代码对应的各个子字符串向量。已训练的向量生成模型可以是通过代码文件集合中的代码文件训练得到的。具体地,服务器可以将目标代码输入到已训练的向量生成模型中,已训练的向量生成模型可以确定目标代码包括的各个目标子字符串,获取各个目标子字符串对应的向量表示形式,得到各个目标子字符串分别对应的子字符串向量。其中,向量生成模型可以是语言模型,例如可以是基于词向量模型的,词向量模型例如可以是n-gram模型。已训练的向量生成模型可以是恶意代码检测模型中的向量生成模块。
S208,对向量序列进行线性特征提取,得到第一提取特征,以及对向量序列进行非线性特征提取,得到第二提取特征。
其中,第一提取特征是通过对向量序列进行线性特征提取得到的特征。第二提取特征还可以是通过对向量序列进行非线性特征提取得到的特征。线性特征提取可以是通过对向量序列进行线性运算得到的,线性运算例如可以是卷积(Convolution)。非线性特征提取可以是通过对向量序列进行非线性运算得到的,非线性运算例如可以是指数运算。第一提取特征可以包括多个特征值。第二提取特征可以包括多个特征值。第一提取特征所包括的特征值的数量与第二提取特征所包括的特征值的数量可以是相同的,也可以是不同的。
具体地,服务器可以对向量序列依次进行线性特征提取以及非线性特征提取,得到第二提取特征。得到第二提取特征所采用的线性特征提取方式,可以与得到第二提取特征所采用的线性特征提取方式相同,也可以是不同的。
在一些实施例中,服务器可以将向量序列输入到恶意代码检测模型中,通过恶意代码检测模型中的特征提取层对向量序列进行特征提取,得到第一提取特征以及第二提取特征。特征提取层可以有一个,也可以有多个。每个特征提取层可以包括线性特征提取模块以及非线性特征提取模块。服务器可以通过特征提取层中的线性特征提取模块对向量序列进行线性特征提取,得到第一提取特征,通过特征提取层中的非线性特征提取模块对向量序列进行非线性特征提取,得到第二提取特征。线性特征提取模块以及非线性特征提取模块可以是通过联合训练的方式训练得到的。线性特征提取模块以及非线性特征提取模块可以是位于恶意代码检测模型中的同一层。
在一些实施例中,非线性特征提取模块可以包括线性特征提取单元以及非线性特征提取单元。非线性特征提取单元可以通过激活函数实现。服务器可以通过线性特征提取单元对向量序列进行线性特征提取,得到中间提取特征,通过非线性特征提取单元对向量序列进行非线性特征提取,得到第二提取特征。
S210,对第一提取特征以及第二提取特征进行融合处理,得到融合特征。
其中,融合特征指的是对第一提取特征以及第二提取特征进行融合处理得到的特征。融合处理可以包括线性运算或非线性运算中的至少一种。线性运算包括加法运算或乘法运算中的至少一种。非线性运算可以包括对数运算、开方运算、指数运算或三角函数运算中的至少一种。
具体地,服务器可以对第一提取特征以及第二提取特征进行线性运算,得到融合特征。例如可以对第一提取特征中的特征值与第二提取特征中对应位置的特征值进行线性运算,例如进行相加或相乘运算,将线性运算得到的结果作为融合特征中的特征值,得到融合特征。
S212,基于融合特征进行代码检测,得到目标代码对应的代码检测结果。
其中,代码检测用于检测目标代码为恶意代码,还是良性代码。代码检测结果可以为恶意代码和良性代码中的任意一种,当代码检测结果为恶意代码时,代码检测结果中还可以包括恶意代码的位置信息、恶意代码的内容、恶意代码的长度、恶意类型或恶意代码的意图中的至少一种。对于网页,恶意代码的意图可以包括修改主页、锁定主页、修改默认搜索引擎或鼠标右键菜单被添加非法网站广告链接等。对于操作系统,恶意代码的意图可以包括在开机后自动打开锁定网址、格式化硬盘、非法读取或盗取用户文件、锁定或禁用注册表等。
具体地,服务器可以根据融合特征确定目标代码为恶意代码的概率,根据目标代码为恶意代码的概率确定进行代码检测,确定目标代码对应的代码检测结果,例如当目标代码为恶意代码的概率大于第一预设概率时,确定目标代码为恶意代码,反之,确定目标代码为良性代码。
在一些实施例中,服务器可以对融合特征进行非线性处理,得到非线性处理后的融合特征,根据非线性处理后的融合特征得到目标代码对应的代码检测结果。服务器可以从非线性处理后的融合特征中选取符合特征值选取条件的各个特征值,得到特征值组合,根据特征值组合进行代码检测,确定目标代码对应的代码检测结果。服务器可以将非线性处理后的融合特征进行划分,得到多个子融合特征,从各个子融合特征中选取符合特征值选取条件的各个特征值,得到特征值组合。其中,各个子融合特征中包括的特征值的数量可以是相同的,也可以是不同的。特征值选取条件可以是最大特征值或者平均特征值中的任意一种。服务器可以从每个子融合特征中选取最大的特征值,得到各个子融合特征分别对应的最大特征值,组成特征值组合,或者计算每个子融合特征中各个特征值的平均值,得到各个子融合特征分别对应的平均特征值,组成特征值组合。
在一些实施例中,服务器可以对特征值组合中的特征值进行加权求和,得到加权的结果,根据加权的结果进行代码检测,确定目标代码对应的代码检测结果。
在一些实施例中,服务器可以获取各个代码来源分别对应的代码检测结果,对代码检测结果中的恶意代码进行统计,得到代码来源对应的恶意代码统计值,根据恶意代码统计值确定代码来源对应的危险等级。
上述代码检测方法中,获取待检测的目标代码,对目标代码进行字符串划分,得到目标子字符串序列,获取目标子字符串序列中各个目标子字符串分别对应的子字符串向量,组成向量序列,对向量序列进行线性特征提取,得到第一提取特征,以及对向量序列进行非线性特征提取,得到第二提取特征,对第一提取特征以及第二提取特征进行融合处理,得到融合特征,基于融合特征进行代码检测,得到目标代码对应的代码检测结果,通过字符串划分,可以将目标代码划分为有语义的多个子字符串,从而可以实现根据目标代码的语义确定代码检测结果,提高了代码检测结果的准确度。另外,通过对向量序列进行线性特征提取以及非线性特征提取,可以得到向量序列的线性特征以及非线性特征,使得融合特征中即包括线性特征又包括非线性特征,能够挖掘出更能体现代码特性的特征,从而提高了根据融合特征得到的代码检测结果的准确度。
本申请提出的代码检测方法,可以应用于网络安全中,可以利用本申请提出的代码检测方法对网络中的可疑的软件进行检测,从而获得高质量的恶意代码防御系统,可以实现在不同的操作系统和硬件上部署相同的系统来检测恶意软件。
可以采用基于特征的方法进行反病毒和恶意软件检测,例如可以通过手动设置规则来判断某个软件是否属于已知的恶意软件类型集,但是设置的规则通常是具有针对性的,并且由于软件对应的二进制文件具有独特性,即使新的恶意代码使用了与原始恶意代码相同的功能,恶意软件检测方法也可能无法检测到新的恶意代码。本申请提供的代码检测方法,对代码中的子字符串对应的子字符串向量组成的向量序列进行特征提取,根据提取特征得到融合特征,基于融合特征确定代码检测结果,能够适应不断变化的恶意软件生态系统,能够实现根据从二进制文件中提取特征,检测二进制文件,提高了恶意代码的检测准确度。
在一些实施例中,对目标代码进行字符串划分,得到目标子字符串序列包括:从目标代码中获取当前子字符串,将当前子字符串与代码子字符串集合中的代码子字符串进行对比,当对比一致时,将当前子字符串作为目标代码对应的目标子字符串;代码子字符串通过对恶意代码文件进行字符串划分得到;将目标代码对应的目标子字符串按照在目标代码中的位置组成目标子字符串序列。
其中,当前子字符串是按照字符串选取规则从目标代码中选取的字符串。字符串选取规则可以为正向选取方式或逆向选取方式中的任意一种。正向选取方式指的是从目标代码的首字符开始选取,逆向选取方式指的是从目标代码的尾字符开始选取。当前子字符串的长度可以是根据需要设置的,也可以是预先设置的,例如可以是10。对比一致指的是代码子字符串集合中包括与当前子字符串相同的子字符串。
具体地,服务器可以将当前子字符串与代码子字符串集合中的代码子字符串进行对比,当对比一致时,若字符串选取规则为正向选取方式,服务器可以从当前子字符串的后向字符开始选取得到下一轮的当前子字符串,返回将当前子字符串与代码子字符串集合中的代码子字符串进行对比的步骤,从而得到目标代码对应的各个目标子字符串,服务器可以将目标代码的各个目标子字符串按照其在目标代码中的排列顺序进行排列,得到目标子字符串序列。
在一些实施例中,服务器可以将当前子字符串与代码子字符串集合中的代码子字符串进行对比,当对比不一致时,若字符串选取规则为正向选取方式,服务器可以从依次删除当前子字符串的尾字符,得到尾部删除字符串,直到尾部删除字符串与代码子字符串集合中的代码子字符串对比一致,将对比一致的尾部删除字符串作为目标代码对应的目标子字符串,从目标代码中尾部删除字符串的后向字符开始,选取得到下一轮的当前子字符串,返回将当前子字符串与代码子字符串集合中的代码子字符串进行对比的步骤。
本实施例中,从目标代码中获取当前子字符串,将当前子字符串与代码子字符串集合中的代码子字符串进行对比,当对比一致时,将当前子字符串作为目标代码对应的目标子字符串,将目标代码对应的目标子字符串按照在目标代码中的位置组成目标子字符串序列,由于代码子字符串集合根据恶意代码文件进行字符串划分得到的,从而使得得到的目标代码对应的子字符串符合恶意代码中字符串的划分规则,使得子字符串序列更能够反映代码的恶意性,提高了子字符串的语义表达程度。
在一些实施例中,如图3所示,从目标代码中获取当前子字符串,将当前子字符串与代码子字符串集合中的代码子字符串进行对比,当对比一致时,将当前子字符串作为目标代码对应的目标子字符串包括:S302,从目标代码中获取当前子字符串,将当前子字符串与代码子字符串集合中的代码子字符串进行对比;S304,当对比一致时,从目标代码中获取当前子字符串对应的后向字符,将后向字符加入到当前子字符串中,得到更新后的当前子字符串;S306,当更新后的当前子字符串与代码子字符串集合中的代码子字符串对比不一致时,将更新前的当前子字符串作为目标代码对应的目标子字符串。
其中,将后向字符加入到当前子字符串中指的是,将后向字符添加到当前子字符串的尾部。
具体地,服务器可以从目标代码中获取当前子字符串对应的一个或者多个后向字符,将一个或多个后向字符加入到当前子字符串中,得到更新后的当前子字符串。多个指的是至少两个。
在一些实施例中,服务器可以将更新后的当前子字符串与代码子字符串集合中的代码子字符串进行对比,当确定代码子字符串集合中的各个代码子字符串与更新后的当前子字符串不一致时,将更新前的当前子字符串作为目标代码对应的目标子字符串。例如,当前子字符串为“78,91,3”,更新后的当前子字符串为“78,91,3,145”,若“78,91,3”属于代码子字符串集合且“78,91,3,145”不属于代码子字符串集合,则可以将“78,91,3”作为目标代码对应的目标子字符串。
本实施例中,从目标代码中获取当前子字符串,将当前子字符串与代码子字符串集合中的代码子字符串进行对比,当对比一致时,从目标代码中获取当前子字符串对应的后向字符,将后向字符加入到当前子字符串中,得到更新后的当前子字符串,当更新后的当前子字符串与代码子字符串集合中的代码子字符串对应不一致时,将更新前的当前子字符串作为目标代码对应的目标子字符串,从而可以快速的得到目标代码对应的各个目标子字符串。
在一些实施例中,如图4所示,对向量序列进行线性特征提取,得到第一提取特征,以及对向量序列进行非线性特征提取,得到第二提取特征包括:S402,利用第一卷积模型对向量序列进行卷积,得到第一提取特征;S404,利用第二卷积模型对向量序列进行卷积,得到向量序列对应的卷积特征;S406,对卷积特征进行非线性处理,得到第二提取特征。其中,第一卷积模型与第二卷积模型是联合训练得到的。
其中,第一卷积模型可以为恶意代码检测模型中的线性特征提取模块。第二卷积模型可以为恶意代码检测模型中的非线性特征提取模块。第一卷积模型与第二卷积模型的维度可以是相同的,也可以是不同的。第一卷积模型与第二卷积模型对应的模型参数可以是相同的,也可以是不同的。第一卷积模型与第二卷积模型可以是在训练恶意代码检测模型时训练得到的。
具体地,卷积特征是利用第二卷积模块对向量序列进行卷积处理后得到的特征。对卷积特征进行非线性处理指的是对卷积特征中的特征值进行非线性运算。例如,服务器可以利用双曲正切函数(tanh函数),对卷积特征中的特征值进行运算,得到各个特征值分别对应的第二提取特征。
本实施例中,利用第一卷积模型对向量序列进行卷积,得到第一提取特征,利用第二卷积模型对向量序列进行卷积,得到向量序列对应的卷积特征,对卷积特征进行非线性处理,得到第二提取特征,从而即得到了向量序列的线性特征又得到了向量序列的非线性特征,提高了向量序列对应的特征的丰富程度。
在一些实施例中,对卷积特征进行非线性处理,得到第二提取特征包括:对卷积特征的各个初始特征值进行指数运算,得到初始特征值对应的指数运算特征值;根据指数运算特征值得到第二提取特征的特征值,组成第二提取特征。
具体地,初始特征值指的是卷积特征中的特征值。指数运算特征值根据初始特征值进行指数运算得到的结果。服务器可以根据初始特征值进行指数运算,例如可以对初始特征值对应的相反数进行指数运算,得到各个初始特征值分别对应的指数运算特征值,将指数运算特征值与第一预设数值进行相加运算,得到相加运算结果,根据相加运算结果得到第二提取特征,例如可以将相加运算结果的倒数作为第二提取特征。
本实施例中,对卷积特征的各个初始特征值进行指数运算,得到初始特征值对应的指数运算特征值,根据指数运算特征值得到第二提取特征的特征值,组成第二提取特征,从而通过指数运算快速的得到了非线性特征。
在一些实施例中,基于融合特征进行代码检测,得到目标代码对应的代码检测结果包括:将融合特征中的特征值与特征阈值进行对比;屏蔽融合特征中小于特征阈值的特征值,得到屏蔽后的融合特征;基于屏蔽后的融合特征进行代码检测,得到目标代码对应的代码检测结果。
具体地,特征阈值可以是预先设置的,也可以是根据需要设置的,例如可以是0。屏蔽融合特征中小于特征阈值的特征值,可以是将融合特征中小于特征阈值的特征值更新为第二预设阈值。第二预设阈值可以根据需要设置,例如可以是0。
在一些实施例中,服务器可以将融合特征中的特征值与特征阈值进行对比,当融合特征中的特征值小于特征阈值时,将融合特征中的特征值更新为第二预设数值,当融合特征中的特征值大于特征阈值时,保持融合特征中的特征值不变,得到屏蔽后的融合特征。
在一些实施例中,服务器可以根据屏蔽后的融合特征确定目标代码为恶意代码的概率,根据目标代码为恶意代码的概率,确定目标代码对应的代码检测结果。
在一些实施例中,恶意代码检测模型中还可以包括屏蔽模块,屏蔽模块可以使用激活函数实现。屏蔽模块对应的激活函数与非线性特征提取单元对应的激活函数不同。服务器可以通过非线性特征提取模块中的线性特征提取单元对向量序列进行线性处理,得到卷积特征,利用非线性特征提取模块中的非线性特征提取单元对卷积特征进行非线性处理,得到第二提取特征,利用恶意代码检测模型中的特征融合模块将第二提取特征与第一提取特征进行特征融合,得到融合特征,利用恶意代码检测模型中的屏蔽模块对融合特征进行处理。非线性特征提取单元拥有比屏蔽模块更好的过滤冗余信息的能力,屏蔽模块比非线性特征提取单元具有更发散的搜索空间。非线性特征提取单元可以过滤屏蔽模块所允许的信息,使得能够以有效的方式为模型的特征表示增加额外的容量。额外容量指的就是屏蔽模块具有的发散性所带来的额外特征变量。
本实施例中,对卷积特征的各个初始特征值进行指数运算,得到初始特征值对应的指数运算特征值,根据指数运算特征值得到第二提取特征的特征值,组成第二提取特征,根据第一提取特征以及第二提取特征进行特征融合,得到融合特征,将融合特征中的特征值与特征阈值进行对比,屏蔽融合特征中小于特征阈值的特征值,得到屏蔽后的融合特征,基于屏蔽后的融合特征进行代码检测,得到目标代码对应的代码检测结果,通过依次进行指数运算以及屏蔽处理,由于指数运算拥有比屏蔽处理更好的过滤冗余信息的能力,因此在屏蔽处理之前先使用指数运算进行信息过滤,可以过滤掉屏蔽处理所允许的信息,由于屏蔽处理比指数运算具有更发散的搜索空间,所以在指数运算后进行屏蔽处理,可以搜索到更多有效的特征。另外,屏蔽处理可以减少数据量,从而提高了代码检测的效率。
在一些实施例中,基于屏蔽后的融合特征进行代码检测,得到目标代码对应的代码检测结果包括:获取预设尺寸的特征提取窗口;获取屏蔽后的融合特征中,特征提取窗口对应的各个特征区域的关键特征值,组成关键特征;基于关键特征进行代码检测,得到目标代码对应的代码检测结果。
其中,预设尺寸可以根据需要设置,例如可以是500。特征提取窗口用于进行特征提取。特征提取窗口对应的特征区域,指的是屏蔽后的融合特征中特征提取窗口所覆盖的区域。关键特征包括多个关键特征值。特征提取窗口可以在融合特征中进行滑动,在滑动时,可以是按照预设步长进行滑动的,预设步长可以根据需要设置,例如可以是500。预设尺寸可以与预设步长相同,也可以与预设步长不同。
具体地,服务器可以控制特征提取窗口在屏蔽后的融合特征上滑动,获取特征提取窗口所对应的特征区域中的各个特征值,得到窗口特征,根据窗口特征的各个特征值得到关键特征值。例如服务器可以从窗口特征的各个特征值中获取最大的特征值作为关键特征值,也可以将窗口特征的各个特征值的平均值作为关键特征值。
在一些实施例中,服务器可以根据关键特征确定目标代码中存在恶意代码的概率,根据目标代码中存在恶意代码的概率确定目标代码对应的代码检测结果,也可以对关键特征中的特征值进行加权计算,确定目标代码中存在恶意代码的概率。
本实施例中,由于关键特征是根据特征提取窗口对应的各个特征区域的关键特征值计算得到的,因此关键特征可以体现各个特征区域的特点,即关键特征可以体现代码的特点,从而基于关键特征进行代码检测,可以提高代码检测准确度;
在一些实施例中,基于融合特征进行代码检测,得到目标代码对应的代码检测结果包括:基于融合特征进行全连接处理,得到全连接特征;当基于全连接特征确定目标代码的代码检测结果为存在恶意代码时,对全连接特征进行尺度变换处理,得到代码定位特征;根据代码定位特征的特征值确定目标代码中的恶意子字符串。
其中,全连接特征是根据融合特征中的特征值进行全连接处理得到的特征。融合特征可以是恶意代码检测模型中的全连接层(FC,fully connected)的输入,全连接处理可以是通过恶意代码检测模型中的全连接层对融合特征进行处理的过程。
尺度变换处理用于对全连接特征的数据维度进行缩放,以使得全连接特征的数据维度与向量序列的数据维度一致。代码定位特征是对全连接特征进行尺度变换处理后得到的特征。代码定位特征的数据维度与向量序列的数据维度一致。向量序列的数据维度指的是向量序列中所包括的向量的数量。
具体地,服务器可以根据代码定位特征确定目标代码对应的代码检测结果。例如服务器可以根据代码定位特征确定目标代码中存在恶意代码的概率,根据目标代码中存在恶意代码的概率确定目标代码的代码检测结果。
在一些实施例中,服务器可以基于融合特征得到关键特征,基于关键特征进行全连接处理,得到全连接特征。
本实施例中,基于融合特征进行全连接处理,得到全连接特征,当基于全连接特征确定目标代码的代码检测结果为存在恶意代码时,对全连接特征进行尺度变换处理,得到代码定位特征,根据代码定位特征的特征值确定目标代码中的恶意子字符串,实现了对目标代码中的恶意子字符串的定位,提高了恶意子字符串的可视化。
在一些实施例中,代码定位特征的特征值用于表示向量序列中各个向量为恶意代码对应的向量的概率,根据代码定位特征的特征值确定目标代码中的恶意子字符串包括:获取代码定位特征中大于第一概率阈值的特征值,作为恶意特征值;获取向量序列中恶意特征值所对应的向量,作为恶意向量;获取恶意向量所对应的字符串,作为目标代码中的恶意子字符串。
其中,第一概率阈值可以根据需要设置,例如可以是0.9。恶意特征值为代码定位特征中大于第一概率阈值的特征值。恶意向量指的是向量序列中恶意特征值所对应的向量。向量序列中恶意特征值所对应的向量指的是向量序列中,排列顺序与恶意特征值在代码定位特征中的排列顺序一致的向量,例如恶意特征值a在代码定位特征中的排列顺序为10,向量A在向量序列中的排列顺序也是10,则向量A为恶意特征值a对应的恶意向量。恶意子字符串指的是目标代码中恶意向量所对应的字符串。
具体地,服务器可以从目标代码中确定恶意向量对应的字符串,得到目标代码中的恶意子字符串。目标代码中的恶意子字符串可以有一个或者多个。其中,多个指的是至少两个。
在一些实施例中,服务器可以从目标程序中获取多个目标代码,对各个目标代码进行代码检测,得到各个目标代码分别对应的代码检测结果,服务器可以获取代码检测结果为目标代码中存在恶意代码的各个目标代码分别对应的恶意子字符串,得到目标程序对应的各个恶意子字符串。其中,目标程序可以是任意的程序文件,也可以是从特定来源获取的程序,从特定来源获取的程序文件被检测为恶意程序的概率大于第二预设概率。
本实施例中,获取代码定位特征中大于第一概率阈值的特征值,作为恶意特征值,获取向量序列中恶意特征值所对应的向量,作为恶意向量,获取恶意向量所对应的字符串,作为目标代码中的恶意子字符串,提高了目标代码中恶意子字符串的定位准确度。
在一些实施例中,对第一提取特征以及第二提取特征进行融合处理,得到融合特征包括:将第一提取特征中的特征值,与第二提取特征中的对应位置的特征值进行加权计算,得到融合特征值;将各个融合特征值按照在提取特征的位置进行组合,得到融合特征。
其中,服务器可以从第一提取特征以及第二提取特征中获取同一排列顺序的第一特征值以及第二特征值,对第一特征值与第二特征值进行加权计算,得到融合特征值。第一特征值为第一提取特征中的特征值,第二特征值为第二提取特征中的特征值,第一特征值在第一提取特征中的排列顺序与第二特征值在第二提取特征中的排列顺序一致。
具体地,服务器可以将各个融合特征值,按照对应的第一特征值在第一提取特征中的位置进行组合,得到融合特征,或者按照对应的第二特征值在第二提取特征中的位置进行组合。
本实施例中,将第一提取特征中的特征值,与第二提取特征中的对应位置的特征值进行加权计算,得到融合特征值,将各个融合特征值按照在提取特征的位置进行组合,得到融合特征,从而使得融合特征即包括线性特征又包括非线性特征,提高了融合特征的特征丰富程度。
在一些实施例中,获取待检测的目标代码包括:从目标程序中获取预设长度的代码,作为待检测的目标代码;该方法还包括:当目标程序中的代码未检测完毕时,则返回从目标程序中获取预设长度的代码,作为待检测的目标代码的步骤,直到目标程序中的代码检测完毕;基于各个目标代码对应的代码检测结果得到目标程序对应的程序检测结果。
其中,预设长度可以是根据需要设置的,例如可以是100字节(Byte)或50字符。预设长度可以是根据预设数据量确定的。预设数据量可以是根据需要设置的,例如可以是2M。目标程序中预设长度的代码对应的数据量为预设数据量。程序检测结果可以包括恶意程序或良性程序中的任意一种,当为恶意程序时,程序检测结果中还可以包括恶意类型、危害等级或恶意程序的意图中的至少一种。
具体地,服务器可以统计目标代码对应的代码检测结果中,表示目标代码中存在恶意代码的代码检测结果的数量,得到恶意结果数量,根据恶意结果数量确定目标程序对应的程序检测结果。
在一些实施例中,当各个目标代码对应的代码检测结果中,存在表示目标代码中存在恶意代码的代码检测结果时,服务器确定目标程序为恶意程序。
在一些实施例中,服务器可以计算恶意结果数量与总结果数量的比值,得到恶意结果占比,当恶意结果占比大于预设占比阈值时,确定目标程序为恶意程序。总结果数量指的是代码检测结果的总数。预设占比可以是根据需要设置的,例如可以是30%。
在一些实施例中,服务器可以根据恶意结果占比确定目标程序对应的危害等级。危害等级可以与恶意结果的占比成正相关关系。
本实施例中,从目标程序中获取预设长度的代码,作为待检测的目标代码,当目标程序中的代码未检测完毕时,则返回从目标程序中获取预设长度的代码,作为待检测的目标代码的步骤,直到目标程序中的代码检测完毕,基于各个目标代码对应的代码检测结果得到目标程序对应的程序检测结果,从而当目标程序的数据量较大时,可以通过将目标程序中的各个程序块进行检测,实现对整个程序的检测。
在一些实施例中,基于融合特征进行代码检测,得到目标代码对应的代码检测结果包括:基于融合特征确定目标代码对应的恶意代码检测概率;当恶意代码检测概率大于第二概率阈值时,确定目标代码中存在恶意代码。
具体地,第二概率阈值可以是预先设置的,也可以是根据需要设置的,例如可以是0.9。服务器可以将融合特征中的特征值与特征阈值进行对比,屏蔽融合特征中小于特征阈值的特征值,得到屏蔽后的融合特征,基于屏蔽后的融合特征确定目标代码对应的恶意代码检测概率。当恶意代码检测概率大于第二概率阈值时,确定目标代码中存在恶意代码,当当恶意代码检测概率小于第二概率阈值时,确定目标代码为良性代码。
在一些实施例中,服务器可以将获取预设尺寸的特征提取窗口,获取屏蔽后的融合特征中特征提取窗口对应的各个特征区域的关键特征值,组成关键特征,基于关键特征进行代码检测确定目标代码对应的恶意代码检测概率。
在一些实施例中,服务器可以基于关键特征值进行全连接处理,得到全连接特征,基于全连接特征进行代码检测确定目标代码对应的恶意代码检测概率。
本实施例中,基于融合特征确定目标代码对应的恶意代码检测概率,当恶意代码检测概率大于第二概率阈值时,确定目标代码中存在恶意代码,提高了对目标代码检测的准确度。
在一些实施例中,如图5所示,提供了一种代码检测方法,包括以下步骤:
502,从目标程序中获取预设长度的代码,作为待检测的目标代码。
具体地,服务器可以将目标程序的可执行文件转换为字节流,当字节流的数据量的大小超过预设数据量大小,例如2M时,则将字节流切分为1-2M的字节流,将切分得到的各个字节流转换为十六进制,每个十六进制为一个单词,按此方法对字节流进行分词,分词后将十六进制内容转换为十进制,将十进制内容作为待检测的目标代码。
504,对目标代码进行字符串划分,得到目标子字符串序列,获取目标子字符串序列中各个目标子字符串分别对应的子字符串向量,组成向量序列;
具体地,从目标代码中获取当前子字符串,将当前子字符串与代码子字符串集合中的代码子字符串进行对比,当对比一致时,从目标代码中获取当前子字符串对应的后向字符,将后向字符加入到当前子字符串中,得到更新后的当前子字符串,当更新后的当前子字符串与代码子字符串集合中的代码子字符串对比不一致时,将更新前的当前子字符串作为目标代码对应的目标子字符串。获取目标子字符串序列中各个目标子字符串分别对应的子字符串向量,组成向量序列。其中,将目标代码对应的目标子字符串按照在目标代码中的位置组成目标子字符串序列。
例如,可以将目标程序或目标代码输入到图6所示的恶意代码检测模型600中,恶意代码检测模型包括已训练的向量生成模型602,服务器可以利用恶意代码检测模型中的已训练的向量生成模型,对目标程序或目标代码进行向量处理,得到各个目标代码分别对应的向量序列。向量生成模型可以用词嵌入(word embedding)模型实现,词嵌入模型例如可以是一个8维的。
506,利用第一卷积模型对向量序列进行卷积,得到第一提取特征,利用第二卷积模型对向量序列进行卷积,得到向量序列对应的卷积特征,第一卷积模型与第二卷积模型是联合训练得到的。
具体地,图6中的恶意代码检测模型还可以包括线性特征提取模块604以及非线性特征提取模块606,非线性特征提取模块606可以包括线性特征提取单元606A以及非线性特征提取单元606B,第一卷积模型可以为线性特征提取模块604,第二卷积模型可以是线性特征提取单元606A。服务器可以将向量序列输入到线性特征提取单元606A中得到卷积特征。线性特征提取模块604以及线性特征提取单元606A可以采用卷积神经网络实现,例如可以使用一维的卷积神经网络(1D conv),一维的卷积神经网络中可以包括多个过滤器(filters),在利用一维的卷积神经网络进行卷积时,卷积窗口的长度以及卷积的步长可以是预先设置的,也可以根据需要设置,卷积窗口的长度例如可以是500,卷积的步长例如可以是500。
508,对卷积特征进行非线性处理,得到第二提取特征。
具体地,服务器可以对卷积特征的各个初始特征值进行指数运算,得到初始特征值对应的指数运算特征值,根据指数运算特征值得到第二提取特征的特征值,组成第二提取特征。
例如,非线性特征提取单元606B可以对线性特征提取单元606A得到的卷积特征进行非线性处理,得到第二提取特征。
510,将第一提取特征中的特征值,与第二提取特征中的对应位置的特征值进行加权计算,得到融合特征值,将各个融合特征值按照在提取特征的位置进行组合,得到融合特征。
具体地,恶意代码检测模型600还可以包括特征融合模块608,服务器可以通过特征融合模块608对线性特征提取模块604输出的第一提取特征以及非线性特征提取模块606输出的第二提取特征进行特征融合,得到融合特征。例如可以将线性特征提取模块604输出的结果与非线性特征提取模块606输出的结果,进行逐元素相乘,得到融合特征。
通过线性特征提取模块604、非线性特征提取模块606以及特征融合模块608,可以识别恶意软件的本地指标,本地指标指的是恶意软件被判定为存在恶意代码所依据的代码段或者主要依据的代码段。
512,基于融合特征进行代码检测,得到目标代码对应的代码检测结果。
具体地,服务器可以将融合特征中的特征值与特征阈值进行对比,屏蔽融合特征中小于特征阈值的特征值,得到屏蔽后的融合特征,获取预设尺寸的特征提取窗口,获取屏蔽后的融合特征中,特征提取窗口对应的各个特征区域的关键特征值,组成关键特征,基于关键特征进行代码检测,得到目标代码对应的代码检测结果。
服务器还可以基于融合特征进行全连接处理,得到全连接特征,当基于全连接特征确定目标代码的代码检测结果为存在恶意代码时,对全连接特征进行尺度变换处理,得到代码定位特征,根据代码定位特征的特征值确定目标代码中的恶意子字符串。当代码定位特征的特征值用于表示向量序列中各个向量为恶意代码对应的向量的概率时,服务器可以获取代码定位特征中大于第一概率阈值的特征值,作为恶意特征值,获取向量序列中恶意特征值所对应的向量,作为恶意向量,获取恶意向量所对应的字符串,作为目标代码中的恶意子字符串。
例如,恶意代码检测模型600还可以包括屏蔽模块610、池化模块612、全连接模块614、分类模块616,全连接模块614可以对应有激活模块,池化模块612可以采用全局最大池化,全连接模块614也可称为全连接层,例如可以是128维(128D)的全连接层,分类模块616也可以称为分类层,例如可以是2维(2D)的分类层。服务器可以将特征融合模块608通过屏蔽模块610、池化模块612、全连接模块614以及分类模块616,得到目标代码对应的代码检测结果,分类模块616可以根据全连接模块614输出的全连接特征确定目标代码是否存在恶意代码,当确定目标代码中存在恶意代码时,服务器可以对全连接进行尺度变换处理,得到代码定位特征,根据代码定位特征确定目标代码中的恶意子字符串,即从目标代码中确定判定为存在恶意代码所依据的代码段,如图7所示,目标代码对应的十六进制表示形式为“MZ\x90\x00\x03\x00\x00\x00\x04\x00\x00\x00\xff\xff\x00\x00\xb8\x00\x00\x00\x00\x00\x00...”,“x00\x00\xb8\x00”是通过代码定位特征从目标代码中确定的恶意子字符串。通过池化模块可以实现最大池化处理,可以使得模型能够评估整个文件中本地指标的相对强度,从而找出重要的全局组合。
服务器还可以基于融合特征确定目标代码对应的恶意代码检测概率,当恶意代码检测概率大于第二概率阈值时,确定目标代码中存在恶意代码。
514,判断目标程序中的代码是否检测完毕,若否,则返回从目标程序中获取预设长度的代码,作为待检测的目标代码的步骤;若是,则执行步骤516。
516,基于各个目标代码对应的代码检测结果得到目标程序对应的程序检测结果。
本实施例中,不需要手动构建特性或编译器知识,训练后的恶意代码检测模型具有通用性,具有对恶意软件变化的鲁棒性;训练后的恶意代码检测模型推理速度快,可以用于对大文件进行检测,计算复杂度与序列长度成线性关系,即计算量和内存用量能够根据序列长度扩展,序列长度例如为二进制文件大小;训练后的恶意代码检测模型能够从二进制文件中找出对于取证分析来说重要的代码段,即可以从二进制文件中确定代码被检测为存在恶意代码所依据的代码段,从而在分析标记为恶意软件的时候能够提供更好的解释能力。代码段指的是软件代码中的一段代码。本实施例提供的代码检测方法还可以适用于新兴的文件格式、编译器和指令集体系结构,无需借助昂贵和不可靠的特征工程就能学会如何区分良性和恶意的Windows可执行文件,在检查整个文件的时候能同时考虑到本地和全局上下文。
在一些实施例中,由于网络激活函数需要占用大量的内存,可以采用使用数据并行的模型训练方式。例如在对图6中的恶意代码检测模型进行训练时,可以使用具有8个GPU(Graphics Processing Unit,图像处理器)的DGX-1系统,当利用含有400000个样本的训练集以数据并行的方式训练恶意代码检测模型,并充分利用这8个GPU上的计算单元和内容时,完成一轮训练需要大约16.75个小时,训练过程共计需要完成10轮,如果使用含有两百万个样本的训练集进行训练时,使用同样的系统,需要花费一个月的时间。训练时,为了加快模型收敛的速度,可以增加batch(批)的大小,并且可以通过控制过滤器的窗口的长度以及过滤器的步长,例如,增大过滤器窗口的长度或过滤器的步长,达到控制卷积激活单元所占用的内容单元数量。通过卷积层之后的全局最大池化层,可以实现在检查整个文件的时候能同时考虑到本地和全局上下文。全局上下文指的是输入到模型中的整个文本。
应该理解的是,虽然图2-7的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-7中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一些实施例中,如图8所示,提供了一种代码检测装置,该装置可以采用软件模块或硬件模块,或者是二者的结合成为计算机设备的一部分,该装置具体包括:目标代码获取模块802、目标子字符串序列得到模块804、向量序列组成模块806、提取特征得到模块808、融合特征得到模块810和代码检测结果得到模块812,其中:
目标代码获取模块802,用于获取待检测的目标代码。
目标子字符串序列得到模块804,用于对目标代码进行字符串划分,得到目标子字符串序列。
向量序列组成模块806,用于获取目标子字符串序列中各个目标子字符串分别对应的子字符串向量,组成向量序列。
提取特征得到模块808,用于对向量序列进行线性特征提取,得到第一提取特征,以及对向量序列进行非线性特征提取,得到第二提取特征。
融合特征得到模块810,用于对第一提取特征以及第二提取特征进行融合处理,得到融合特征。
代码检测结果得到模块812,用于基于融合特征进行代码检测,得到目标代码对应的代码检测结果。
在一些实施例中,目标子字符串序列得到模块804,还用于从目标代码中获取当前子字符串,将当前子字符串与代码子字符串集合中的代码子字符串进行对比,当对比一致时,将当前子字符串作为目标代码对应的目标子字符串;代码子字符串通过对恶意代码文件进行字符串划分得到;将目标代码对应的目标子字符串按照在目标代码中的位置组成目标子字符串序列。
在一些实施例中,目标子字符串序列得到模块804,还用于从目标代码中获取当前子字符串,将当前子字符串与代码子字符串集合中的代码子字符串进行对比;当对比一致时,从目标代码中获取当前子字符串对应的后向字符,将后向字符加入到当前子字符串中,得到更新后的当前子字符串;当更新后的当前子字符串与代码子字符串集合中的代码子字符串对比不一致时,将更新前的当前子字符串作为目标代码对应的目标子字符串。
在一些实施例中,提取特征得到模块808包括:
第一提取特征得到单元,用于利用第一卷积模型对向量序列进行卷积,得到第一提取特征。
卷积特征得到单元,用于利用第二卷积模型对向量序列进行卷积,得到向量序列对应的卷积特征,第一卷积模型与第二卷积模型是联合训练得到的。
第二提取特征得到单元,用于对卷积特征进行非线性处理,得到第二提取特征。
在一些实施例中,第二提取特征得到单元,还用于对卷积特征的各个初始特征值进行指数运算,得到初始特征值对应的指数运算特征值;根据指数运算特征值得到第二提取特征的特征值,组成第二提取特征。
在一些实施例中,代码检测结果得到模块812包括:
对比单元,用于将融合特征中的特征值与特征阈值进行对比。
屏蔽后的融合特征得到单元,用于屏蔽融合特征中小于特征阈值的特征值,得到屏蔽后的融合特征。
代码检测结果得到单元,用于基于屏蔽后的融合特征进行代码检测,得到目标代码对应的代码检测结果。
在一些实施例中,代码检测结果得到单元,还用于获取预设尺寸的特征提取窗口;获取屏蔽后的融合特征中,特征提取窗口对应的各个特征区域的关键特征值,组成关键特征;基于关键特征进行代码检测,得到目标代码对应的代码检测结果。
在一些实施例中,代码检测结果得到模块812包括:
全连接特征得到单元,用于基于融合特征进行全连接处理,得到全连接特征。
代码定位特征得到单元,用于当基于全连接特征确定目标代码的代码检测结果为存在恶意代码时,对全连接特征进行尺度变换处理,得到代码定位特征。
恶意子字符串确定单元,用于根据代码定位特征的特征值确定目标代码中的恶意子字符串。
在一些实施例中,代码定位特征的特征值用于表示向量序列中各个向量为恶意代码对应的向量的概率,恶意子字符串确定单元,还用于获取代码定位特征中大于第一概率阈值的特征值,作为恶意特征值;获取向量序列中恶意特征值所对应的向量,作为恶意向量;获取恶意向量所对应的字符串,作为目标代码中的恶意子字符串。
在一些实施例中,融合特征得到模块810包括:
融合特征值得到单元,用于将第一提取特征中的特征值,与第二提取特征中的对应位置的特征值进行加权计算,得到融合特征值。
融合特征得到单元,用于将各个融合特征值按照在提取特征的位置进行组合,得到融合特征。
在一些实施例中,目标代码获取模块802,还用于从目标程序中获取预设长度的代码,作为待检测的目标代码。
装置还包括:
返回模块,用于当目标程序中的代码未检测完毕时,则返回从目标程序中获取预设长度的代码,作为待检测的目标代码的步骤,直到目标程序中的代码检测完毕。
程序检测结果得到模块,用于基于各个目标代码对应的代码检测结果得到目标程序对应的程序检测结果。
在一些实施例中,代码检测结果得到模块812还包括:
恶意代码检测概率确定单元,用于基于融合特征确定目标代码对应的恶意代码检测概率。
恶意代码确定单元,用于当恶意代码检测概率大于第二概率阈值时,确定目标代码中存在恶意代码。
关于代码检测装置的具体限定可以参见上文中对于代码检测方法的限定,在此不再赘述。上述代码检测装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一些实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图9所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储代码检测方法中涉及到的数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种代码检测方法。
在一些实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图10所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种代码检测方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图9和10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一些实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一些实施例中,提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一些实施例中,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (15)

1.一种代码检测方法,其特征在于,所述方法包括:
获取待检测的目标代码;
对所述目标代码进行字符串划分,得到目标子字符串序列;
获取所述目标子字符串序列中各个目标子字符串分别对应的子字符串向量,组成向量序列;
对所述向量序列进行线性特征提取,得到第一提取特征,以及对所述向量序列进行非线性特征提取,得到第二提取特征;
对所述第一提取特征以及所述第二提取特征进行融合处理,得到融合特征;
基于所述融合特征进行代码检测,得到所述目标代码对应的代码检测结果。
2.根据权利要求1所述的方法,其特征在于,所述对所述目标代码进行字符串划分,得到目标子字符串序列包括:
从所述目标代码中获取当前子字符串,将当前子字符串与代码子字符串集合中的代码子字符串进行对比,当对比一致时,将当前子字符串作为所述目标代码对应的目标子字符串;所述代码子字符串通过对恶意代码文件进行字符串划分得到;
将所述目标代码对应的目标子字符串按照在所述目标代码中的位置组成所述目标子字符串序列。
3.根据权利要求2所述的方法,其特征在于,所述从所述目标代码中获取当前子字符串,将当前子字符串与代码子字符串集合中的代码子字符串进行对比,当对比一致时,将当前子字符串作为所述目标代码对应的目标子字符串包括:
从所述目标代码中获取当前子字符串,将当前子字符串与所述代码子字符串集合中的代码子字符串进行对比;
当对比一致时,从所述目标代码中获取当前子字符串对应的后向字符,将所述后向字符加入到当前子字符串中,得到更新后的当前子字符串;
当更新后的当前子字符串与所述代码子字符串集合中的代码子字符串对比不一致时,将更新前的当前子字符串作为所述目标代码对应的目标子字符串。
4.根据权利要求1所述的方法,其特征在于,所述对所述向量序列进行线性特征提取,得到第一提取特征,以及对所述向量序列进行非线性特征提取,得到第二提取特征包括:
利用第一卷积模型对所述向量序列进行卷积,得到所述第一提取特征;
利用第二卷积模型对所述向量序列进行卷积,得到所述向量序列对应的卷积特征,对所述卷积特征进行非线性处理,得到所述第二提取特征;
其中,所述第一卷积模型与所述第二卷积模型是联合训练得到的。
5.根据权利要求4所述的方法,其特征在于,所述对所述卷积特征进行非线性处理,得到所述第二提取特征包括:
对所述卷积特征的各个初始特征值进行指数运算,得到所述初始特征值对应的指数运算特征值;
根据所述指数运算特征值得到所述第二提取特征的特征值,组成所述第二提取特征。
6.根据权利要求5所述的方法,其特征在于,所述基于所述融合特征进行代码检测,得到所述目标代码对应的代码检测结果包括:
将所述融合特征中的特征值与特征阈值进行对比;
屏蔽所述融合特征中小于所述特征阈值的特征值,得到屏蔽后的融合特征;
基于所述屏蔽后的融合特征进行代码检测,得到所述目标代码对应的代码检测结果。
7.根据权利要求6所述的方法,其特征在于,所述基于所述屏蔽后的融合特征进行代码检测,得到所述目标代码对应的代码检测结果包括:
获取预设尺寸的特征提取窗口;
获取所述屏蔽后的融合特征中,所述特征提取窗口对应的各个特征区域的关键特征值,组成关键特征;
基于所述关键特征进行代码检测,得到所述目标代码对应的代码检测结果。
8.根据权利要求1所述的方法,其特征在于,所述基于所述融合特征进行代码检测,得到所述目标代码对应的代码检测结果包括:
基于所述融合特征进行全连接处理,得到全连接特征;
当基于所述全连接特征确定所述目标代码的代码检测结果为存在恶意代码时,对所述全连接特征进行尺度变换处理,得到代码定位特征;
根据所述代码定位特征的特征值确定所述目标代码中的恶意子字符串。
9.根据权利要求8所述的方法,其特征在于,所述代码定位特征的特征值用于表示所述向量序列中各个向量为恶意代码对应的向量的概率,所述根据所述代码定位特征的特征值确定所述目标代码中的恶意子字符串包括:
获取所述代码定位特征中大于第一概率阈值的特征值,作为恶意特征值;
获取所述向量序列中所述恶意特征值所对应的向量,作为恶意向量;
获取所述恶意向量所对应的字符串,作为所述目标代码中的恶意子字符串。
10.根据权利要求1所述的方法,其特征在于,所述对所述第一提取特征以及所述第二提取特征进行融合处理,得到融合特征包括:
将所述第一提取特征中的特征值,与所述第二提取特征中的对应位置的特征值进行加权计算,得到融合特征值;
将各个融合特征值按照在提取特征的位置进行组合,得到融合特征。
11.根据权利要求1所述的方法,其特征在于,所述获取待检测的目标代码包括:
从目标程序中获取预设长度的代码,作为待检测的目标代码;
所述方法还包括:
当所述目标程序中的代码未检测完毕时,则返回所述从目标程序中获取预设长度的代码,作为待检测的目标代码的步骤,直到所述目标程序中的代码检测完毕;
基于各个所述目标代码对应的代码检测结果得到所述目标程序对应的程序检测结果。
12.根据权利要求1所述的方法,其特征在于,所述基于所述融合特征进行代码检测,得到所述目标代码对应的代码检测结果包括:
基于所述融合特征确定所述目标代码对应的恶意代码检测概率;
当所述恶意代码检测概率大于第二概率阈值时,确定所述目标代码中存在恶意代码。
13.一种代码检测装置,其特征在于,所述装置包括:
目标代码获取模块,用于获取待检测的目标代码;
目标子字符串序列得到模块,用于对所述目标代码进行字符串划分,得到目标子字符串序列;
向量序列组成模块,用于获取所述目标子字符串序列中各个目标子字符串分别对应的子字符串向量,组成向量序列;
提取特征得到模块,用于对所述向量序列进行线性特征提取,得到第一提取特征,以及对所述向量序列进行非线性特征提取,得到第二提取特征;
融合特征得到模块,用于对所述第一提取特征以及所述第二提取特征进行融合处理,得到融合特征;
代码检测结果得到模块,用于基于所述融合特征进行代码检测,得到所述目标代码对应的代码检测结果。
14.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至12中任一项所述的方法的步骤。
15.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至12中任一项所述的方法的步骤。
CN202110069078.9A 2021-01-19 2021-01-19 代码检测方法、装置、计算机设备和存储介质 Pending CN114817913A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110069078.9A CN114817913A (zh) 2021-01-19 2021-01-19 代码检测方法、装置、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110069078.9A CN114817913A (zh) 2021-01-19 2021-01-19 代码检测方法、装置、计算机设备和存储介质

Publications (1)

Publication Number Publication Date
CN114817913A true CN114817913A (zh) 2022-07-29

Family

ID=82525169

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110069078.9A Pending CN114817913A (zh) 2021-01-19 2021-01-19 代码检测方法、装置、计算机设备和存储介质

Country Status (1)

Country Link
CN (1) CN114817913A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116089951A (zh) * 2023-02-24 2023-05-09 山东云天安全技术有限公司 一种恶意代码检测方法、可读存储介质及电子设备
WO2024051196A1 (zh) * 2022-09-09 2024-03-14 上海派拉软件股份有限公司 恶意代码检测方法、装置、电子设备及存储介质

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024051196A1 (zh) * 2022-09-09 2024-03-14 上海派拉软件股份有限公司 恶意代码检测方法、装置、电子设备及存储介质
CN116089951A (zh) * 2023-02-24 2023-05-09 山东云天安全技术有限公司 一种恶意代码检测方法、可读存储介质及电子设备
CN116089951B (zh) * 2023-02-24 2023-07-14 山东云天安全技术有限公司 一种恶意代码检测方法、可读存储介质及电子设备

Similar Documents

Publication Publication Date Title
EP3654217B1 (en) Malware detection
US11159556B2 (en) Predicting vulnerabilities affecting assets of an enterprise system
CN109246064B (zh) 安全访问控制、网络访问规则的生成方法、装置及设备
Tran et al. An approach for host-based intrusion detection system design using convolutional neural network
US9565209B1 (en) Detecting electronic messaging threats by using metric trees and similarity hashes
CN108520180B (zh) 一种基于多维度的固件Web漏洞检测方法及系统
CN113315742B (zh) 攻击行为检测方法、装置及攻击检测设备
CN114817913A (zh) 代码检测方法、装置、计算机设备和存储介质
CN111259282A (zh) Url去重方法、装置、电子设备及计算机可读存储介质
CN112148305A (zh) 一种应用检测方法、装置、计算机设备和可读存储介质
CN112651024A (zh) 用于恶意代码检测的方法及装置、设备
Bird et al. Actions speak louder than words: Semi-supervised learning for browser fingerprinting detection
Ye et al. Android malware detection technology based on lightweight convolutional neural networks
CN111191235B (zh) 可疑文件分析方法、装置和计算机可读存储介质
Khan et al. Op2Vec: An Opcode Embedding Technique and Dataset Design for End‐to‐End Detection of Android Malware
CN117240572A (zh) 基于网络威胁知识图谱的意图预测方法、装置及介质
US11916875B2 (en) System and method for multi-layered rule learning in URL filtering
JP7031438B2 (ja) 情報処理装置、制御方法、及びプログラム
CN111488574A (zh) 恶意软件分类方法、系统、计算机设备和存储介质
CN112347477A (zh) 家族变种恶意文件挖掘方法和装置
CN106487771B (zh) 网络行为的获取方法及装置
WO2022182751A1 (en) N-dimensional model techniques and architectures for data protection
CN113254672A (zh) 异常账号的识别方法、系统、设备及可读存储介质
CN114257565A (zh) 挖掘潜在威胁域名的方法、系统和服务器
CN113674083A (zh) 互联网金融平台信用风险监测方法、装置及计算机系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination