CN111368303A - 一种PowerShell恶意脚本的检测方法及装置 - Google Patents

一种PowerShell恶意脚本的检测方法及装置 Download PDF

Info

Publication number
CN111368303A
CN111368303A CN202010170489.2A CN202010170489A CN111368303A CN 111368303 A CN111368303 A CN 111368303A CN 202010170489 A CN202010170489 A CN 202010170489A CN 111368303 A CN111368303 A CN 111368303A
Authority
CN
China
Prior art keywords
script
powershell
command
character
character string
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.)
Granted
Application number
CN202010170489.2A
Other languages
English (en)
Other versions
CN111368303B (zh
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.)
Sangfor Technologies Co Ltd
Original Assignee
Sangfor Technologies 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 Sangfor Technologies Co Ltd filed Critical Sangfor Technologies Co Ltd
Priority to CN202010170489.2A priority Critical patent/CN111368303B/zh
Publication of CN111368303A publication Critical patent/CN111368303A/zh
Application granted granted Critical
Publication of CN111368303B publication Critical patent/CN111368303B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请公开了一种PowerShell恶意脚本的检测方法,所述检测方法包括确定待检测PowerShell脚本中的脚本执行命令;将脚本执行命令替换为输出命令得到目标PowerShell脚本;通过执行所述目标PowerShell脚本输出目标脚本代码,并对所述目标脚本代码执行恶意脚本检测操作。本方法能够提高对PowerShell恶意脚本的检测准确率。本申请还公开了一种PowerShell恶意脚本的检测装置、一种电子设备及一种存储介质,具有以上有益效果。

Description

