CN108804921A - 一种PowerShell代码的去混淆方法及装置 - Google Patents
一种PowerShell代码的去混淆方法及装置 Download PDFInfo
- Publication number
- CN108804921A CN108804921A CN201810531207.XA CN201810531207A CN108804921A CN 108804921 A CN108804921 A CN 108804921A CN 201810531207 A CN201810531207 A CN 201810531207A CN 108804921 A CN108804921 A CN 108804921A
- Authority
- CN
- China
- Prior art keywords
- powershell
- codes
- obscured
- tentatively
- obscure
- 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
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
Abstract
本发明提供一种PowerShell代码的去混淆方法及装置,所述方法包括:提供目标Office文档自动运行的虚拟环境;利用Hook机制从所述目标Office文档内混淆过的代码中提取出初步去混淆的PowerShell代码;分析所述初步去混淆的PowerShell代码的混淆特征,并根据所述混淆特征对所述初步去混淆的PowerShell代码进行解混淆,获取原始PowerShell代码。本发明通过结合动静态解混淆方法,将混淆过的PowerShell代码从Office文档中提取出来并进行自动解混淆,可显著提高安全分析的效率。
Description
技术领域
本发明涉及安全分析技术领域,更具体地,涉及一种PowerShell代码的去混淆方法及装置。
背景技术
由于反病毒技术的快速发展,可执行恶意程序的传播变得越来越困难,攻击者越来越倾向利用目标电脑中已经存在的工具来进行恶意行为,这种做法会留下更少的攻击痕迹,使检测更加困难。自从MicrosoftPowerShell被Windows系统默认安装,PowerShell就成为许多攻击小组攻击链中的一个理想工具。恶意PowerShell脚本通常扮演下载器的角色,最常利用的形式是捆绑Office宏进行入侵,攻击者通常会通过社会工程的伪装方法,欺骗用户打开Office文档(Word、Excel),并引导用户开启宏权限,用户一旦开启,嵌入的恶意PowerShell脚本会根据指令将远程服务器中托管的恶意文件下载至目标用户的设备之中,完成恶意行为。
攻击者为了增强攻击活动的隐蔽性,往往会在PowerShell代码运行时进行混淆编码,又由于PowerShell具备脚本语言的特性,PowerShell代码非常容易被混淆,目前已统计20余种混淆方式,包括大写截断和转义字符混淆等,例如:PowerShell.exe-EncodeCommand命令被混淆成PowerShell.exe-^e^c^或PowerShell.exe-eNco等,所以传统的基于静态签名和文件哈希值的检测方法已经失效。研究表明,超过一半的PowerShell脚本是从命令行执行的,Windows也提供了一些执行策略来防止恶意PowerShell脚本启动,然而这些策略会被攻击者轻易绕过,比如使用Invoke-Expression命令,该命令会接受任何字符串输入并将它视为PowerShell代码。目前对于恶意PowerShell的检测还大多处于对Office宏的检测,一般情况下,嵌入PowerShell的Office宏中会出现Shell、VBA.Shell等命令,大多数杀毒引擎根据静态匹配关键字的方式来对Office文档性质作出判断。对于PowerShell的提取与去混淆则建立在人工分析基础上,通常是安全专家利用经验进行手动分析。
但是,利用对Office宏的检测来替代恶意PowerShell的检测出现极高的误报率,因为正常文档同样会使用Shell命令对系统功能进行调用;目前对于恶意PowerShell脚本的提取仍然处于人工手动分析,随着利用恶意PowerShell的样本数量越来越多,混淆方式越来越复杂,单靠人工分析显然不能满足需求;对于文档中嵌入的混淆过的Powershell脚本,无法自动化获取原始Powershell进行深度分析。
发明内容
为了克服上述问题或者至少部分地解决上述问题,本发明提供一种PowerShell代码的去混淆方法及装置。
根据本发明的一个方面,提供一种PowerShell代码的去混淆方法,包括:
提供目标Office文档自动运行的虚拟环境;
利用Hook机制从所述目标Office文档内混淆过的代码中提取初步去混淆的PowerShell代码;
分析所述初步去混淆的PowerShell代码的混淆特征,并根据所述混淆特征对所述初步去混淆的PowerShell代码进行解混淆,获取原始PowerShell代码。
根据本发明的另一个方面,提供一种PowerShell代码的去混淆装置,包括:
预处理模块,用于提供目标Office文档自动运行的虚拟环境;
动态解混淆模块,用于利用Hook机制从所述目标Office文档内混淆过的代码中提取初步去混淆的PowerShell代码;
静态解混淆模块,用于分析所述初步去混淆的PowerShell代码的混淆特征,并根据所述混淆特征对所述初步去混淆的PowerShell代码进行解混淆,获取原始PowerShell代码。
根据本发明的另一个方面,提供一种PowerShell代码的去混淆设备,包括:
至少一个处理器;以及
与所述处理器通信连接的至少一个存储器,其中:
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行上述第一方面的各种可能的实现方式中任一种实现方式所提供的方法。
根据本发明的另一个方面,提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行能够执行上述第一方面的各种可能的实现方式中任一种实现方式所提供的方法。
本发明提出的一种PowerShell代码的去混淆方法及装置,通过结合动态和静态的解混淆方法,能够将混淆过的PowerShell代码快速地从Office文档中提取出来并进行自动解混淆,获取原始Powershell代码,便于安全人员作进一步分析,可显著提高安全分析效率,加快安全事件的响应速度。
附图说明
图1为本发明一实施例提供的一种PowerShell代码的去混淆方法的结构示意图;
图2为根据本发明一实施例提供的混淆过的Office文档的宏代码的示意图;
图3为根据本发明另一实施例提供的混淆过的PowerShell命令的示意图;
图4为根据本发明另一实施例提供的解码后的Powershell代码的示意图;
图5为根据本发明另一实施例提供的原始PowerShell代码的示意图;
图6为根据本发明另一实施例提供的一种PowerShell代码的去混淆装置的结构示意图;
图7为本发明另一实施例提供的一种PowerShell代码的去混淆设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他的实施例,都属于本发明保护的范围。
如图1所示,为本发明一实施例提供的一种PowerShell代码的去混淆方法的结构示意图,包括:
101、提供目标Office文档自动运行的虚拟环境;
恶意Powershell代码经过混淆编码嵌入在Office文档中,较大可能是混淆嵌入在Office文档的宏代码中,如图2所示,为混淆过的Office文档的宏代码的示意图。为了将嵌入在Office文档中的Powershell代码提取出来并进行去混淆,首先需要对目标Office文档进行预处理,提供目标Office文档(如Word、Excel)能够自动运行的虚拟环境,包括:利用已有公开的方法判断目标Office文档类型及版本,对于不同类型和版本的Office文档,需要相应的Office软件进行打开,还包括将该目标Office文档的宏安全性降到最低,断开互联网连接,模拟点击弹窗等,以直接触发恶意行为。
102、利用Hook机制从所述目标Office文档内混淆过的代码中提取初步去混淆的PowerShell代码;
由于PowerShell的脚本特性,攻击者往往会使用PowerShell本身所提供的各种参数选项来尽可能地增强攻击活动的隐蔽性,因此,对目标Office文档运行时的各种PowerShell相关的命令参数进行动态监控,可以获取到PowerShell的活动。
Windows系统是建立在事件驱动机制上的,Hook(钩子)则是一种特殊的消息处理机制,它可以监视系统或进程中的各种事件消息,截获发往目标窗口的消息并进行处理。由于超过一半的PowerShell脚本是从命令行执行的,因此,可以安装自定义的钩子,对目标Office文档的PowerShell进程启动相关的消息进行监控以及对通过命令行传递给PowerShell进程的各种参数进行监控,以检测出可疑的PowerShell活动。
利用Hook机制进行PowerShell代码的初步去混淆,属于动态解混淆方式,并且利用Hook机制的优势在于:不关注于文档内混淆代码的提取和解混淆,所以它不能被代码混淆技术所规避,并且对于未知的混淆方法也有很好的健壮性;不像其它动态分析方法那样消耗时间,它所消耗的时间仅仅依赖于文档启动的时间,因为一旦文档启动成功,文档代码就会执行,Powershell.exe程序也便会执行。
103、分析所述初步去混淆的PowerShell代码的混淆特征,并根据所述混淆特征对所述初步去混淆的PowerShell代码进行解混淆,获取原始PowerShell代码。
这一步骤对初步去混淆的PowerShell代码作进一步地解混淆处理,属于静态解混淆。由于PowerShell代码非常容易被混淆,且混淆的方式有多种可能,因此,需要对所述初步去混淆的PowerShell代码的混淆特征进行分析,然后根据分析出的混淆特征进行相应地解混淆,获得原始PowerShell代码,以便安全人员通过观察原始Powershell脚本,提取url,并在虚拟机中找到下载的payload(有效载荷数据),从而进一步地分析攻击者的攻击意图。
本发明实施例提供的一种PowerShell代码的去混淆方法,通过结合动态和静态的解混淆方法,能够将混淆过的PowerShell代码快速地从Office文档中提取出来并进行自动解混淆,获取原始PowerShell代码,可显著提高安全分析的效率。
本发明另一实施例,在上述实施例的基础上,步骤102利用Hook机制从所述目标Office文档的代码中提取初步去混淆的PowerShell代码,具体为:
利用Hook机制监控所述目标Office文档运行时的PowerShell.exe进程和cmd.exe进程,获取命令参数;
在大多数PowerShell攻击中,PowerShell脚本或命令会通过命令行进程执行,在这种场景下,PowerShell.exe的父进程将会是cmd.exe。因此,利用Hook机制监控所述目标Office文档运行时的PowerShell.exe进程和cmd.exe进程,获取命令参数。命令参数即为“半原始”Powershell脚本。同时这种动态解混淆的方法还解决了Powershell利用^符号混淆的情况,如图3所示,为利用^符号混淆过的PowerShell命令。
对所述命令参数进行正则化匹配处理,获得初步去混淆的PowerShell代码。
对利用Hook机制获取到的命令参数进行正则化匹配处理,可以获得初步去混淆的PowerShell代码。正则化匹配是指利用正则表达式对获取到的半原始PowerShell脚本即命令参数进行初步的去混淆。因为PowerShell为攻击者提供了多种灵活调用参数的方法,可以采用完全调用方式、大写截断方式、转义字符注入分解字符串等形式,而这些不同方式还可以衍生出多种组合方式,需要设计出合理的正则表达式才能有效地覆盖多种调用方式的组合,匹配出恶意PowerShell代码所调用的命令。
本发明另一实施例,在上述实施例的基础上,步骤103分析所述初步去混淆的PowerShell代码的混淆特征,并根据所述混淆特征对所述初步去混淆的PowerShell代码进行解混淆,获取原始PowerShell代码,具体为:
判断所述初步去混淆的PowerShell代码中是否包含Split函数或ASCII编码;
若所述初步去混淆的PowerShell代码中包含Split函数,则根据所述Split函数的功能对所述初步去混淆的PowerShell代码进行处理;和/或,若所述初步去混淆的PowerShell代码中包含ASCII编码,则对所述ASCII编码进行解码;
对剩余部分的初步去混淆的PowerShell代码进行拼接和格式化处理。
即在步骤102的基础上进行更细粒度的去混淆。因为混淆方式大多利用ASCII编码或利用Split函数将Char类型数组混淆成字符串,因此分析初步去混淆的PowerShell代码的混淆特征具体采用判断该初步去混淆的PowerShell代码中是否包含Split函数或ASCII编码。如果包含Split函数,则根据所述Split函数的功能对所述初步去混淆的PowerShell代码进行处理,即提取Split函数括号里面的信息进行处理;如果不包含Split函数,而包含ASCII编码,则对所述ASCII编码进行解码处理;如果既包含Split函数又包含ASCII编码,则进行上述两种操作。如果既不包含Split函数又不包含ASCII编码,则直接进入下一步操作,对剩余部分的初步去混淆的PowerShell代码进行拼接和格式化处理,例如统一大小写、补全缩略命令行等,最终获得原始PowerShell代码。
本发明另一实施例,在上述实施例的基础上,对所述命令参数进行正则化匹配处理的步骤,具体为:
利用\-[Ee^]{1,2}[NnCcOoDdEeMmAa^]+[A-Za-z0-9+/=]{5,}对所述命令参数进行正则化匹配。
大多数PowerShell攻击样本均使用了PowerShell的“-EncodedCommand”命令,EncodedCommand命令用于对复杂字符串进行base64编码封装以便PowerShell在命令行中执行。恶意PowerShell代码利用此命令对关键字符串进行隐藏,以提高攻击的隐蔽性。而“-EncodedCommand”命令的调用可以有多种混淆方式,利用正则表达式\-[Ee^]{1,2}[NnCcOoDdEeMmAa^]+[A-Za-z0-9+/=]{5,}对命令参数进行匹配能够有效覆盖多种调用-EncodedCommand”命令的方式,匹配效率高。
基于上述实施例,所述对所述命令参数进行正则化匹配处理的步骤之后,还包括:
若匹配到-EncodeCommand命令,则保留-EncodeCommand命令后面的有效参数字段;
具体地,若匹配到-EncodeCommand命令,那么-EncodeCommand命令后面的有效参数字段则是恶意PowerShell代码要在命令行中执行的内容,因此,需要对所述有效参数字段进行保留,所述有效参数字段此时就是初步去混淆的PowerShell代码。然后进入步骤103对获取到的有效参数字段进行更细粒度地去混淆处理。
相应地,步骤103分析所述初步去混淆的PowerShell代码的混淆特征,并根据所述混淆特征对所述初步去混淆的PowerShell代码进行解混淆,获取原始PowerShell代码的步骤,具体为:
对所述有效参数字段进行base64位解码,并去除\0X00和空格的混淆,获得解码后的PowerShell代码;
若所述解码后的PowerShell代码中包含Split函数,则根据所述Split函数的功能对所述解码后的PowerShell代码进行处理;和/或,若所述解码后的PowerShell代码中包含ASCII编码,则对所述ASCII编码进行解码;
对剩余部分的有效参数字段进行拼接和格式化处理。
具体地,因为保留下来的有效参数字段是经过base64编码的,所以首先要对其进行base64位解码,并去除\0X00和空格的混淆,获得解码后的PowerShell代码。解码后的Powershell代码大多数如图4所示。然后对解码后的PowerShell代码进行混淆特征分析和相应的去混淆处理,即判断解码后的PowerShell代码中是否包含Split函数或ASCII编码,若包含Split函数,则根据所述Split函数的功能对所述初步去混淆的PowerShell代码进行处理,若包含ASCII编码则对所述ASCII编码进行解码,如果两者均包含,则执行上述两种处理,如果Split函数和ASCII编码均不包含,则直接进入最后一步操作,对剩余的有效参数字段进行拼接和格式化处理,例如统一大小写、补全缩略命令行等,获得原始PowerShell代码。如图5所示,为原始PowerShell代码的示意图。
如图6所示,为本发明另一实施例提供的一种PowerShell代码的去混淆装置的结构示意图,包括:预处理模块601、动态解混淆模块602和静态解混淆模块603,其中,
预处理模块601,用于提供目标Office文档自动运行的虚拟环境;
动态解混淆模块602,用于利用Hook机制从所述目标Office文档内混淆过的代码中提取出初步去混淆的PowerShell代码;
静态解混淆模块603,用于分析所述初步去混淆的PowerShell代码的混淆特征,并根据所述混淆特征对所述初步去混淆的PowerShell代码进行解混淆,获取原始PowerShell代码。
具体地,恶意Powershell代码经过混淆编码嵌入在Office文档中,为了将嵌入在Office文档中的Powershell代码提取出来并进行去混淆,首先需要对目标Office文档进行预处理,预处理模块601利用已有公开的方法判断Office文档类型及版本,然后利用相应的Office软件对其进行打开,并开启宏权限,将该目标Office文档的宏安全性降到最低,断开互联网连接,模拟点击弹窗等,以直接触发恶意行为。
由于PowerShell的脚本特性,攻击者往往会使用PowerShell本身所提供的各种参数选项来尽可能地增强攻击活动的隐蔽性,因此,对目标Office文档运行时的各种PowerShell相关的命令参数进行监控,可以获取到PowerShell的活动。Windows系统是建立在事件驱动机制上的,Hook(钩子)则是一种特殊的消息处理机制,它可以监视系统或进程中的各种事件消息,截获发往目标窗口的消息并进行处理。由于超过一半的PowerShell脚本是从命令行执行的,因此,动态解混淆模块602安装自定义的钩子,对目标Office文档的PowerShell进程启动相关的消息进行监控以及对通过命令行传递给PowerShell进程的各种参数进行监控,以检测出可疑的PowerShell活动。
由于PowerShell代码非常容易被混淆,且混淆的方式有多种可能,因此,静态解混淆模块603首先需要对所述初步去混淆的PowerShell代码的混淆特征进行分析,然后根据分析出的混淆特征进行相应地解混淆,获得原始PowerShell代码,以便安全人员通过观察原始Powershell脚本,提取url,并在虚拟机中找到下载的payload,从而进一步地分析攻击者的攻击意图。
本发明实施例提供的一种PowerShell代码的去混淆装置,通过采用动静态结合的方法,将混淆过的PowerShell代码快速地从Office文档中提取出来并进行自动解混淆,获取原始PowerShell代码,可显著提高安全分析的效率。
基于上述实施例,动态解混淆模块602具体包括:
监控子模块,用于利用Hook机制监控所述目标Office文档运行时的PowerShell.exe进程和cmd.exe进程,获取命令参数;
在大多数PowerShell攻击中,PowerShell脚本或命令会通过命令行进程执行,在这种场景下,PowerShell.exe的父进程将会是cmd.exe。因此,利用Hook机制监控所述目标Office文档运行时的PowerShell.exe进程和cmd.exe进程,获取命令参数。命令参数即为“半原始”Powershell脚本。
正则匹配子模块,用于对所述命令参数进行正则化匹配处理,获得初步去混淆的PowerShell代码。
正则化匹配是指利用正则表达式对获取到的半原始PowerShell脚本即命令参数进行初步的去混淆。因为PowerShell为攻击者提供了多种灵活调用参数的方法,可以采用完全调用方式、大写截断方式、转义字符注入分解字符串等形式,而这些不同方式还可以衍生出多种组合方式,需要设计出合理的正则表达式才能有效地覆盖多种调用方式的组合,匹配出恶意PowerShell代码所调用的命令。
本发明实施例提供的一种PowerShell代码的去混淆装置,利用Hook机制进行初步的去混淆,对未知的混淆方式也具有很好的健壮性,同时所消耗的时间较短,仅仅取决于文档启动的时间。
基于上述实施例,静态解混淆模块603具体用于:
判断所述初步去混淆的PowerShell代码中是否包含Split函数或ASCII编码;
若所述初步去混淆的PowerShell代码中包含Split函数,则根据所述Split函数的功能对所述初步去混淆的PowerShell代码进行处理;和/或,若所述初步去混淆的PowerShell代码中包含ASCII编码
,则对所述ASCII编码进行解码;
对剩余部分的初步去混淆的PowerShell代码进行拼接和格式化处理。
具体地,静态解混淆模块603在动态解混淆模块602的基础上进行更细粒度的去混淆。因为混淆方式大多利用ASCII编码或利用Split函数将Char类型数组混淆成字符串,因此分析初步去混淆的PowerShell代码的混淆特征具体采用判断该初步去混淆的PowerShell代码中是否包含Split函数或ASCII编码。如果包含Split函数,则根据所述Split函数的功能对所述初步去混淆的PowerShell代码进行处理,即提取Split函数括号里面的信息进行处理;如果不包含Split函数,而包含ASCII编码,则对所述ASCII编码进行解码处理;如果既包含Split函数又包含ASCII编码,则进行上述两种操作。如果既不包含Split函数又不包含ASCII编码,则直接进入下一步操作,对剩余部分的初步去混淆的PowerShell代码进行拼接和格式化处理,例如统一大小写、补全缩略命令行等,最终获得原始PowerShell代码。
基于上述实施例,所述正则匹配子模块具体用于:
利用\-[Ee^]{1,2}[NnCcOoDdEeMmAa^]+[A-Za-z0-9+/=]{5,}对所述命令参数进行正则化匹配。
EncodedCommand命令用于对复杂字符串进行base64编码封装以便PowerShell在命令行中执行,恶意PowerShell代码利用此命令对关键字符串进行隐藏,以提高攻击的隐蔽性。而“-EncodedCommand”命令的调用可以有多种混淆方式,利用正则表达式\-[Ee^]{1,2}[NnCcOoDdEeMmAa^]+[A-Za-z0-9+/=]{5,}对命令参数进行匹配能够有效覆盖多种调用-EncodedCommand”命令的方式,匹配效率高。
基于上述实施例,所述正则匹配子模块还用于:
若匹配到-EncodeCommand命令,则保留-EncodeCommand命令后面的有效参数字段;相应地,所述静态解混淆模块603具体用于:
对所述有效参数字段进行base64位解码,并去除\0X00和空格的混淆,获得解码后的PowerShell代码;
若所述解码后的PowerShell代码中包含Split函数,则根据所述Split函数的功能对所述解码后的PowerShell代码进行处理;和/或,若所述解码后的PowerShell代码中包含ASCII编码,则对所述ASCII编码进行解码;
对剩余部分的有效参数字段进行拼接和格式化处理。
具体地,若匹配到-EncodeCommand命令,那么-EncodeCommand命令后面的有效参数字段则是恶意PowerShell代码要在命令行中执行的内容,因此,需要对所述有效参数字段进行保留。
相应地,因为保留下来的有效参数字段是经过base64编码的,所以静态解混淆模块603首先要对其进行base64位解码,并去除\0X00和空格的混淆,获得解码后的PowerShell代码。然后静态解混淆模块603对解码后的PowerShell代码进行混淆特征分析和相应的去混淆处理,即判断解码后的PowerShell代码中是否包含Split函数或ASCII编码,若包含Split函数,则根据所述Split函数的功能对所述初步去混淆的PowerShell代码进行处理,若包含ASCII编码则对所述ASCII编码进行解码,如果两者均包含,则执行上述两种处理,如果Split函数和ASCII编码均不包含,则直接进入最后一步操作,对剩余的有效参数字段进行拼接和格式化处理,例如统一大小写、补全缩略命令行等,获得原始PowerShell代码。。
如图7所示,为本发明另一实施例提供的一种PowerShell代码的去混淆设备的结构示意图,包括:处理器(processor)701、存储器(memory)702和总线703;
其中,处理器701及存储器702分别通过总线703完成相互间的通信;处理器701用于调用存储器702中的程序指令,以执行上述实施例所提供的PowerShell代码的去混淆方法,例如包括:提供目标Office文档自动运行的虚拟环境;利用Hook机制从所述目标Office文档内混淆过的代码中提取出初步去混淆的PowerShell代码;分析所述初步去混淆的PowerShell代码的混淆特征,并根据所述混淆特征对所述初步去混淆的PowerShell代码进行解混淆,获取原始PowerShell代码。
本发明又一实施例,提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如上述各实施例所提供的PowerShell代码的去混淆方法,例如包括:提供目标Office文档自动运行的虚拟环境;利用Hook机制从所述目标Office文档内混淆过的代码中提取出初步去混淆的PowerShell代码;分析所述初步去混淆的PowerShell代码的混淆特征,并根据所述混淆特征对所述初步去混淆的PowerShell代码进行解混淆,获取原始PowerShell代码。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的PowerShell代码的去混淆设备的实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分方法。
最后,本发明的方法仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种PowerShell代码的去混淆方法,其特征在于,包括:
提供目标Office文档自动运行的虚拟环境;
利用Hook机制从所述目标Office文档内混淆过的代码中提取出初步去混淆的PowerShell代码;
分析所述初步去混淆的PowerShell代码的混淆特征,并根据所述混淆特征对所述初步去混淆的PowerShell代码进行解混淆,获取原始PowerShell代码。
2.根据权利要求1所述的方法,其特征在于,所述利用Hook机制从所述目标Office文档内混淆过的代码中提取出初步去混淆的PowerShell代码的步骤,具体为:
利用Hook机制监控所述目标Office文档运行时的PowerShell.exe进程和cmd.exe进程,获取命令参数;
对所述命令参数进行正则化匹配处理,获得初步去混淆的PowerShell代码。
3.根据权利要求1所述的方法,其特征在于,所述分析所述初步去混淆的PowerShell代码的混淆特征,并根据所述混淆特征对所述初步去混淆的PowerShell代码进行解混淆,获取原始PowerShell代码的步骤,具体为:
判断所述初步去混淆的PowerShell代码中是否包含Split函数或ASCII编码;
若所述初步去混淆的PowerShell代码中包含Split函数,则根据所述Split函数的功能对所述初步去混淆的PowerShell代码进行处理;和/或,若所述初步去混淆的PowerShell代码中包含ASCII编码,
则对所述ASCII编码进行解码;
对剩余部分的初步去混淆的PowerShell代码进行拼接和格式化处理。
4.根据权利要求2所述的方法,其特征在于,所述对所述命令参数进行正则化匹配处理的步骤,具体为:
利用\-[Ee^]{1,2}[NnCcOoDdEeMmAa^]+[A-Za-z0-9+/=]{5,}对所述命令参数进行正则化匹配。
5.根据权利要求4所述的方法,其特征在于,所述对所述命令参数进行正则化匹配处理的步骤之后,还包括:
若匹配到-EncodeCommand命令,则保留-EncodeCommand命令后面的有效参数字段;相应地,
所述分析所述初步去混淆的PowerShell代码的混淆特征,并根据所述混淆特征对所述初步去混淆的PowerShell代码进行解混淆,获取原始PowerShell代码的步骤,具体为:
对所述有效参数字段进行base64位解码,并去除\0X00和空格的混淆,获得解码后的PowerShell代码;
若所述解码后的PowerShell代码中包含Split函数,则根据所述Split函数的功能对所述解码后的PowerShell代码进行处理;和/或,若所述解码后的PowerShell代码中包含ASCII编码,则对所述ASCII编码进行解码;
对剩余部分的有效参数字段进行拼接和格式化处理。
6.一种PowerShell代码的去混淆装置,其特征在于,包括:
预处理模块,用于提供目标Office文档自动运行的虚拟环境;
动态解混淆模块,用于利用Hook机制从所述目标Office文档内混淆过的代码中提取出初步去混淆的PowerShell代码;
静态解混淆模块,用于分析所述初步去混淆的PowerShell代码的混淆特征,并根据所述混淆特征对所述初步去混淆的PowerShell代码进行解混淆,获取原始PowerShell代码。
7.根据权利要求6所述的装置,其特征在于,所述动态解混淆模块具体包括:
监控子模块,用于利用Hook机制监控所述目标Office文档运行时的PowerShell.exe进程和cmd.exe进程,获取命令参数;
正则匹配子模块,用于对所述命令参数进行正则化匹配处理,获得初步去混淆的PowerShell代码。
8.根据权利要求6所述的装置,其特征在于,所述静态解混淆模块具体用于:
判断所述初步去混淆的PowerShell代码中是否包含Split函数或ASCII编码;
若所述初步去混淆的PowerShell代码中包含Split函数,则根据所述Split函数的功能对所述初步去混淆的PowerShell代码进行处理;和/或,若所述初步去混淆的PowerShell代码中包含ASCII编码,则对所述ASCII编码进行解码;
对剩余部分的初步去混淆的PowerShell代码进行拼接和格式化处理。
9.一种PowerShell代码的去混淆设备,其特征在于,包括:
至少一个处理器;以及
与所述处理器通信连接的至少一个存储器,其中:
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1至5任一所述的方法。
10.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如权利要求1至5任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810531207.XA CN108804921A (zh) | 2018-05-29 | 2018-05-29 | 一种PowerShell代码的去混淆方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810531207.XA CN108804921A (zh) | 2018-05-29 | 2018-05-29 | 一种PowerShell代码的去混淆方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108804921A true CN108804921A (zh) | 2018-11-13 |
Family
ID=64090742
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810531207.XA Pending CN108804921A (zh) | 2018-05-29 | 2018-05-29 | 一种PowerShell代码的去混淆方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108804921A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110007923A (zh) * | 2019-03-28 | 2019-07-12 | 深圳市创联时代科技有限公司 | 一种shell的实现方法 |
CN110362996A (zh) * | 2019-06-03 | 2019-10-22 | 中国科学院信息工程研究所 | 一种离线检测PowerShell恶意软件的方法与系统 |
CN111368303A (zh) * | 2020-03-12 | 2020-07-03 | 深信服科技股份有限公司 | 一种PowerShell恶意脚本的检测方法及装置 |
CN111881047A (zh) * | 2020-07-30 | 2020-11-03 | 山石网科通信技术股份有限公司 | 混淆脚本的处理方法及装置 |
CN112084498A (zh) * | 2020-09-11 | 2020-12-15 | 北京天融信网络安全技术有限公司 | 数据反混淆方法、装置、设备及存储介质 |
CN112613034A (zh) * | 2020-12-18 | 2021-04-06 | 北京中科网威信息技术有限公司 | 恶意文档检测方法及系统、电子设备及存储介质 |
CN116305131A (zh) * | 2023-05-20 | 2023-06-23 | 北京长亭科技有限公司 | 脚本静态去混淆方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106372507A (zh) * | 2016-08-30 | 2017-02-01 | 北京奇虎科技有限公司 | 恶意文档的检测方法及装置 |
CN106909843A (zh) * | 2015-12-22 | 2017-06-30 | 北京奇虎科技有限公司 | 一种计算机病毒的检测方法及装置 |
CN107025407A (zh) * | 2017-03-22 | 2017-08-08 | 国家计算机网络与信息安全管理中心 | 一种office文档文件的恶意代码检测方法及系统 |
CN107659570A (zh) * | 2017-09-29 | 2018-02-02 | 杭州安恒信息技术有限公司 | 基于机器学习与动静态分析的Webshell检测方法及系统 |
-
2018
- 2018-05-29 CN CN201810531207.XA patent/CN108804921A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106909843A (zh) * | 2015-12-22 | 2017-06-30 | 北京奇虎科技有限公司 | 一种计算机病毒的检测方法及装置 |
CN106372507A (zh) * | 2016-08-30 | 2017-02-01 | 北京奇虎科技有限公司 | 恶意文档的检测方法及装置 |
CN107025407A (zh) * | 2017-03-22 | 2017-08-08 | 国家计算机网络与信息安全管理中心 | 一种office文档文件的恶意代码检测方法及系统 |
CN107659570A (zh) * | 2017-09-29 | 2018-02-02 | 杭州安恒信息技术有限公司 | 基于机器学习与动静态分析的Webshell检测方法及系统 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110007923A (zh) * | 2019-03-28 | 2019-07-12 | 深圳市创联时代科技有限公司 | 一种shell的实现方法 |
CN110007923B (zh) * | 2019-03-28 | 2022-12-06 | 深圳市创联时代科技有限公司 | 一种shell的实现方法 |
CN110362996A (zh) * | 2019-06-03 | 2019-10-22 | 中国科学院信息工程研究所 | 一种离线检测PowerShell恶意软件的方法与系统 |
CN111368303A (zh) * | 2020-03-12 | 2020-07-03 | 深信服科技股份有限公司 | 一种PowerShell恶意脚本的检测方法及装置 |
CN111368303B (zh) * | 2020-03-12 | 2023-12-29 | 深信服科技股份有限公司 | 一种PowerShell恶意脚本的检测方法及装置 |
CN111881047A (zh) * | 2020-07-30 | 2020-11-03 | 山石网科通信技术股份有限公司 | 混淆脚本的处理方法及装置 |
CN111881047B (zh) * | 2020-07-30 | 2022-09-06 | 山石网科通信技术股份有限公司 | 混淆脚本的处理方法及装置 |
CN112084498A (zh) * | 2020-09-11 | 2020-12-15 | 北京天融信网络安全技术有限公司 | 数据反混淆方法、装置、设备及存储介质 |
CN112084498B (zh) * | 2020-09-11 | 2024-03-12 | 北京天融信网络安全技术有限公司 | 数据反混淆方法、装置、设备及存储介质 |
CN112613034A (zh) * | 2020-12-18 | 2021-04-06 | 北京中科网威信息技术有限公司 | 恶意文档检测方法及系统、电子设备及存储介质 |
CN116305131A (zh) * | 2023-05-20 | 2023-06-23 | 北京长亭科技有限公司 | 脚本静态去混淆方法及系统 |
CN116305131B (zh) * | 2023-05-20 | 2023-08-11 | 北京长亭科技有限公司 | 脚本静态去混淆方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108804921A (zh) | 一种PowerShell代码的去混淆方法及装置 | |
CN102047260B (zh) | 用于集中式恶意软件检测的智能散列 | |
CN111931166B (zh) | 基于代码注入和行为分析的应用程序防攻击方法和系统 | |
CN108985064B (zh) | 一种识别恶意文档的方法及装置 | |
CN103780614B (zh) | 一种基于模拟攻击扩展的sql注入漏洞挖掘方法 | |
CN110795732A (zh) | 基于SVM的Android移动网络终端恶意代码的动静结合检测方法 | |
CN103679030B (zh) | 一种基于动态语义特征的恶意代码分析检测方法 | |
CN110362996B (zh) | 一种离线检测PowerShell恶意软件的方法与系统 | |
Zhu et al. | Android malware detection based on multi-head squeeze-and-excitation residual network | |
CN112528284A (zh) | 恶意程序的检测方法及装置、存储介质、电子设备 | |
CN109033839A (zh) | 一种基于动态多特征的恶意软件检测方法 | |
CN104080058A (zh) | 信息处理方法及装置 | |
CN114090406A (zh) | 电力物联网设备行为安全检测方法、系统、设备及存储介质 | |
CN109800569A (zh) | 程序鉴别方法及装置 | |
CN113067792A (zh) | 一种xss攻击识别方法、装置、设备及介质 | |
CN108229168B (zh) | 一种嵌套类文件的启发式检测方法、系统及存储介质 | |
CN112003835B (zh) | 安全威胁的检测方法、装置、计算机设备和存储介质 | |
Zhang et al. | A new semantics-based android malware detection | |
CN111049828A (zh) | 网络攻击检测及响应方法及系统 | |
CN102222179A (zh) | 一种基于Windows内核的反键盘记录技术 | |
CN111881047B (zh) | 混淆脚本的处理方法及装置 | |
CN113420293A (zh) | 一种基于深度学习的安卓恶意应用检测方法及系统 | |
CN112464224A (zh) | 一种基于Powershell脚本的去混淆方法 | |
CN114491528A (zh) | 恶意软件的检测方法、装置和设备 | |
CN114169540A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20181113 |
|
RJ01 | Rejection of invention patent application after publication |