CN114912112A - 脚本检测方法及装置 - Google Patents
脚本检测方法及装置 Download PDFInfo
- Publication number
- CN114912112A CN114912112A CN202210445667.7A CN202210445667A CN114912112A CN 114912112 A CN114912112 A CN 114912112A CN 202210445667 A CN202210445667 A CN 202210445667A CN 114912112 A CN114912112 A CN 114912112A
- Authority
- CN
- China
- Prior art keywords
- script
- system function
- data
- detection
- confusion
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Virology (AREA)
- Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例提供了一种脚本检测方法及装置,包括:获取脚本和模拟标记数据;为模拟标记数据添加对应的混淆变量参数,混淆变量参数用于统计调用模拟标记数据的系统函数的数量;在隔离环境中根据模拟标记数据运行脚本,并在运行结束后获取混淆变量参数的返回值;在混淆变量参数的返回值大于或等于预设阈值的情况下,确定脚本为危险脚本。本申请通过动态运行检测的方式,找出脚本中用文本静态识别所遗漏的危险代码,并且在检测过程中可以基于混淆变量参数的返回值大于或等于预设阈值的情况,确定脚本为危险脚本,上述过程中隔离环境可以通过对模拟标记数据添加的混淆变量参数的返回值的分析,进一步降低了危险代码的漏检几率。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种脚本检测方法及装置、电子设备、机器可读介质。
背景技术
脚本是一种以文件形式存在的代码执行环境,针对网页脚本,主要用于网站管理、服务器管理等操作,只需上传一个代码文件,通过网址访问,便可进行很多日常操作,极大地方便了网站和服务器的管理。
相关技术中,由于脚本的开放性,小部分人会将网页脚本改造后作为网站服务端的后门工具使用,达到恶意控制网站服务器的目的,目前的检测手段为文本静态检测,通过对网页脚本的代码进行语法检测,来识别网页脚本的代码是否符合危险脚本的语法特性,从而判断网页脚本是否为危险脚本。
但是,发明人经过研究发现,目前的方案中,文本静态识别仅能找出网页脚本中较为明显的危险代码片段,对于一些熟悉网页脚本运行过程的人来说,可以将危险代码隐藏或混淆在网页脚本中,使得这些危险代码逃过文本静态识别的检测,从而造成危险脚本漏检的问题发生。
发明内容
本申请实施例提供了一种脚本检测方法,以解决相关技术中危险脚本漏检的问题。
相应的,本申请实施例还提供了一种脚本检测装置、电子设备以及存储介质,用以保证上述方法的实现及应用。
为了解决上述问题,本申请实施例公开了一种脚本检测方法,所述方法包括:
获取脚本和模拟标记数据;
为所述模拟标记数据添加对应的混淆变量参数,所述混淆变量参数用于统计调用所述模拟标记数据的系统函数的数量;
在隔离环境中根据所述模拟标记数据运行所述脚本,并在运行结束后获取所述混淆变量参数的返回值;
在所述混淆变量参数的返回值大于或等于预设阈值的情况下,确定所述脚本为危险脚本。
本申请实施例公开了一种脚本检测装置,所述装置包括:
脚本获取模块,用于获取脚本和模拟标记数据;
添加模块,用于为所述模拟标记数据添加对应的混淆变量参数,所述混淆变量参数用于统计调用所述模拟标记数据的系统函数的数量;
运行模块,用于在隔离环境中根据所述模拟标记数据运行所述脚本,并在运行结束后获取所述混淆变量参数的返回值;
识别模块,用于在所述混淆变量参数的返回值大于或等于预设阈值的情况下,确定所述脚本为危险脚本。
本申请实施例还公开了一种电子设备,包括:处理器;和存储器,其上存储有可执行代码,当所述可执行代码被执行时,使得所述处理器执行如本申请实施例中一个或多个所述的方法。
本申请实施例还公开了一个或多个机器可读介质,其上存储有可执行代码,当所述可执行代码被执行时,使得处理器执行如本申请实施例中一个或多个所述的方法。
与相关技术相比,本申请实施例包括以下优点:
本申请实施例中,可以在隔离环境中,通过建立模拟标记数据作为脚本的输入数据,以运行脚本的方式模拟实现动态的污点检测,本申请实施例通过动态运行检测的方式,找出脚本中用文本静态识别所遗漏的危险代码,并且,在检测过程中,可以为模拟标记数据添加对应的混淆变量参数,混淆变量参数通过在脚本运行过程中统计调用模拟标记数据的系统函数的数量,并在运行结束后基于混淆变量参数的返回值大于或等于预设阈值的情况,确定脚本为危险脚本,上述过程中隔离环境可以通过对模拟标记数据添加的混淆变量参数的返回值的分析,以较低成本实现准确的危险脚本识别,进一步降低了危险代码的漏检几率。
附图说明
图1是本申请实施例的一种系统架构图;
图2是本申请实施例的一种在云端部署脚本的检测的实现示意图;
图3是本申请实施例的一种在客户端部署脚本的检测的实现示意图;
图4是本申请实施例的一种在网购运营平台部署脚本的检测的实现示意图;
图5是本申请实施例的一种脚本检测方法的步骤流程图;
图6是本申请实施例的一种脚本检测方法的具体步骤流程图;
图7是本申请实施例的一种脚本检测装置的框图;
图8是本申请一实施例提供的装置的结构示意图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
为使本领域技术人员更好地理解本申请,以下对本申请涉及的概念进行说明:
网页脚本:也称为webshell,是以动态服务器页面(asp,Active Server Pages)、超文本预处理器(PHP,Hypertext Preprocessor)、JAVA服务器页面(jsp,JavaServerPages)或者公共网关接口(CGI,Common Gateway Interface)等网页文件形式存在的一种代码执行环境,主要用于网站管理、服务器管理、权限管理等操作。网页脚本的使用方法简单,只需上传一个代码文件,通过网址访问,便可进行很多管理操作。正因如此,也有小部分人将代码修改后当作后门程序使用,以达到控制网站服务器的目的。
污点检测:一种危险脚本的检测方式,利用的原理是任何变量能够直接被外部用户修改,则造成了潜在的安全危险,而变量被函数赋值给第二变量,那么第二变量也是可疑的。基于这种原理,污点检测可以将来自于外部的输入数据标记为“被污染”,由此产生的一系列算术和逻辑操作新生成的数据也会继承源数据的“被污染”属性,这样一旦检测到污点数据被危险函数调用都会被视为非法操作。
隔离环境:可以为动态沙箱环境,是一种按照安全策略限制脚本行为的执行环境,具体可以将设备上的一个安全区域作为隔离环境,将脚本运行在隔离环境中,对脚本的进程、文件和网络等行为进行有效控制,本申请实施例可以在隔离环境中模拟实现对脚本的污点检测,从而防止危险脚本逃逸对设备造成安全威胁。
模拟标记数据:即污点检测中的“被污染”数据,也称为污点数据,在隔离环境中实现污点检测时,污点数据是一种模拟且标记的非真实环境数据。
混淆变量参数:针对模拟标记数据设定的一个属性变量值,用于统计调用模拟标记数据进行使用的系统函数的数量,如模拟标记数据在脚本中依次经过n个系统函数的处理,则脚本运行结束后,模拟标记数据对应的混淆变量参数的返回值为n。
系统函数:可以在运行环境中实现以及运行的函数,用于实现一定的功能,不同编译语言具有各自对应的常用系统函数,系统函数具体可以从与编译语言对应的函数库中获取。
分支判断语句:代码中用于进行逻辑分支判断的语句,如if-eles语句、if语句等。
分支代码片段:与分支判断语句关联的代码判断,用于在分支判断语句的逻辑分支判断条件成立的情况下进行执行,在分支判断语句的逻辑分支判断条件不成立的情况下,则不执行。
语法树文档:脚本代码的语法结构的一种树状抽象表示,树上的每个节点都表示脚本代码中代码片段的语法结构,通过对语法树文档节点的一系列操作,可以高效且精准地自动化修改脚本代码。其中,语法树文档可以理解为抽象语法树(AST,Abstract SyntaxTree)。
本申请实施例中,脚本检测方法可应用于对脚本(如网页脚本)的检测过程,以确定脚本中的危险脚本,脚本检测方式可以部署在公有云服务端、私有云服务端以实现后端脚本检测,也可以部署在客户端侧,以实现前端脚本检测。另外,所检测的脚本也可以为其他类型脚本,本申请实施例对此不作限定。
具体的,由于脚本的运行依赖外部数据的输入,本申请实施例可以在隔离环境(动态沙箱)中,通过模拟污点检测过程来识别危险脚本,通过建立模拟标记数据作为脚本的输入数据,基于污点检测的原理可知,在脚本运行过程中,若脚本中的一些特定系统函数使用了被标记为“污点”的模拟标记数据,则认为该脚本存在恶意获取被保护数据的风险,即通过确定脚本运行日志中存在特定系统函数使用模拟标记数据的记录,从而将脚本判定为危险脚本。
相较于相关技术中以静态检测方式识别危险脚本的方式,本申请实施例在隔离环境中通过模拟污点检测过程来识别危险脚本,是在脚本的动态运行过程中发生危险代码片段的过程,可以识别到很多静态检测无法识别的危险代码,如,某一系统函数为常规函数,其在脚本中的功能为在脚本运行时恶意获取用户数据,由于其为常规函数,则静态检测会判断其安全,但在模拟污点检测时,则可以根据其在脚本运行时恶意获取用户数据的行为,将其判定为恶意行为。另外,整个污点检测是在隔离环境中模拟实现的,不会对外部环境造成影响,避免危险脚本逃逸对设备造成安全威胁。
进一步的,随着对抗检测手段的不断发展,也衍伸出各种对抗污点检测的手段,主要的对抗手段包括:
对抗手段1、由于模拟污点检测是一种识别特定系统函数对模拟标记数据进行调用行为的过程,则可以存在一个特定系统函数集合,隔离环境需实现集合中包括的特定系统函数,具体为隔离环境需获得特定系统函数库,并将其中函数在隔离环境中注册使用。基于这种特性,外部人员会在脚本中采用一些很生僻的系统函数或很难以实现的系统函数实现恶意意图,如在代码中引入不常见的系统函数,以及基于反射机制实现的复杂函数调用链,并对函数调用链中的各个系统函数进行多层变形嵌套,隔离环境若想实现污点检测,需精确模拟并注册实现所涉及的各个系统函数,而隔离环境中存在的都是一些基础系统函数和常用系统函数,对于外部人员引入的上述系统函数,若在隔离环境中进行注册实现,所需成本会非常巨大,从而使得污点检测陷入被动的境地。另外,外部人员还可以对系统函数的参数(方法参数、对象参数等)进行加密混淆,进一步提升隔离环境实现系统函数的难度。
对抗手段2、由于存在一些外部人员熟知脚本和模拟污点检测的执行流程,也知晓脚本的外部输入数据,则外部人员可以利用这些特性来构建具有分支对抗能力的脚本,具体为在脚本代码中加入一些调用外部输入数据进行逻辑判断的分支判断语句,并将危险代码埋藏在分支判断语句关联的分支代码片段中,在脚本运行过程中,分支判断语句的逻辑判断条件成立才会执行后续的分支代码片段,若不成立则跳过后续的分支代码片段,由于逻辑判断条件依赖外部输入数据进行判断,而模拟污点检测中的外部输入数据又是模拟的模拟标记数据,且模拟污点检测难以知晓和模拟正确的外部输入数据,这就导致模拟污点检测中分支判断语句的逻辑判断条件难以成立,使得后续的分支代码片段不被执行,分支代码片段中埋藏的危险代码也就跳过了检测,该脚本在正常运行时,正确的外部输入数据输入后分支判断语句的逻辑判断条件成立,执行后续的分支代码片段过程中危险代码即实现了恶意功能。
例如,一个分支判断语句和关联的分支代码片段:
假设分支代码片段A中埋藏了危险代码片段,分支判断语句的意思是:如果获取的外部输入数据为“1234”则执行分支代码片段A,则由于模拟污点检测过程中难以模拟正确的外部输入数据“1234”,使得检测过程中分支判断语句的逻辑判断条件不成立,其关联的分支代码片段A不被执行,分支代码片段A中的危险代码片段漏过检测。
针对上述对抗手段1,本申请实施例可以跳出注重于在隔离环境中实现尽可能多的系统函数的被动境地,而是重点关注脚本中调用外部输入数据进行使用的系统函数的数量,该数量越大,说明脚本中存在以非正常手段对系统函数进行复杂化的情况,脚本恶意获取用户数据的概率就越大,脚本为危险脚本的概率就越大,因此,本申请实施例可以为模拟标记数据添加对应的混淆变量参数,混淆变量参数是一个变量值,用于在脚本运行过程中统计调用模拟标记数据的系统函数的数量;并在运行结束后基于混淆变量参数的返回值大于或等于预设阈值(预设阈值可以根据实际需求赋值)的情况,确定脚本为危险脚本,上述过程中,对于外部人员恶意引入的生僻系统函数和复杂函数调用链,隔离环境可以不用花费大量成本对这些系统函数进行实现,而是通过对模拟标记数据添加的混淆变量参数的返回值的分析,以较低成本实现准确的危险脚本识别。
针对上述对抗手段2,本申请实施例可以针对性的检测脚本中调用模拟标记数据进行逻辑判断的分支判断语句,并在隔离环境中运行脚本的过程中强行执行分支代码片段不跳过,以检测分支代码片段中是否存在预设的注册系统函数对模拟标记数据进行调用的危险行为,使得对抗手段1难以跳出检测逻辑,使得检测手段可以覆盖脚本的所有分支。
另外,本申请实施例的隔离环境中可以内置实现有常用系统函数和基础系统函数,这些函数统称为注册系统函数,针对外部人员对常用系统函数和基础系统函数的参数进行加密混淆的情况,本申请实施例可以在隔离环境中内置各种解密工具,并在获得脚本后,先利用解密工具对加密字段进行解密,在将加密字段还原为明文后,即可知晓之前加密的系统函数是否为隔离环境已实现的注册系统函数(常用系统函数或基础系统函数),若是则进行后续检测脚本中是否存在预设的注册系统函数对所述模拟标记数据进行调用的行为,若是则确定脚本为危险脚本。针对外部人员对一些生僻系统函数和复杂函数调用链的参数进行加密混淆的情况,本申请实施例可以不关注函数本身的解密,隔离环境可以不用花费大量成本对这些系统函数进行实现,而是基于混淆变量参数实现准确的危险脚本识别。
参照图1,其示出了本申请实施例提供的一种系统架构图,包括:检测服务端和脚本提供端,检测服务端包括:语法树文档模块、脚本代码优化模块、模拟污点检测模块、检测日志模块、注册模块、函数管理模块、策略管理模块、隔离环境配置模块。
其中,语法树文档模块可以将获得的脚本转换为语法树文档,使得后续可以基于语法树文档实现对脚本的代码的高效优化,以及对脚本的代码的模拟污点检测。
脚本代码优化模块则用于基于脚本的语法树文档,对脚本的代码进行剪枝优化,具体为将脚本中与模拟污点检测不相关的代码删除,使得后续模拟污点检测更加轻量化,降低计算量。
模拟污点检测模块则用于在隔离环境中,对脚本进行污点检测,具体可以通过遍历脚本的语法树文档的各个节点,来识别脚本中是否存在预设的注册系统函数对模拟标记数据进行调用的危险行为,另外模拟污点检测模块也可以实现上述基于混淆变量参数的污点检测手段。
检测日志模块则可以根据模拟污点检测模块的检测结果,输出对脚本的检测结果日志,便于客户端通过检测结果日志快速、直观的了解脚本的检测结果,检测结果日志中包括但不限于:脚本是否为危险脚本的结论、脚本为何种类型的危险脚本、对脚本中加密混淆的函数字段还原后的明文结果。
函数管理模块则用于在隔离环境中实现系统函数,一般场景下,函数管理模块可以在隔离环境中,将特定的系统函数(如,常用系统函数和基础系统函数)注册为注册系统函数,后续模拟污点检测时可以基于注册系统函数实现危险脚本的判断。
策略管理模块可以基于函数管理模块注册的注册系统函数,构建污点检测策略,如,定义注册系统函数中哪些注册系统函数在具有对模拟标记数据进行调用的行为时,可以确定脚本为危险脚本。
注册模块可以通过提供对外接口,获取外部设备发送的注册指令,注册指令可以携带外部设备想要在隔离环境中实现的系统函数,注册模块可以通过函数管理模块,将注册指令携带的系统函数注册为注册系统函数,并在策略管理模块中构建基于这些系统函数的污点检测策略。例如,注册模块可以通过Lua(一种轻量化脚本语言)脚本实现外挂式可运营的注册功能。
隔离环境配置模块用于对隔离环境的相关参数进行自定义配置,如配置具体的隔离策略、隔离环境的网络参数等。
针对脚本的检测需求,可以实现的几种具体场景如下:
在一种实现方式中,参照图2,其示出了本申请实施例提供的一种在云端部署脚本的检测的实现示意图,包括:云服务端和检测服务端。其中,云服务端具体可以为私有云服务端或公有云服务端,云服务端可以向检测服务端发送待检测的脚本,检测服务端可以基于图1的架构,对脚本实现语法树文档的转换、代码剪枝优化、模拟污点检测、检测结果日志输出等操作,最后将脚本的检测结果日志反馈给云服务端,以供云服务端根据检测结果日志的内容,对脚本进行安全管理。模拟污点检测具体可以包括识别脚本中是否存在预设的注册系统函数对模拟标记数据进行调用的危险行为的方式,以及基于混淆变量参数的污点检测手段。需要说明的是,在实际条件允许的情况下,检测服务端中的相关功能也可以部署在云服务端本地进行实现,本申请实施例对此不作限定。通过图2的架构,实现了基于云服务的后端脚本检测方式,整体检测过程实现在隔离环境中,检测安全性具有保障,且基于模拟污点检测的手段具有低成本、高精度的检测效果。
在一种实现方式中,参照图3,其示出了本申请实施例提供的一种在客户端部署脚本的检测的实现示意图,包括:客户端和检测服务端。其中,客户端可以向检测服务端发送待检测的脚本,检测服务端可以基于图1的架构,对脚本实现语法树文档的转换、代码剪枝优化、模拟污点检测、检测结果日志输出等操作,最后将脚本的检测结果日志反馈给客户端,以供客户端根据检测结果日志的内容,对脚本进行安全管理。模拟污点检测具体可以包括识别脚本中是否存在预设的注册系统函数对模拟标记数据进行调用的危险行为的方式,以及基于混淆变量参数的污点检测手段。需要说明的是,在实际条件允许的情况下,检测服务端中的相关功能也可以部署在客户端本地进行实现,本申请实施例对此不作限定。通过图3的架构,实现了基于客户端的前端脚本检测方式,整体检测过程实现在隔离环境中,检测安全性具有保障,且基于模拟污点检测的手段具有低成本、高精度的检测效果。
在另一种实现方式中,参照图4,其示出了本申请实施例提供的一种在网购运营平台部署网页脚本的检测的实现示意图,包括:网购运营平台Web服务端和检测服务端。其中,网购运营平台Web服务端可以实现对网购运营平台的网页管理,运营人员可以基于网购运营平台Web服务端上部署的网页脚本,实现对网购运营平台Web服务端的便捷管理,在运营人员日常使用网页脚本的过程中,基于安全性考虑,需要对网页脚本进行安全检测,则运营人员可以通过网购运营平台Web服务端向检测服务端发送待检测的网页脚本。
检测服务端可以基于图1的架构,对网页脚本实现语法树文档的转换、代码剪枝优化、模拟污点检测、检测结果日志输出等操作,最后将网页脚本的检测结果日志反馈给网购运营平台Web服务端,以供网购运营平台Web服务端的运营人员根据检测结果日志的内容,对网页脚本进行安全管理。模拟污点检测具体可以包括识别脚本中是否存在预设的注册系统函数对模拟标记数据进行调用的危险行为的方式,以及基于混淆变量参数的污点检测手段。需要说明的是,在实际条件允许的情况下,检测服务端中的相关功能也可以部署在网购运营平台Web服务端本地进行实现,本申请实施例对此不作限定。通过4的架构,实现了基于网购运营平台的后端脚本检测方式,整体检测过程实现在隔离环境中,检测安全性具有保障,且基于模拟污点检测的手段具有低成本、高精度的检测效果。
需要说明的是,本申请实施例中获取脚本、模拟标记数据以及其他使用到的信息、信号或数据的过程,都是在遵照所在地国家相应的数据保护法规政策的前提下,并获得由相应装置所有者给予授权的情况下进行的。
本申请实施例中,可以在隔离环境中,通过建立模拟标记数据作为脚本的输入数据,以运行脚本的方式模拟实现动态的污点检测,本申请实施例通过动态运行检测的方式,找出脚本中用文本静态识别所遗漏的危险代码,并且,在检测过程中,可以为模拟标记数据添加对应的混淆变量参数,混淆变量参数通过在脚本运行过程中统计调用模拟标记数据的系统函数的数量,并在运行结束后基于混淆变量参数的返回值大于或等于预设阈值的情况,确定脚本为危险脚本,上述过程中隔离环境可以通过对模拟标记数据添加的混淆变量参数的返回值的分析,以较低成本实现准确的危险脚本识别,进一步降低了危险代码的漏检几率。
参照图5,其示出了本申请实施例提供的一种脚本检测方法的步骤流程图,包括:
步骤101,获取脚本和模拟标记数据。
在本申请实施例中,脚本可以为网页脚本,网页脚本也称为webshell,网页脚本的格式包括但不限于asp、PHP、jsp、CGI,网页脚本主要用于网站管理、服务器管理、权限管理等操作。网页脚本的使用方法简单,只需上传一个代码文件,通过网址访问,便可进行很多管理操作。正因如此,也有小部分人将代码修改后当作后门程序使用,以达到控制网站服务器的目的。
模拟标记数据则是在污点检测中模拟的“被污染”数据,也称为污点数据,在隔离环境中实现污点检测时,污点数据是一种模拟且标记的非真实环境数据。
步骤102,为所述模拟标记数据添加对应的混淆变量参数,所述混淆变量参数用于统计调用所述模拟标记数据的系统函数的数量。
在实际应用中,由于模拟污点检测是一种识别特定系统函数对模拟标记数据进行调用行为的过程,则可以存在一个特定系统函数集合,隔离环境需实现集合中包括的特定系统函数,具体为隔离环境需获得特定系统函数库,并将其中函数在隔离环境中注册使用。基于这种特性,外部人员会在脚本中采用一些很生僻的系统函数或很难以实现的系统函数,如在代码中引入不常见的系统函数,以及基于反射机制实现的复杂函数调用链,并对函数调用链中的各个系统函数进行多层变形嵌套,隔离环境若想实现污点检测,需精确模拟并注册实现所涉及的各个系统函数,而隔离环境中存在的都是一些基础系统函数和常用系统函数,对于外部人员引入的上述系统函数,若在隔离环境中进行注册实现,所需成本会非常巨大,从而使得污点检测陷入被动的境地。
为了解决上述问题,本申请实施例可以跳出注重于在隔离环境中实现尽可能多的系统函数的被动境地,而是重点关注脚本中调用外部输入数据进行使用的系统函数的数量,该数量越大,说明脚本中存在以非正常手段对系统函数进行复杂化的情况,脚本恶意获取用户数据的概率就越大,脚本为危险脚本的概率就越大,因此,本申请实施例可以为模拟标记数据添加对应的混淆变量参数,混淆变量参数是一个变量值,用于在脚本运行过程中统计调用模拟标记数据的系统函数的数量。
步骤103,在隔离环境中根据所述模拟标记数据运行所述脚本,并在运行结束后获取所述混淆变量参数的返回值。
在该步骤中,隔离环境中,基于模拟标记数据运行脚本的过程中,模拟标记数据的混淆变量参数的值会随着模拟标记数据被系统函数调用使用的行为而改变,直至脚本运行结束后,得到混淆变量参数的返回值,混淆变量参数的返回值的大小反映了脚本为危险脚本的概率的大小。
步骤104,在所述混淆变量参数的返回值大于或等于预设阈值的情况下,确定所述脚本为危险脚本。
在本申请实施例中,在运行结束后基于混淆变量参数的返回值大于或等于预设阈值(预设阈值可以根据实际需求赋值)的情况,确定脚本为危险脚本,上述过程中,对于外部人员恶意引入的生僻系统函数和复杂函数调用链,隔离环境可以不用花费大量成本对这些系统函数进行实现,而是通过对模拟标记数据添加的混淆变量参数的返回值的分析,以较低成本实现准确的危险脚本识别。
例如,假设预设阈值设定为5,若一个脚本运行结束的过程中,模拟标记数据被8个系统函数依次调用使用,则脚本运行结束后,模拟标记数据的混淆变量参数的返回值为8,由于混淆变量参数大于预设阈值,则可以判断该脚本为危险脚本。
综上所述,本申请实施例中,可以在隔离环境中,通过建立模拟标记数据作为脚本的输入数据,以运行脚本的方式模拟实现动态的污点检测,本申请实施例通过动态运行检测的方式,找出脚本中用文本静态识别所遗漏的危险代码,并且,在检测过程中,可以为模拟标记数据添加对应的混淆变量参数,混淆变量参数通过在脚本运行过程中统计调用模拟标记数据的系统函数的数量,并在运行结束后基于混淆变量参数的返回值大于或等于预设阈值的情况,确定脚本为危险脚本,上述过程中隔离环境可以通过对模拟标记数据添加的混淆变量参数的返回值的分析,以较低成本实现准确的危险脚本识别,进一步降低了危险代码的漏检几率。
参照图6,其示出了本申请实施例提供的一种脚本检测方法的具体步骤流程图,包括:
步骤201,获取脚本和模拟标记数据。
该步骤具体可以参照上述步骤101的相关描述,此处不作赘述。
步骤202,为所述模拟标记数据添加对应的混淆变量参数,所述混淆变量参数用于统计调用所述模拟标记数据的系统函数的数量。
该步骤具体可以参照上述步骤102的相关描述,此处不作赘述。
可选的,在一种实现方式中,步骤202具体可以包括:
子步骤2021、在识别到所述脚本中存在未注册系统函数的情况下,为所述模拟标记数据添加对应的混淆变量参数,所述未注册系统函数为所述隔离环境中未定义使用的系统函数。
在本申请实施例中,子步骤2021在图6中未示出,由于模拟污点检测是一种识别特定系统函数对模拟标记数据进行调用行为的过程,则隔离环境中可以存在一个注册系统函数集合,该集合中的函数数量是有限的,实际应用中通常包含一些常用系统函数和基础系统函数,这就使得外部人员会利用这种特性,在脚本中采用一些很生僻的系统函数或很难以实现的系统函数恶意意图,这些函数都是隔离环境的注册系统函数集合中未包含的函数,即未注册系统函数,隔离环境若想实现对这些函数的污点检测,需精确模拟并注册实现所涉及的各个系统函数,所需实现成本会非常巨大,从而使得污点检测陷入被动的境地。
为了解决上述问题,本申请实施例可以在识别到所述脚本中存在未注册系统函数的情况下,为模拟标记数据添加对应的混淆变量参数,混淆变量参数是一个变量值,用于在脚本运行过程中统计调用模拟标记数据的系统函数的数量;并在运行结束后基于混淆变量参数的返回值大于或等于预设阈值的情况,确定脚本为危险脚本,上述过程中,对于外部人员恶意引入的生僻系统函数,隔离环境可以不用花费大量成本对这些系统函数进行实现,节省了检测成本。
可选的,在另一种实现方式中,步骤202具体可以包括:
子步骤2022、在识别到所述脚本的系统函数中具有加密混淆字段,且将所述加密混淆字段解密失败的情况下,为所述模拟标记数据添加对应的混淆变量参数。
子步骤2022在图6中未示出,在实际应用中,外部人员还可以对系统函数的参数(方法参数、对象参数等)进行加密混淆,进一步提升隔离环境实现系统函数的难度。有时外部人员会采用很复杂、生僻、难以实现的加密方式进行加密,若隔离环境想要针对性解密,需在隔离环境实现对应的解密方式,这会使得实现成本巨大,为了解决这种问题,本申请实施例可以在识别到所述脚本的系统函数中具有加密混淆字段,且将所述加密混淆字段解密失败的情况下,为模拟标记数据添加对应的混淆变量参数,基于混淆变量参数进行危险脚本的检测,隔离环境可以不用花费大量成本对复杂解密方式进行实现,节省了检测成本。
步骤203,在所述脚本的代码中,若识别到调用所述模拟标记数据进行逻辑判断的分支判断语句,则获取与所述分支判断语句关联的分支代码片段。
步骤204,在所述隔离环境中运行所述脚本的过程中,执行所述分支代码片段。
步骤205,在检测到所述分支代码片段中存在预设的注册系统函数对所述模拟标记数据进行调用的情况下,确定所述脚本为危险脚本,所述注册系统函数为已在所述隔离环境中定义使用的系统函数。
针对步骤203-205,在实际应用中,由于存在一些外部人员熟知脚本和模拟污点检测的执行流程,也知晓脚本的外部输入数据,则外部人员可以利用这些特性来构建具有分支对抗能力的脚本,具体为在脚本代码中加入一些调用外部输入数据进行逻辑判断的分支判断语句,并将危险代码埋藏在分支判断语句关联的分支代码片段中,在脚本运行过程中,分支判断语句的逻辑判断条件成立才会执行后续的分支代码片段,若不成立则跳过后续的分支代码片段,由于逻辑判断条件依赖外部输入数据进行判断,而模拟污点检测中的外部输入数据又是模拟的模拟标记数据,且模拟污点检测难以知晓和模拟正确的外部输入数据,这就导致模拟污点检测中分支判断语句的逻辑判断条件难以成立,使得后续的分支代码片段不被执行,分支代码片段中埋藏的危险代码也就跳过了检测。
为了解决上述问题,本申请实施例可以针对性的检测脚本中调用模拟标记数据进行逻辑判断的分支判断语句,并在隔离环境中运行脚本的过程中强行执行分支代码片段不跳过,以检测分支代码片段中是否存在预设的注册系统函数对模拟标记数据进行调用的危险行为,使得所述对抗手段难以跳出检测逻辑,使得检测手段可以覆盖脚本的所有分支。
例如,脚本中的一个分支判断语句和关联的分支代码片段:
假设分支代码片段A中埋藏了危险代码片段,分支判断语句的意思是:如果获取的外部输入数据为“1234”则执行分支代码片段A。
在对脚本进行污点检测时,如检测到上述调用模拟标记数据进行逻辑判断的分支判断语句,则可以不关注分支判断语句中的逻辑判断条件是否成立,而是在隔离环境中运行脚本的过程中强行执行分支代码片段A不跳过,以检测分支代码片段A中是否存在预设的注册系统函数对模拟标记数据进行调用的危险行为。
步骤206,在脚本运行结束后获取所述混淆变量参数的返回值,在所述混淆变量参数的返回值大于或等于预设阈值的情况下,确定所述脚本为危险脚本。
该步骤可以参照上述步骤104,此处不再赘述。
可选的,在步骤204之前,还包括:
步骤207,在识别到所述分支代码片段的系统函数中具有加密混淆字段的情况下,通过预设的解密工具,将所述加密混淆字段解密还原为明文。
在本申请实施例中,步骤207在图6中未示出,隔离环境中可以内置各种解密工具,若识别到分支代码片段的系统函数中具有加密混淆字段,则可以按照隔离环境中的内置解密方式对加密混淆字段进行解密,以将其解密为明文。内置的解密工具包括但不限于哈希解密、Base64(一种二进制加解密手段)、信息摘要算法(MD5,Message-Digest Algorithm)等。
可选的,在步骤204之后,还包括:
步骤208,步骤208在图6中未示出,在检测到所述脚本中存在预设的注册系统函数对所述模拟标记数据进行调用的情况下,确定所述脚本为危险脚本,所述注册系统函数为已在所述隔离环境中定义使用的系统函数。
在本申请实施例中,模拟污点检测的核心思想是任何变量能够直接被外部用户修改,则造成了潜在的安全危险,而变量被函数赋值给第二变量,那么第二变量也是可疑的。基于这种原理,模拟污点检测可以将模拟标记数据标记为“被污染”,由此产生的一系列算术和逻辑操作新生成的数据也会继承源数据的“被污染”属性,这样一旦检测到模拟标记数据被危险函数调用都会被视为非法操作。
则在脚本运行的过程中,若检测到脚本中存在预设的注册系统函数对所述模拟标记数据进行调用的情况下,确定所述脚本为危险脚本,通过这种动态运行检测的方式,可以找出脚本中用文本静态识别所遗漏的危险代码。
步骤209,在识别到所述脚本的系统函数中具有加密混淆字段的情况下,通过预设的解密工具对所述加密混淆字段进行解密。
步骤210,在将所述加密混淆字段解密成功的情况下,进入步骤204。
在本申请实施例中,步骤209-210在图6中未示出,针对步骤209-210,由于外部人员可以对系统函数的参数(方法参数、对象参数等)进行加密混淆,进一步提升隔离环境实现系统函数的难度。则在模拟污点检测的过程中识别到脚本的系统函数中具有加密混淆字段的情况下,可以通过预设的解密工具对所述加密混淆字段进行解密,解密成功后,脚本中被混淆的系统函数即可以明文展示,使得后续可以判断这些系统函数是否为隔离环境已实现的注册系统函数,若是则进行后续检测脚本中是否存在预设的注册系统函数对所述模拟标记数据进行调用的行为,若是则确定脚本为危险脚本。
可选的,在步骤201之后,还包括:
步骤211,将所述脚本转换为语法树文档,所述语法树文档包括构成树状结构的一个或多个节点,所述节点用于表征所述脚本中代码片段的语法结构。
语法树文档是脚本代码的语法结构的一种树状抽象表示,树上的每个节点都表示脚本代码中代码片段的语法结构,通过对语法树文档节点的一系列操作,可以高效且精准地自动化修改脚本代码。
在本申请实施例中,具体可以将脚本转换为语法树文档,以通过语法树文档反映的清晰明了的语法结构,便捷的展开后续代码优化以及污点检测。
步骤212,获取所述语法树文档中使用预设的注册系统函数的目标节点,所述注册系统函数为已在所述隔离环境中定义使用的系统函数。
步骤213,删除所述语法树文档中除所述目标节点之外的其他节点在所述脚本中对应的代码片段,获得目标语法树文档和目标脚本。
可选的,步骤211-213在图6中未示出,基于步骤211-213,步骤204具体可以通过在所述隔离环境中,根据所述模拟标记数据和所述目标语法树文档中的目标节点,运行所述目标脚本的方式进行实现。
在本申请实施例中,污点检测是通过遍历整个脚本来实现的,而污点检测所判定的危险代码,是预设的注册系统函数调用模拟标记数据的相关代码,对于注册系统函数直接相关的代码以及注册系统函数关联的代码之外的其余代码,对于污点检测来说都是冗余的,则基于实现一个轻量化污点检测的需求,在本申请实施例可以基于脚本的语法树文档,对脚本的代码进行剪枝优化,具体为获取所述语法树文档中使用预设的注册系统函数的目标节点,以及删除所述语法树文档中除所述目标节点之外的其他节点在所述脚本中对应的代码片段,获得目标语法树文档和目标脚本,使得后续模拟污点检测更加轻量化,降低计算量,另外,在后续模拟污点检测的执行时,可以在隔离环境中,根据模拟标记数据,通过遍历目标语法树文档中的目标节点,来达到高效率运行目标脚本的目的。
例如,假设脚本的语法树文档中具有A、B、C、D四个节点,A节点中包含注册系统函数,B、C节点中分别存在与A节点中注册系统函数关联的系统函数,D节点中的函数与A、B、C中的系统函数完全不相关,则基于D节点对于模拟污点检测过程完全多余的特性,可以在脚本的代码中,删除D节点对应的代码片段。
可选的,还包括:
步骤214,获取客户端发送的函数注册指令,所述函数注册指令包括:至少一个待注册系统函数的函数标识。
步骤215,根据所述函数标识,在所述隔离环境中将所述待注册系统函数注册为注册系统函数。
在本申请实施例中,步骤214-215在图6中未示出,由于隔离环境中,将特定的系统函数(如,常用系统函数和基础系统函数)注册为注册系统函数,且可以基于注册系统函数,构建污点检测策略,使得后续模拟污点检测时可以基于注册系统函数和对应策略实现危险脚本的判断。
但是,检测需求随着时间的推移是可以不断新增和变化的,因此,本申请实施例可以通过提供对外接口,获取外部设备发送的函数注册指令,函数注册指令可以携带外部设备想要在隔离环境中实现的系统函数,本申请实施例可以将注册指令携带的系统函数注册为注册系统函数,并在隔离关键中构建基于这些系统函数的污点检测策略,从而提升检测策略的配置灵活性,提高检测手段的适用性。
综上所述,本申请实施例中,可以在隔离环境中,通过建立模拟标记数据作为脚本的输入数据,以运行脚本的方式模拟实现动态的污点检测,本申请实施例通过动态运行检测的方式,找出脚本中用文本静态识别所遗漏的危险代码,并且,在检测过程中,可以为模拟标记数据添加对应的混淆变量参数,混淆变量参数通过在脚本运行过程中统计调用模拟标记数据的系统函数的数量,并在运行结束后基于混淆变量参数的返回值大于或等于预设阈值的情况,确定脚本为危险脚本,上述过程中隔离环境可以通过对模拟标记数据添加的混淆变量参数的返回值的分析,以较低成本实现准确的危险脚本识别,进一步降低了危险代码的漏检几率。
参照图7,其示出了本申请实施例提供的一种脚本检测装置的框图,包括:
脚本获取模块301,用于获取脚本和模拟标记数据;
添加模块302,用于为所述模拟标记数据添加对应的混淆变量参数,所述混淆变量参数用于统计调用所述模拟标记数据的系统函数的数量;
运行模块303,用于在隔离环境中根据所述模拟标记数据运行所述脚本,并在运行结束后获取所述混淆变量参数的返回值;
第一识别模块304,用于在所述混淆变量参数的返回值大于或等于预设阈值的情况下,确定所述脚本为危险脚本。
可选的,所述装置还包括:
分支获取模块,用于在所述脚本的代码中,若识别到调用所述模拟标记数据进行逻辑判断的分支判断语句,则获取与所述分支判断语句关联的分支代码片段;
所述运行模块303,包括:
第一运行子模块,用于在所述隔离环境中运行所述脚本的过程中,执行所述分支代码片段。
可选的,所述装置还包括:
第二识别模块,用于在检测到所述分支代码片段中存在预设的注册系统函数对所述模拟标记数据进行调用的情况下,确定所述脚本为危险脚本,所述注册系统函数为已在所述隔离环境中定义使用的系统函数。
可选的,所述装置还包括:
第三识别模块,用于在识别到所述分支代码片段的系统函数中具有加密混淆字段的情况下,通过预设的解密工具,将所述加密混淆字段解密还原为明文。
可选的,添加模块302,包括:
第一添加子模块,用于在识别到所述脚本中存在未注册系统函数的情况下,为所述模拟标记数据添加对应的混淆变量参数,所述未注册系统函数为所述隔离环境中未定义使用的系统函数。
可选的,添加模块302,包括:
第二添加子模块,用于在识别到所述脚本的系统函数中具有加密混淆字段,且将所述加密混淆字段解密失败的情况下,为所述模拟标记数据添加对应的混淆变量参数。
可选的,所述装置还包括:
第四识别模块,用于在检测到所述脚本中存在预设的注册系统函数对所述模拟标记数据进行调用的情况下,确定所述脚本为危险脚本,所述注册系统函数为已在所述隔离环境中定义使用的系统函数。
可选的,所述装置还包括:
解密模块,用于在识别到所述脚本的系统函数中具有加密混淆字段的情况下,通过预设的解密工具对所述加密混淆字段进行解密;
跳转模块,用于在将所述加密混淆字段解密成功的情况下,进入所述在隔离环境中根据所述模拟标记数据运行所述脚本的步骤。
可选的,所述装置还包括:
转换模块,用于将所述脚本转换为语法树文档,所述语法树文档包括构成树状结构的一个或多个节点,所述节点用于表征所述脚本中代码片段的语法结构;
节点检测模块,用于获取所述语法树文档中使用预设的注册系统函数的目标节点,所述注册系统函数为已在所述隔离环境中定义使用的系统函数;
删除模块,用于删除所述语法树文档中除所述目标节点之外的其他节点在所述脚本中对应的代码片段,获得目标语法树文档和目标脚本。
可选的,所述运行模块303包括:
第二运行子模块,用于在所述隔离环境中,根据所述模拟标记数据和所述目标语法树文档中的目标节点,运行所述目标脚本。
可选的,所述装置还包括:
请求模块,用于获取客户端发送的函数注册指令,所述函数注册指令包括:至少一个待注册系统函数的函数标识;
注册模块,用于根据所述函数标识,在所述隔离环境中将所述待注册系统函数注册为注册系统函数。
综上,本申请实施例中,可以在隔离环境中,通过建立模拟标记数据作为脚本的输入数据,以运行脚本的方式模拟实现动态的污点检测,本申请实施例通过动态运行检测的方式,找出脚本中用文本静态识别所遗漏的危险代码,并且,在检测过程中,可以为模拟标记数据添加对应的混淆变量参数,混淆变量参数通过在脚本运行过程中统计调用模拟标记数据的系统函数的数量,并在运行结束后基于混淆变量参数的返回值大于或等于预设阈值的情况,确定脚本为危险脚本,上述过程中隔离环境可以通过对模拟标记数据添加的混淆变量参数的返回值的分析,以较低成本实现准确的危险脚本识别,进一步降低了危险代码的漏检几率。
本申请实施例还提供了一种非易失性可读存储介质,该存储介质中存储有一个或多个模块(programs),该一个或多个模块被应用在设备时,可以使得该设备执行本申请实施例中各方法步骤的指令(instructions)。
本申请实施例提供了一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得电子设备执行如上述实施例中一个或多个所述的方法。本申请实施例中,所述电子设备包括终端设备、服务端(集群)等各类型的设备。
本公开的实施例可被实现为使用任意适当的硬件,固件,软件,或及其任意组合进行想要的配置的装置,该装置可包括终端设备、服务端(集群)等电子设备。图8示意性地示出了可被用于实现本申请实施例中所述的各个实施例的示例性装置1000。
对于一个实施例,图8示出了示例性装置1000,该装置具有一个或多个处理器1002、被耦合到(一个或多个)处理器1002中的至少一个的控制模块(芯片组)1004、被耦合到控制模块1004的存储器1006、被耦合到控制模块1004的非易失性存储器(NVM)/存储设备1008、被耦合到控制模块1004的一个或多个输入/输出设备1010,以及被耦合到控制模块1004的网络接口1012。
处理器1002可包括一个或多个单核或多核处理器,处理器1002可包括通用处理器或专用处理器(例如图形处理器、应用处理器、基频处理器等)的任意组合。在一些实施例中,装置1000能够作为本申请实施例中所述终端设备、服务端(集群)等设备。
在一些实施例中,装置1000可包括具有指令1014的一个或多个计算机可读介质(例如,存储器1006或NVM/存储设备1008)以及与该一个或多个计算机可读介质相合并被配置为执行指令1014以实现模块从而执行本公开中所述的动作的一个或多个处理器1002。
对于一个实施例,控制模块1004可包括任意适当的接口控制器,以向(一个或多个)处理器1002中的至少一个和/或与控制模块1004通信的任意适当的设备或组件提供任意适当的接口。
控制模块1004可包括存储器控制器模块,以向存储器1006提供接口。存储器控制器模块可以是硬件模块、软件模块和/或固件模块。
存储器1006可被用于例如为装置1000加载和存储数据和/或指令1014。对于一个实施例,存储器1006可包括任意适当的易失性存储器,例如,适当的DRAM。在一些实施例中,存储器1006可包括双倍数据速率类型四同步动态随机存取存储器(DDR4SDRAM)。
对于一个实施例,控制模块1004可包括一个或多个输入/输出控制器,以向NVM/存储设备1008及(一个或多个)输入/输出设备1010提供接口。
例如,NVM/存储设备1008可被用于存储数据和/或指令1014。NVM/存储设备1008可包括任意适当的非易失性存储器(例如,闪存)和/或可包括任意适当的(一个或多个)非易失性存储设备(例如,一个或多个硬盘驱动器(HDD)、一个或多个光盘(CD)驱动器和/或一个或多个数字通用光盘(DVD)驱动器)。
NVM/存储设备1008可包括在物理上作为装置1000被安装在其上的设备的一部分的存储资源,或者其可被该设备访问可不必作为该设备的一部分。例如,NVM/存储设备1008可通过网络经由(一个或多个)输入/输出设备1010进行访问。
(一个或多个)输入/输出设备1010可为装置1000提供接口以与任意其他适当的设备通信,输入/输出设备1010可以包括通信组件、音频组件、传感器组件等。网络接口1012可为装置1000提供接口以通过一个或多个网络通信,装置1000可根据一个或多个无线网络标准和/或协议中的任意标准和/或协议来与无线网络的一个或多个组件进行无线通信,例如接入基于通信标准的无线网络,如WiFi、2G、3G、4G、5G等,或它们的组合进行无线通信。
对于一个实施例,(一个或多个)处理器1002中的至少一个可与控制模块1004的一个或多个控制器(例如,存储器控制器模块)的逻辑封装在一起。对于一个实施例,(一个或多个)处理器1002中的至少一个可与控制模块1004的一个或多个控制器的逻辑封装在一起以形成系统级封装(SiP)。对于一个实施例,(一个或多个)处理器1002中的至少一个可与控制模块1004的一个或多个控制器的逻辑集成在同一模具上。对于一个实施例,(一个或多个)处理器1002中的至少一个可与控制模块1004的一个或多个控制器的逻辑集成在同一模具上以形成片上系统(SoC)。
在各个实施例中,装置1000可以但不限于是:服务端、台式计算设备或移动计算设备(例如,膝上型计算设备、手持计算设备、平板电脑、上网本等)等终端设备。在各个实施例中,装置1000可具有更多或更少的组件和/或不同的架构。例如,在一些实施例中,装置1000包括一个或多个摄像机、键盘、液晶显示器(LCD)屏幕(包括触屏显示器)、非易失性存储器端口、多个天线、图形芯片、专用集成电路(ASIC)和扬声器。
其中,检测装置中可采用主控芯片作为处理器或控制模块,传感器数据、位置信息等存储到存储器或NVM/存储设备中,传感器组可作为输入/输出设备,通信接口可包括网络接口。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种脚本检测方法、装置、电子设备和存储介质,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (14)
1.一种脚本检测方法,其特征在于,包括:
获取脚本和模拟标记数据;
为所述模拟标记数据添加对应的混淆变量参数,所述混淆变量参数用于统计调用所述模拟标记数据的系统函数的数量;
在隔离环境中根据所述模拟标记数据运行所述脚本,并在运行结束后获取所述混淆变量参数的返回值;
在所述混淆变量参数的返回值大于或等于预设阈值的情况下,确定所述脚本为危险脚本。
2.根据权利要求1所述的方法,其特征在于,还包括:
在所述脚本的代码中,若识别到调用所述模拟标记数据进行逻辑判断的分支判断语句,则获取与所述分支判断语句关联的分支代码片段;
所述在隔离环境中根据所述模拟标记数据运行所述脚本,包括:
在所述隔离环境中运行所述脚本的过程中,执行所述分支代码片段。
3.根据权利要求2所述的方法,其特征在于,还包括:
在检测到所述分支代码片段中存在预设的注册系统函数对所述模拟标记数据进行调用的情况下,确定所述脚本为危险脚本,所述注册系统函数为已在所述隔离环境中定义使用的系统函数。
4.根据权利要求2所述的方法,其特征在于,还包括:
在识别到所述分支代码片段的系统函数中具有加密混淆字段的情况下,通过预设的解密工具,将所述加密混淆字段解密还原为明文。
5.根据权利要求1所述的方法,其特征在于,所述为所述模拟标记数据添加对应的混淆变量参数,包括:
在识别到所述脚本中存在未注册系统函数的情况下,为所述模拟标记数据添加对应的混淆变量参数,所述未注册系统函数为所述隔离环境中未定义使用的系统函数。
6.根据权利要求1所述的方法,其特征在于,所述为所述模拟标记数据添加对应的混淆变量参数,包括:
在识别到所述脚本的系统函数中具有加密混淆字段,且将所述加密混淆字段解密失败的情况下,为所述模拟标记数据添加对应的混淆变量参数。
7.根据权利要求1所述的方法,其特征在于,还包括:
在检测到所述脚本中存在预设的注册系统函数对所述模拟标记数据进行调用的情况下,确定所述脚本为危险脚本,所述注册系统函数为已在所述隔离环境中定义使用的系统函数。
8.根据权利要求7所述的方法,其特征在于,还包括:
在识别到所述脚本的系统函数中具有加密混淆字段的情况下,通过预设的解密工具对所述加密混淆字段进行解密;
在将所述加密混淆字段解密成功的情况下,进入所述在隔离环境中根据所述模拟标记数据运行所述脚本的步骤。
9.根据权利要求1所述的方法,其特征在于,还包括:
将所述脚本转换为语法树文档,所述语法树文档包括构成树状结构的一个或多个节点,所述节点用于表征所述脚本中代码片段的语法结构;
获取所述语法树文档中使用预设的注册系统函数的目标节点,所述注册系统函数为已在所述隔离环境中定义使用的系统函数;
删除所述语法树文档中除所述目标节点之外的其他节点在所述脚本中对应的代码片段,获得目标语法树文档和目标脚本。
10.根据权利要求9所述的方法,其特征在于,所述在隔离环境中根据所述模拟标记数据运行所述脚本,包括:
在所述隔离环境中,根据所述模拟标记数据和所述目标语法树文档中的目标节点,运行所述目标脚本。
11.根据权利要求3、5、7、9中任一项所述的方法,其特征在于,还包括:
获取客户端发送的函数注册指令,所述函数注册指令包括:至少一个待注册系统函数的函数标识;
根据所述函数标识,在所述隔离环境中将所述待注册系统函数注册为注册系统函数。
12.一种脚本检测装置,其特征在于,包括:
脚本获取模块,用于获取脚本和模拟标记数据;
添加模块,用于为所述模拟标记数据添加对应的混淆变量参数,所述混淆变量参数用于统计调用所述模拟标记数据的系统函数的数量;
运行模块,用于在隔离环境中根据所述模拟标记数据运行所述脚本,并在运行结束后获取所述混淆变量参数的返回值;
识别模块,用于在所述混淆变量参数的返回值大于或等于预设阈值的情况下,确定所述脚本为危险脚本。
13.一种电子设备,其特征在于,包括:
处理器;和
存储器,其上存储有可执行代码,当所述可执行代码被执行时,使得所述处理器执行如权利要求1至11任一所述的方法。
14.一个或多个机器可读介质,其上存储有可执行代码,当所述可执行代码被执行时,使得处理器执行如权利要求1至11任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210445667.7A CN114912112A (zh) | 2022-04-26 | 2022-04-26 | 脚本检测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210445667.7A CN114912112A (zh) | 2022-04-26 | 2022-04-26 | 脚本检测方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114912112A true CN114912112A (zh) | 2022-08-16 |
Family
ID=82764429
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210445667.7A Pending CN114912112A (zh) | 2022-04-26 | 2022-04-26 | 脚本检测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114912112A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116305131A (zh) * | 2023-05-20 | 2023-06-23 | 北京长亭科技有限公司 | 脚本静态去混淆方法及系统 |
-
2022
- 2022-04-26 CN CN202210445667.7A patent/CN114912112A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116305131A (zh) * | 2023-05-20 | 2023-06-23 | 北京长亭科技有限公司 | 脚本静态去混淆方法及系统 |
CN116305131B (zh) * | 2023-05-20 | 2023-08-11 | 北京长亭科技有限公司 | 脚本静态去混淆方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10915659B2 (en) | Privacy detection of a mobile application program | |
US10089464B2 (en) | De-obfuscating scripted language for network intrusion detection using a regular expression signature | |
US9953162B2 (en) | Rapid malware inspection of mobile applications | |
CN107852412B (zh) | 用于网络钓鱼和品牌保护的系统和方法、计算机可读介质 | |
CN107180200B (zh) | 数据文件可定制化脱敏方法和系统 | |
US9390270B2 (en) | Security testing using semantic modeling | |
US20110087892A1 (en) | Eliminating False Reports of Security Vulnerabilities when Testing Computer Software | |
CN105320883A (zh) | 文件安全加载实现方法及装置 | |
US9519788B2 (en) | Identifying security vulnerabilities related to inter-process communications | |
US8485428B1 (en) | Systems and methods for providing security information about quick response codes | |
CN106250761B (zh) | 一种识别web自动化工具的设备、装置及方法 | |
CN111163094A (zh) | 网络攻击检测方法、网络攻击检测装置、电子设备和介质 | |
CN112688966A (zh) | webshell检测方法、装置、介质和设备 | |
US8751568B1 (en) | Systems and methods for data loss prevention | |
CN114912112A (zh) | 脚本检测方法及装置 | |
CN103390129B (zh) | 检测统一资源定位符安全性的方法和装置 | |
Rafiq et al. | AndroMalPack: enhancing the ML-based malware classification by detection and removal of repacked apps for Android systems | |
KR101557455B1 (ko) | 응용 프로그램 코드 분석 장치 및 그것을 이용한 코드 분석 방법 | |
CN111460448B (zh) | 一种恶意软件家族检测方法及装置 | |
US8464343B1 (en) | Systems and methods for providing security information about quick response codes | |
JP6018344B2 (ja) | 動的読み込みコード解析装置、動的読み込みコード解析方法及び動的読み込みコード解析プログラム | |
Bokolo et al. | Hybrid analysis based cross inspection framework for android malware detection | |
Ban et al. | A Survey on IoT Vulnerability Discovery | |
Mu et al. | Vulnerability analysis for iot devices of multi-agent systems: a cryptographic function identification approach | |
US11356853B1 (en) | Detection of malicious mobile apps |
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 |