一种PowerShell恶意脚本的检测方法及装置
技术领域
本申请涉及网络安全技术领域,特别涉及一种PowerShell恶意脚本的检测方法、装置、一种电子设备及一种存储介质。
背景技术
PowerShell是一种命令行工具,黑客可以利用PowerShell恶意脚本对计算即设备进行攻击。随着越来越多的杀毒软件增强了对PowerShell恶意脚本的检测查杀,黑客开始使用各种各样的方式对PowerShell恶意脚本进行混淆,以降低PowerShell恶意脚本被查杀的机率,阻止杀毒软件和安全人员对其进行检测分析。
相关技术中,通常基于代码即时翻译的方式实现对于PowerShell的自动化反混淆,例如:识别到“+”则将两端的字符串进行拼接,识别到“replace”则替换字符串。但是,上述相关技术中的反混淆方法只能对已知的混淆方式进行翻译,一旦黑客使用其他混淆方式就无法对PowerShell脚本进行解析,因此基于代码即时翻译的反混淆方法的检测准确率较低。
因此,如何提高PowerShell恶意脚本的检测准确率是本领域技术人员目前需要解决的技术问题。
发明内容
本申请的目的是提供一种PowerShell恶意脚本的检测方法、装置、一种电子设备及一种存储介质,能够提高对PowerShell恶意脚本的检测准确率。
为解决上述技术问题,本申请提供一种PowerShell恶意脚本的检测方法,该检测方法包括:
确定待检测PowerShell脚本中的脚本执行命令;
将所述脚本执行命令替换为输出命令得到目标PowerShell脚本;
通过执行所述目标PowerShell脚本输出目标脚本代码,并对所述目标脚本代码执行恶意脚本检测操作。
可选的,确定待检测PowerShell脚本中的脚本执行命令包括:
利用第一特征库中的正则表达式确定所述待检测PowerShell脚本中的脚本执行命令;
其中,所述第一特征库中的正则表达式包括大小写混淆正则表达式和/或全拼混淆正则表达式。
可选的,所述第一特征库中的正则表达式的生成过程包括:
获取所述脚本执行命令对应的所有字符大小写组合的命令简写字符串,根据所述命令简写字符串生成所述大小写混淆正则表达式;
和/或,获取所述脚本执行命令对应的所有字符大小写组合的命令全拼字符串,根据所述命令全拼字符串生成所述全拼混淆正则表达式。
可选的,确定待检测PowerShell脚本中的脚本执行命令包括:
利用第二特征库中确定所述待检测PowerShell脚本中的脚本执行命令;
其中,所述第二特征库包括字符拼接混淆样本字符串和/或字符拼接混淆正则表达式。
可选的,构建所述第二特征库的过程包括:
确定样本PowerShell恶意脚本中长度小于预设长度的待检字符串样本;其中,所述待检字符串样本为同一括号内的全部字符串;
利用所述输出命令模拟执行所述待检字符串得到输出结果;
若所述输出结果为所述脚本执行命令对应的字符串,则判定所述待检字符串为字符拼接混淆样本字符串,并将所述字符拼接混淆样本字符串添加至所述第二特征库。
可选的,构建所述第二特征库的过程包括:
根据所述第二特征库中字符串相似度对所述字符拼接混淆样本字符串执行聚类操作得到字符串集合;
判断所述字符串集合中的字符串数量是否大于预设值;
若否,则生成所述字符串集合中的字符拼接混淆样本字符串对应的字符拼接混淆正则表达式,并将所述字符拼接混淆正则表达式添加至所述第二特征库。
可选的,在确定待检测PowerShell脚本中的脚本执行命令之后,还包括:
利用所述输出命令模拟执行所述脚本执行命令对应的字符串,得到校验结果;
若所述校验结果为预设结果,则判定校验通过;其中,所述预设结果为标准脚本执行命令对应的字符串;
若所述校验结果不为预设结果,则判定校验不通过,并移除检测到所述脚本执行命令的正则表达式。
可选的,所述确定待检测PowerShell脚本中的脚本执行命令包括:
确定所述待检测PowerShell脚本中长度小于预设长度的待检字符串;其中,所述待检字符串为同一括号内的全部字符串;
利用所述输出命令模拟执行所述待检字符串得到输出结果;
若所述输出结果为所述脚本执行命令对应的字符串,则判定检测到所述脚本执行命令,并对所述脚本执行命令对应的字符串添加标记;
相应的,将所述脚本执行命令替换为输出命令得到目标PowerShell脚本包括:
将添加有所述标记的字符串替换为所述输出命令对应的字符串得到所述目标PowerShell脚本。
可选的,所述通过执行所述目标PowerShell脚本输出目标脚本代码包括:
利用所述目标PowerShell脚本的语法解释器解析所述目标PowerShell脚本得到所述目标脚本代码,并通过执行所述输出命令输出所述目标脚本代码。
本申请还提供了一种PowerShell恶意脚本的检测装置,该装置包括:
iex命令确定模块,用于确定待检测PowerShell脚本中的脚本执行命令;
命令替换模块,用于将所述脚本执行命令替换为输出命令得到目标PowerShell脚本;
代码输出模块,用于通过执行所述目标PowerShell脚本输出目标脚本代码,并对所述目标脚本代码执行恶意脚本检测操作。
本申请还提供了一种存储介质,其上存储有计算机程序,所述计算机程序执行时实现上述PowerShell恶意脚本的检测方法执行的步骤。
本申请还提供了一种电子设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器调用所述存储器中的计算机程序时实现上述PowerShell恶意脚本的检测方法执行的步骤。
本申请提供了一种PowerShell恶意脚本的检测方法,包括确定待检测PowerShell脚本中的脚本执行命令;将所述脚本执行命令替换为输出命令得到目标PowerShell脚本;通过执行所述目标PowerShell脚本输出目标脚本代码,并对所述目标脚本代码执行恶意脚本检测操作。
本申请PowerShell恶意脚本中的核心恶意代码需要配合脚本执行命令才能实现,因此本申请确定待检测PowerShell脚本中的脚本执行命令,并将脚本执行命令替换为输出命令得到目标脚本。在执行目标脚本时,替换好的输出命令能对目标PowerShell脚本的目标脚本代码进行输出打印。目标脚本代码为经过语法解释器解析后的代码,本申请输出的目标脚本代码已经转换了混淆符且逻辑清晰,可以根据目标脚本代码判断待检测PowerShell脚本是否为PowerShell恶意脚本。本申请的PowerShell恶意脚本检测方法,通过将脚本执行命令替换为输出命令实现对于代码的反混淆,无需依赖对于已知混淆方式的学习,能够提高对PowerShell恶意脚本的检测准确率。本申请同时还提供了一种PowerShell恶意脚本的检测装置、一种电子设备和一种存储介质,具有上述有益效果,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例所提供的一种PowerShell恶意脚本的检测方法的流程图;
图2为本申请实施例所提供的一种字符拼接混淆样本字符串的生成方法的流程图;
图3为本申请实施例所提供的一种字符拼接混淆正则表达式的生成方法的流程图;
图4为本申请实施例所提供的一种替换脚本执行命令的方法的流程图;
图5为本申请实施例所提供的一种PowerShell恶意脚本的检测装置的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
下面请参见图1,图1为本申请实施例所提供的一种PowerShell恶意脚本的检测方法的流程图。
具体步骤可以包括:
S101:确定待检测PowerShell脚本中的脚本执行命令;
其中,本实施例可以应用于防火墙、交换机、等保一体机等网络安全监测装置,可以对其他计算机设备中的PowerShell脚本进行检测,也可以对其他装置发送的PowerShell脚本进行检测。在得到待检测PowerShell脚本之后,本实施例可以确定待检测PowerShell脚本中的脚本执行命令。脚本执行命令可以为Invoke-Expression命令,又称iex命令。Invoke-Expression命令为PowerShell脚本中的执行命令,用于执行一段PowerShell字符串。若待检测PowerShell脚本为PowerShell恶意脚本,那么该恶意脚本的核心恶意代码需要通过对应的Invoke-Expression命令执行。
具体的,本实施例中可以确定Invoke-Expression命令对应的字符串在PowerShell脚本中的位置信息,可以基于正则表达式确定Invoke-Expression命令对应的字符串。当然,本实施例还可以基于训练后的机器学习模型对待检测PowerShell脚本中的Invoke-Expression命令进行检测。训练机器学习模型的过程可以为,将样本PowerShell脚本的Invoke-Expression命令对应的字符串作为正样本,将样本PowerShell脚本中除了Invoke-Expression命令之外的其他字符串作为负样本,利用上述正样本和负样本训练后的机器学习模型具有识别能力。
S102:将脚本执行命令替换为输出命令得到目标PowerShell脚本;
其中,本步骤在已经确定了待检测PowerShell脚本中的脚本执行命令的基础上,将待检测PowerShell脚本中脚本执行命令替换为输出命令得到目标PowerShell脚本。在执行待检测PowerShell脚本时,脚本执行命令可以执行待检测PowerShell脚本的目标脚本代码;在执行目标PowerShell脚本时,输出命令可以将目标PowerShell脚本中的目标脚本代码进行输出打印。具体的,本实施例中提到的输出命令可以为write-host命令。
本步骤将脚本中的脚本执行命令替换成write-host命令,write-host命令的功能是打印字符串,在替换后write-host命令可以将语法解释器解析后的代码打印出来,进而实现反混淆。
S103:通过执行目标PowerShell脚本输出目标脚本代码,并对目标脚本代码执行恶意脚本检测操作。
其中,目标PowerShell脚本中可以存在语法解释器,目标PowerShell脚本的语法解释器可以对目标PowerShell脚本中已混淆的代码进行解释得到转换混淆符且逻辑清晰的目标脚本代码。若执行未替换脚本执行命令的待检测PowerShell脚本时,具体过程如下:利用语法解释器对于待检测PowerShell脚本中已混淆的代码进行解析得到目标脚本代码,再利用脚本执行命令执行目标脚本代码。因此在执行目标脚本代码时先利用语法解释器对于待检测PowerShell脚本中已混淆的代码进行解析得到目标脚本代码,利用输出命令将目标脚本代码进行输出,即得到反混淆后的脚本代码。由于目标脚本代码已转换混淆符且逻辑清晰,因此对目标脚本代码执行恶意脚本检测操作可以判断待检测PowerShell脚本是否为待检测PowerShell恶意脚本。
作为一种可行的实施方式,本实施例可以提取目标脚本代码中的特征信息,将特征信息与特征库中的已知恶意代码特征进行比对,若相似度大于预设值则判定待检测PowerShell脚本为PowerShell恶意脚本,若相似度小于或等于预设值则判定待检测PowerShell脚本不为PowerShell恶意脚本。作为另一种可行的实施方式,还可以在沙盒中运行目标脚本代码,根据运行结果判断待检测PowerShell脚本是否为PowerShell恶意脚本。当然,本实施例也可以通过用于检测PowerShell恶意脚本代码的机器学习模型对目标脚本代码进项检测,根据检测结果判断待检测PowerShell脚本是否为PowerShell恶意脚本。
本实施例PowerShell恶意脚本中的核心恶意代码需要配合Invoke-Expression命令才能实现,因此本实施例确定待检测PowerShell脚本中的脚本执行命令,并将脚本执行命令替换为输出命令得到目标脚本。在执行目标脚本时,替换好的输出命令能对目标PowerShell脚本的目标脚本代码进行输出打印。目标脚本代码为经过语法解释器解析后的代码,本实施例输出的目标脚本代码已经转换了混淆符且逻辑清晰,可以根据目标脚本代码判断待检测PowerShell脚本是否为PowerShell恶意脚本。本实施例的PowerShell恶意脚本检测方法,通过将脚本执行命令替换为输出命令实现对于代码的反混淆,无需依赖对于已知混淆方式的学习,能够提高对PowerShell恶意脚本的检测准确率。
作为对于图1对应实施例的进一步介绍,可以通过以下方法确定待检测PowerShell脚本中的脚本执行命令:利用第一特征库中的正则表达式确定待检测PowerShell脚本中的脚本执行命令;其中,第一特征库中的正则表达式包括大小写混淆正则表达式和/或全拼混淆正则表达式。即,在上述实施方式中可以利用大小写混淆正则表达式检测确定待检测PowerShell脚本中的Invoke-Expression命令,可以利用全拼混淆正则表达式检测确定待检测PowerShell脚本中的脚本执行命令,还可以利用大小写混淆正则表达式和全拼混淆正则表达式检测确定待检测PowerShell脚本中的脚本执行命令。
具体的,大小写混淆正则表达式的生成方法如下:获取脚本执行命令对应的所有字符大小写组合的命令简写字符串,根据命令简写字符串生成大小写混淆正则表达式。脚本执行命令为Invoke-Expression命令时,上述脚本执行命令对应的所有字符大小写组合的命令简写字符串可以包括“iex”、“Iex”、“iEx”、“ieX”、“IEx”、“IeX”、“iEX”和“IEX”中的任一项或任几项组合,可以根据所有的命令简写字符串生成大小写混淆正则表达式。例如“iEx”对应的大小写混淆正则表达式可以为re.search(r"iex",re.M|re.I)。
进一步的,全拼混淆正则表达式的生成方法如下:获取脚本执行命令对应的所有字符大小写组合的命令全拼字符串,根据命令全拼字符串生成全拼混淆正则表达式。脚本执行命令为Invoke-Expression命令时,脚本执行命令对应的所有字符大小写组合的命令全拼字符串可以包括“Invoke-Expression”等216个(“invoke-expression”中16个字母所有大小写的组合)中的任一项或任几项的组合,可以根据所有的命令全拼字符串生成全拼混淆正则表达式。例如“Invoke-Expression”对应的全拼混淆正则表达式可以为re.search(r"invoke-expression",re.M|re.I)。
作为对于图1对应实施例的进一步介绍,还可以通过以下方法确定待检测PowerShell脚本中的脚本执行命令:利用第二特征库中确定待检测PowerShell脚本中的脚本执行命令;其中,第二特征库包括字符拼接混淆样本字符串和/或字符拼接混淆正则表达式。即,在上述实施方式中可以利用字符拼接混淆样本字符串检测确定待检测PowerShell脚本中的脚本执行命令,可以利用字符拼接混淆正则表达式检测确定待检测PowerShell脚本中的Invoke-Expression命令,还可以利用字符拼接混淆样本字符串和字符拼接混淆正则表达式检测确定待检测PowerShell脚本中的脚本执行命令。举例说明脚本执行命令为Invoke-Expression命令时,PowerShell脚本中字符拼接混淆脚本执行命令的方式:
$PsHOmE[21]+$PShOMe[30]+'X'
'i'+'e'+(Get-vaRiABlE'MaximumAliasCount').name[2]
(Get-vaRiABlE'*mDR*').nAME[3,11,2]-jOIN”
'In`vo`ke'+'-'+'exPr`esS`ion'
以上字符拼接后就是iex字符串。
请参见图2,图2为本申请实施例所提供的一种字符拼接混淆样本字符串的生成方法的流程图,本实施例是对上述利用字符拼接混淆样本字符串检测确定待检测PowerShell脚本中的脚本执行命令的进一步介绍,可以将本实施例与上述实施方式相结合得到进一步的实施方式,本实施例可以包括以下步骤:
S201:确定样本PowerShell恶意脚本中长度小于预设长度的待检字符串样本;
S202:利用输出命令模拟执行待检字符串得到输出结果;
S203:判断输出结果是否为脚本执行命令对应的字符串,若是,则进入S204;若否,则结束流程;
S204:判定待检字符串为字符拼接混淆样本字符串,并将字符拼接混淆样本字符串添加至第二特征库。
在上述实施例中,样本PowerShell恶意脚本为已经确定为PowerShell恶意脚本的样本,由于脚本执行命令的字符串长度通常小于核心恶意代码的字符串长度,因此可以通过字符串长度进行初步筛选,将样本PowerShell恶意脚本中长度小于预设长度的待检字符串样本;作为一种可行的实施方式此处的预设长度可以为50个字节。可以理解的是,在样本PowerShell恶意脚本中脚本执行命令对应的字符串处于同一个括号内,因此本实施例中所提到的待检字符串样本为同一括号内的全部字符串。
在确定长度小于预设长度的待检字符串样本后,本实施例可以利用输出命令模拟执行待检字符串得到输出结果。模拟执行待检字符串的过程可以包括:利用语法解释器对待检字符串进行解析得到解析结果,并利用输出命令输出该解析结果,即得到输出结果。本实施例可以根据预设字符串集合判断输出结果是否为脚本执行命令对应的字符串,当脚本执行命令为Invoke-Expression命令时,字符串集合中可以包括Invoke-Expression命令对应的所有字符大小写组合的命令简写字符串(如“iex”、“Iex”、“iEx”、“ieX”等),以及Invoke-Expression命令对应的所有字符大小写组合的命令全拼字符串(如“Invoke-Expression”、“invoke-expression”等)。若输出结果为Invoke-Expression命令对应的字符串则判定待检字符串为字符拼接混淆样本字符串,并将字符拼接混淆样本字符串添加至第二特征库,以便完成第二特征库的构建。
请参见图3,图3为本申请实施例所提供的一种字符拼接混淆正则表达式的生成方法的流程图,本实施例是对上述利用字符拼接混淆正则表达式检测确定待检测PowerShell脚本中的脚本执行命令的进一步介绍,本实施例建立在已经得到字符拼接混淆样本字符串的基础上,可以将本实施例与上述实施方式相结合得到进一步的实施方式,本实施例可以包括以下步骤:
S301:根据第二特征库中字符串相似度对字符拼接混淆样本字符串执行聚类操作得到字符串集合。
S302:判断字符串集合中的字符串数量是否大于预设值;若否,则进入S303;若是,则结束流程。
S303:生成字符串集合中的字符拼接混淆样本字符串对应的字符拼接混淆正则表达式。
S304:将字符拼接混淆正则表达式添加至第二特征库。
其中,字符拼接混淆的脚本执行命令存在无数种,由于字符拼接混淆样本字符串的数量会不断变得很大,所以将会造成第二特征库冗余。为了精简第二特征库,本实施例可以根据第二特征库中字符拼接混淆样本字符串之间的字符串相似度进行聚类得到字符串集合,在同一字符串集合中的任意两个字符串的相似度大于预设相似度。如果字符串集合中的字符串数量大于预设值(该预设值可以为2),则可以为该字符串集合生成对应的字符拼接混淆正则表达式,将字符拼接混淆正则表达式添加至第二特征库。当然,在将字符拼接混淆正则表达式添加至第二特征库可以删除对应的字符拼接混淆样本字符串。上述方式提供了基于字符拼接混淆样本字符串生成字符拼接混淆正则表达式的方法,能够提高识别脚本执行命令的准确率。作为一种可行的实施方式,本实施例还可以通过自学习的方式将多条特征字符串整合成一条正则表达式,以精简特征库的大小。例如每当特征库新增字符串1
“$PsHOmE[21]+$PShOMe[30]+'X'”,就会将字符串1与已有字符串2
“$vERBOSEprefeRENCE.TOstRInG()[1]+$vERBOSEprefeRENCE.TOstRInG()[3]+'x'”进行相似性匹配,若有10个以上特殊字符相同且顺序一样,则自动生成非贪婪式正则表达式“-->\$.+\[.+\].*\+.*\$.+\[.*\].*\+\'.+\'”,生成正则表达式后,将原有的字符串1和字符串2从第二特征库中删除:
具体的,在确定待检测PowerShell脚本中的脚本执行命令之后,还可以利用所述输出命令模拟执行所述脚本执行命令对应的字符串,得到校验结果;若所述校验结果为预设结果,则判定校验通过;其中,所述预设结果为标准脚本执行命令对应的字符串;若所述校验结果不为预设结果,则判定校验不通过,并移除检测到所述脚本执行命令的正则表达式。当然,若使用大小写混淆正则表达式,和/或全拼混淆正则表达式,和/或字符拼接混淆正则表达式有可能会有误报的情况,每次使用正则表达式匹配到的疑似混淆iex,都可以使用write-host进行模拟执行,检验结果若为iex或invoke-expression再进行后续操作,若不是,则说明该正则表达式不精确,可以将该正则表达式移出第一特征库或第二特征库。
请参见图4,图4为本申请实施例所提供的一种替换脚本执行命令的方法的流程图,本实施例描述了当脚本执行命令为Invoke-Expression命令时的脚本执行命令替换方法,可以将本实施例与图1对应的实施例相结合得到进一步的实施方式,本实施例可以包括以下步骤:
S401:确定待检测PowerShell脚本中长度小于预设长度的待检字符串;其中,待检字符串为同一括号内的全部字符串;
S402:利用输出命令模拟执行待检字符串得到输出结果;
其中,本步骤可以对匹配到的字符串使用write-host命令进行拼接并执行,若结果为iex或Invoke-Expression则说明这个字符串是字符拼接混淆的Invoke-Expression命令。进一步的,本实施例通过模拟执行的方式识别混淆的Invoke-Expression命令后,可以自动提取对应正则表达式,以便在后续检测过程中利用正则表达式进行检测。
S403:若输出结果为Invoke-Expression命令对应的字符串,则判定检测到Invoke-Expression命令,并对Invoke-Expression命令对应的字符串添加标记;
其中,检测成功后,将Invoke-Expression命令对应的字符串加入第三特征库,当下次扫描字符拼接混淆时,可以优先使用第三特征库的特征字符串进行匹配,这样可以大大提升检测效率。
S404:将添加有标记的字符串替换为输出命令对应的字符串得到目标PowerShell脚本。
由于Invoke-Expression命令的字符串长度通常较小,因此可以通过字符串长度进行初步筛选,利用输出命令模拟执行待检字符串得到输出结果,如果数据结果为Invoke-Expression命令对应的字符串就对相应的字符添加标记,在进行替换操作时根据预先添加的标记将Invoke-Expression命令对应的字符串替换为输出命令对应的字符串。本实施例通过自学习的方式检测PowerShell混淆脚本中的Invoke-Expression命令之后,可以将Invoke-Expression命令替换为输出命令,在脚本执行核心恶意代码前/自解密后自动拦截,从而得到PowerShell反混淆后的恶意代码。该方法对目前所有混淆脚本都适用,解决了业界方法无法反混淆新型PowerShell恶意脚本的问题。
若将上述实施例相结合可以得到进一步的实施方式:首先可以读取PowerShell脚本的脚本内容,使用特征库里的特征字符串(如正则表达式)扫描样本是否存在混淆iex命令,若存在混淆iex命令且模拟执行检验成功,则将该混淆iex命令替换为write-host,并执行脚本内容。若未扫描到混淆iex命令,则采用模拟执行的方式来动态检测字符拼接混淆的iex,并将检测到的混淆iex加入特征库,将混淆iex命令替换为write-host指令以便输出目标脚本代码。可以重复以上步骤直到不再检测到iex命令,最后对所有目标脚本代码执行恶意脚本检测操作。采用模拟执行的方式来动态检测字符拼接混淆的iex的过程如下:首先搜索遍历脚本中在括号内且长度小于50的字符串,将匹配到的字符串使用write-host命令进行拼接并执行,若结果为iex或Invoke-Expression,则说明这个字符串是字符拼接混淆的iex,即成功检测到Invoke-Expression命令。本实施例提供了一种PowerShell恶意脚本反混淆方案,通过动态解混淆的方式,还原出混淆前的原始PowerShell恶意脚本,方便杀毒软件、安全人员对其进行分析,还能够自动提取特征并解析最新的PowerShell混淆方式。
请参见图5,图5为本申请实施例所提供的一种PowerShell恶意脚本的检测装置的结构示意图;
该装置可以包括:
iex命令确定模块100,用于确定待检测PowerShell脚本中的Invoke-Expression命令;
命令替换模块200,用于将所述脚本执行命令替换为输出命令得到目标PowerShell脚本;
代码输出模块300,用于通过执行所述目标PowerShell脚本输出目标脚本代码,并对所述目标脚本代码执行恶意脚本检测操作。
本实施例PowerShell恶意脚本中的核心恶意代码需要配合脚本执行命令才能实现,因此本实施例确定待检测PowerShell脚本中的脚本执行命令,并将脚本执行命令替换为输出命令得到目标脚本。在执行目标脚本时,替换好的输出命令能对目标PowerShell脚本的目标脚本代码进行输出打印。目标脚本代码为经过语法解释器解析后的代码,本实施例输出的目标脚本代码已经转换了混淆符且逻辑清晰,可以根据目标脚本代码判断待检测PowerShell脚本是否为PowerShell恶意脚本。本实施例的PowerShell恶意脚本检测方法,通过将脚本执行命令替换为输出命令实现对于代码的反混淆,无需依赖对于已知混淆方式的学习,能够提高对PowerShell恶意脚本的检测准确率。
进一步的,iex命令确定模块100包括:
第一命令确定单元,用于利用第一特征库中的正则表达式确定所述待检测PowerShell脚本中的脚本执行命令;
其中,所述第一特征库中的正则表达式包括大小写混淆正则表达式和/或全拼混淆正则表达式。
进一步的,还包括:
第一正则表达式生成单元,用于获取所述脚本执行命令对应的所有字符大小写组合的命令简写字符串,根据所述命令简写字符串生成所述大小写混淆正则表达式;
和/或,第二正则表达式生成单元,用于获取所述脚本执行命令对应的所有字符大小写组合的命令全拼字符串,根据所述命令全拼字符串生成所述全拼混淆正则表达式。
进一步的,iex命令确定模块100包括:
第二命令确定单元,用于利用第二特征库中确定所述待检测PowerShell脚本中的脚本执行命令;
其中,所述第二特征库包括字符拼接混淆样本字符串和/或字符拼接混淆正则表达式。
进一步的,还包括:
样本确定单元,用于确定样本PowerShell恶意脚本中长度小于预设长度的待检字符串样本;其中,所述待检字符串样本为同一括号内的全部字符串;
模拟执行单元,用于利用所述输出命令模拟执行所述待检字符串得到输出结果;
字符串添加单元,用于若所述输出结果为所述脚本执行命令对应的字符串,则判定所述待检字符串为字符拼接混淆样本字符串,并将所述字符拼接混淆样本字符串添加至所述第二特征库。
进一步的,还包括:
聚类单元,用于根据所述第二特征库中字符串相似度对所述字符拼接混淆样本字符串执行聚类操作得到字符串集合;
判断单元,用于判断所述字符串集合中的字符串数量是否大于预设值;若否,则生成所述字符串集合中的字符拼接混淆样本字符串对应的字符拼接混淆正则表达式,并将所述字符拼接混淆正则表达式添加至所述第二特征库。
进一步的,还包括:
校验模块,用于在确定待检测PowerShell脚本中的脚本执行命令之后,利用所述输出命令模拟执行所述脚本执行命令对应的字符串,得到校验结果;若所述校验结果为预设结果,则判定校验通过;其中,所述预设结果为标准脚本执行命令对应的字符串;若所述校验结果不为预设结果,则判定校验不通过,并移除检测到所述脚本执行命令的正则表达式。
进一步的,iex命令确定模块100包括:
待检字符串确定单元,用于确定所述待检测PowerShell脚本中长度小于预设长度的待检字符串;其中,所述待检字符串为同一括号内的全部字符串;
标记单元,用于利用所述输出命令模拟执行所述待检字符串得到输出结果;还用于若所述输出结果为所述脚本执行命令对应的字符串,则判定检测到所述Invoke-Expression命令,并对所述脚本执行命令对应的字符串添加标记;
相应的,命令替换模块200为用于将添加有所述标记的字符串替换为所述输出命令对应的字符串得到所述目标PowerShell脚本的模块。
进一步的,代码输出模块300用于利用所述目标PowerShell脚本的语法解释器解析所述目标PowerShell脚本得到所述目标脚本代码,并通过执行所述输出命令输出所述目标脚本代码;还用于对所述目标脚本代码执行恶意脚本检测操作
由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
本申请还提供了一种存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请还提供了一种电子设备,可以包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时,可以实现上述实施例所提供的步骤。当然所述电子设备还可以包括各种网络接口,电源等组件。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的状况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

Claims (12)

1.一种PowerShell恶意脚本的检测方法,其特征在于,包括:
确定待检测PowerShell脚本中的脚本执行命令;
将所述脚本执行命令替换为输出命令得到目标PowerShell脚本;
通过执行所述目标PowerShell脚本输出目标脚本代码,并对所述目标脚本代码执行恶意脚本检测操作。
2.根据权利要求1所述检测方法,其特征在于,确定待检测PowerShell脚本中的脚本执行命令包括:
利用第一特征库中的正则表达式确定所述待检测PowerShell脚本中的脚本执行命令;
其中,所述第一特征库中的正则表达式包括大小写混淆正则表达式和/或全拼混淆正则表达式。
3.根据权利要求2所述检测方法,其特征在于,所述第一特征库中的正则表达式的生成过程包括:
获取所述脚本执行命令对应的所有字符大小写组合的命令简写字符串,根据所述命令简写字符串生成所述大小写混淆正则表达式;
和/或,获取所述脚本执行命令对应的所有字符大小写组合的命令全拼字符串,根据所述命令全拼字符串生成所述全拼混淆正则表达式。
4.根据权利要求1所述检测方法,其特征在于,确定待检测PowerShell脚本中的脚本执行命令包括:
利用第二特征库中确定所述待检测PowerShell脚本中的脚本执行命令;
其中,所述第二特征库包括字符拼接混淆样本字符串和/或字符拼接混淆正则表达式。
5.根据权利要求4所述检测方法,其特征在于,构建所述第二特征库的过程包括:
确定样本PowerShell恶意脚本中长度小于预设长度的待检字符串样本;其中,所述待检字符串样本为同一括号内的全部字符串;
利用所述输出命令模拟执行所述待检字符串得到输出结果;
若所述输出结果为所述脚本执行命令对应的字符串,则判定所述待检字符串为字符拼接混淆样本字符串,并将所述字符拼接混淆样本字符串添加至所述第二特征库。
6.根据权利要求4所述检测方法,其特征在于,构建所述第二特征库的过程包括:
根据所述第二特征库中字符串相似度对所述字符拼接混淆样本字符串执行聚类操作得到字符串集合;
判断所述字符串集合中的字符串数量是否大于预设值;
若否,则生成所述字符串集合中的字符拼接混淆样本字符串对应的字符拼接混淆正则表达式,并将所述字符拼接混淆正则表达式添加至所述第二特征库。
7.根据权利要求2至6任一项所述检测方法,其特征在于,在确定待检测PowerShell脚本中的脚本执行命令之后,还包括:
利用所述输出命令模拟执行所述脚本执行命令对应的字符串,得到校验结果;
若所述校验结果为预设结果,则判定校验通过;其中,所述预设结果为标准脚本执行命令对应的字符串;
若所述校验结果不为预设结果,则判定校验不通过,并移除检测到所述脚本执行命令的正则表达式。
8.根据权利要求1所述检测方法,其特征在于,所述确定待检测PowerShell脚本中的脚本执行命令包括:
确定所述待检测PowerShell脚本中长度小于预设长度的待检字符串;其中,所述待检字符串为同一括号内的全部字符串;
利用所述输出命令模拟执行所述待检字符串得到输出结果;
若所述输出结果为所述脚本执行命令对应的字符串,则判定检测到所述脚本执行命令,并对所述脚本执行命令对应的字符串添加标记;
相应的,将所述脚本执行命令替换为输出命令得到目标PowerShell脚本包括:
将添加有所述标记的字符串替换为所述输出命令对应的字符串得到所述目标PowerShell脚本。
9.根据权利要求1所述检测方法,其特征在于,所述通过执行所述目标PowerShell脚本输出目标脚本代码包括:
利用所述目标PowerShell脚本的语法解释器解析所述目标PowerShell脚本得到所述目标脚本代码,并通过执行所述输出命令输出所述目标脚本代码。
10.一种PowerShell恶意脚本的检测装置,其特征在于,包括:
iex命令确定模块,用于确定待检测PowerShell脚本中的脚本执行命令;
命令替换模块,用于将所述脚本执行命令替换为输出命令得到目标PowerShell脚本;
代码输出模块,用于通过执行所述目标PowerShell脚本输出目标脚本代码,并对所述目标脚本代码执行恶意脚本检测操作。
11.一种电子设备,其特征在于,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器调用所述存储器中的计算机程序时实现如权利要求1至9任一项所述PowerShell恶意脚本的检测方法的步骤。
12.一种存储介质,其特征在于,所述存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现如上权利要求1至9任一项所述PowerShell恶意脚本的检测方法的步骤。
CN202010170489.2A 2020-03-12 2020-03-12 一种PowerShell恶意脚本的检测方法及装置 Active CN111368303B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010170489.2A CN111368303B (zh) 2020-03-12 2020-03-12 一种PowerShell恶意脚本的检测方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010170489.2A CN111368303B (zh) 2020-03-12 2020-03-12 一种PowerShell恶意脚本的检测方法及装置

Publications (2)

Publication Number Publication Date
CN111368303A true CN111368303A (zh) 2020-07-03
CN111368303B CN111368303B (zh) 2023-12-29

Family

ID=71208882

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010170489.2A Active CN111368303B (zh) 2020-03-12 2020-03-12 一种PowerShell恶意脚本的检测方法及装置

Country Status (1)

Country Link
CN (1) CN111368303B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111881449A (zh) * 2020-07-31 2020-11-03 北京微步在线科技有限公司 恶意代码辅助分析方法及装置
CN113051565A (zh) * 2021-03-16 2021-06-29 深信服科技股份有限公司 恶意脚本的检测方法及装置、设备、存储介质
CN113810375A (zh) * 2021-08-13 2021-12-17 网宿科技股份有限公司 webshell检测方法、装置、设备及可读存储介质
CN114021125A (zh) * 2021-11-10 2022-02-08 安天科技集团股份有限公司 终端设备异常检测方法、装置、计算设备及存储介质
CN115225294A (zh) * 2021-04-16 2022-10-21 深信服科技股份有限公司 一种混淆脚本收集方法、装置、设备及介质
CN113051565B (zh) * 2021-03-16 2024-05-28 深信服科技股份有限公司 恶意脚本的检测方法及装置、设备、存储介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103221960A (zh) * 2012-12-10 2013-07-24 华为技术有限公司 恶意代码的检测方法及装置
CN106599684A (zh) * 2015-12-30 2017-04-26 哈尔滨安天科技股份有限公司 一种无实体文件恶意代码的检测方法及系统
CN106803038A (zh) * 2016-12-28 2017-06-06 北京安天网络安全技术有限公司 一种检测PowerShell恶意代码的方法及系统
CN106815524A (zh) * 2015-11-27 2017-06-09 阿里巴巴集团控股有限公司 恶意脚本文件的检测方法及装置
CN107103237A (zh) * 2016-02-23 2017-08-29 阿里巴巴集团控股有限公司 一种恶意文件的检测方法及装置
CN107577944A (zh) * 2017-09-08 2018-01-12 杭州安恒信息技术有限公司 基于代码语法分析器的网站恶意代码检测方法及装置
US20180212985A1 (en) * 2017-01-25 2018-07-26 Splunk, Inc. Identifying attack behavior based on scripting language activity
CN108804921A (zh) * 2018-05-29 2018-11-13 中国科学院信息工程研究所 一种PowerShell代码的去混淆方法及装置
US20190188384A1 (en) * 2017-12-19 2019-06-20 Crowdstrike, Inc. Detecting script-based malware

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103221960A (zh) * 2012-12-10 2013-07-24 华为技术有限公司 恶意代码的检测方法及装置
CN106815524A (zh) * 2015-11-27 2017-06-09 阿里巴巴集团控股有限公司 恶意脚本文件的检测方法及装置
CN106599684A (zh) * 2015-12-30 2017-04-26 哈尔滨安天科技股份有限公司 一种无实体文件恶意代码的检测方法及系统
CN107103237A (zh) * 2016-02-23 2017-08-29 阿里巴巴集团控股有限公司 一种恶意文件的检测方法及装置
CN106803038A (zh) * 2016-12-28 2017-06-06 北京安天网络安全技术有限公司 一种检测PowerShell恶意代码的方法及系统
US20180212985A1 (en) * 2017-01-25 2018-07-26 Splunk, Inc. Identifying attack behavior based on scripting language activity
CN107577944A (zh) * 2017-09-08 2018-01-12 杭州安恒信息技术有限公司 基于代码语法分析器的网站恶意代码检测方法及装置
US20190188384A1 (en) * 2017-12-19 2019-06-20 Crowdstrike, Inc. Detecting script-based malware
CN108804921A (zh) * 2018-05-29 2018-11-13 中国科学院信息工程研究所 一种PowerShell代码的去混淆方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
王克克;王政;赵云鹏;于兆良;赵金玲;: "PowerShell脚本语言安全问题研究" *
邢彬;吴越;: "浅析PowerShell攻击的检测与防御" *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111881449A (zh) * 2020-07-31 2020-11-03 北京微步在线科技有限公司 恶意代码辅助分析方法及装置
CN113051565A (zh) * 2021-03-16 2021-06-29 深信服科技股份有限公司 恶意脚本的检测方法及装置、设备、存储介质
CN113051565B (zh) * 2021-03-16 2024-05-28 深信服科技股份有限公司 恶意脚本的检测方法及装置、设备、存储介质
CN115225294A (zh) * 2021-04-16 2022-10-21 深信服科技股份有限公司 一种混淆脚本收集方法、装置、设备及介质
CN113810375A (zh) * 2021-08-13 2021-12-17 网宿科技股份有限公司 webshell检测方法、装置、设备及可读存储介质
CN114021125A (zh) * 2021-11-10 2022-02-08 安天科技集团股份有限公司 终端设备异常检测方法、装置、计算设备及存储介质

Also Published As

Publication number Publication date
CN111368303B (zh) 2023-12-29

Similar Documents

Publication Publication Date Title
CN111368303B (zh) 一种PowerShell恶意脚本的检测方法及装置
CN112800427B (zh) webshell检测方法、装置、电子设备和存储介质
CN110472165B (zh) Url提取方法、装置、设备及计算机可读存储介质
CN111177731A (zh) 一种基于人工神经网络的软件源代码漏洞检测方法
CN112632537A (zh) 恶意代码检测方法、装置、设备及存储介质
CN109600382A (zh) webshell检测方法及装置、HMM模型训练方法及装置
CN112817877B (zh) 异常脚本检测方法、装置、计算机设备和存储介质
CN114036526A (zh) 漏洞测试方法、装置、计算机设备和存储介质
KR20200071413A (ko) 학습용 데이터 생성 장치, 소스 코드 오류 분석 장치 및 방법
CN116932381A (zh) 小程序安全风险自动化评估方法及相关设备
CN110866256A (zh) 一种宏代码检测方法、装置、设备及存储介质
CN116361793A (zh) 代码检测方法、装置、电子设备及存储介质
CN113901459B (zh) 固件内部二进制程序脆弱性发现方法及装置
CN115391230A (zh) 一种测试脚本生成、渗透测试方法、装置、设备及介质
CN115150354A (zh) 一种生成域名的方法、装置、存储介质及电子设备
CN116340939A (zh) webshell检测方法、装置、设备及存储介质
CN111131223B (zh) 一种点击劫持的测试方法及装置
CN113190847A (zh) 一种脚本文件的混淆检测方法、装置、设备及存储介质
CN113449301A (zh) 一种样本检测方法、装置、设备及计算机可读存储介质
CN112084499A (zh) 一种基于语法分析的0day攻击检测方法、装置、设备及介质
CN112464237A (zh) 一种静态代码安全诊断方法及装置
US20240045955A1 (en) Identifying security events in programming code for logging
CN115906077A (zh) 一种信息检测方法、装置、设备及计算机可读存储介质
CN116305131B (zh) 脚本静态去混淆方法及系统
CN117235727B (zh) 基于大型语言模型的WebShell识别方法和系统

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
GR01 Patent grant
GR01 Patent grant