CN113360902A - shellcode的检测方法、装置、计算机设备及计算机存储介质 - Google Patents

shellcode的检测方法、装置、计算机设备及计算机存储介质 Download PDF

Info

Publication number
CN113360902A
CN113360902A CN202010145822.4A CN202010145822A CN113360902A CN 113360902 A CN113360902 A CN 113360902A CN 202010145822 A CN202010145822 A CN 202010145822A CN 113360902 A CN113360902 A CN 113360902A
Authority
CN
China
Prior art keywords
data
offset address
shellcode
detected
analysis
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
CN202010145822.4A
Other languages
English (en)
Other versions
CN113360902B (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.)
Qax Technology Group Inc
Secworld Information Technology Beijing Co Ltd
Original Assignee
Qax Technology Group Inc
Secworld Information Technology Beijing 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 Qax Technology Group Inc, Secworld Information Technology Beijing Co Ltd filed Critical Qax Technology Group Inc
Priority to CN202010145822.4A priority Critical patent/CN113360902B/zh
Publication of CN113360902A publication Critical patent/CN113360902A/zh
Application granted granted Critical
Publication of CN113360902B publication Critical patent/CN113360902B/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/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1416Event detection, e.g. attack signature detection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1433Vulnerability analysis
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Computing Systems (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请公开了一种shellcode的检测方法、装置、计算机设备及计算机存储介质,涉及网络安全技术领域,利用CPU模拟执行技术与反汇编技术对代码程序进行检测,能够发现shellcode的攻击行为,提高计算机系统的安全性。所述方法包括:对待检测数据进行模拟执行分析,得到模拟执行的分析结果,所述分析结果包括基于模拟执行的执行步数进行风险标注的偏移地址;根据所述分析结果选取标注为风险的偏移地址,通过监控所述标注为风险的偏移地址的指令序列进行模拟执行分析过程中是否发生操作系统接口调用,输出shellcode的检测结果。

Description

shellcode的检测方法、装置、计算机设备及计算机存储介质
技术领域
本发明涉及网络安全技术领域,尤其是涉及shellcode的检测方法、装置、计算机设备及计算机存储介质。
背景技术
在现有的各种计算机软件中,由于系统开放性、交互性和软件自身的缺陷导致计算机或者服务系统容易遭受恶意代码和漏洞的攻击,特别是内存损坏漏洞,shellcode是内存损坏漏洞利用的关键部分,攻击者可以利用shellcode在被攻击程序中执行恶意行为,从而实现对操作系统的控制。
为了阻止系统漏洞被恶意利用,各种检测shellcode的技术也随之涌现,目前,shellcode的检测技术主要分为三类,静态检测、动态检测和相似度检测。静态检测只对待检测数据进行特征查找,与已知shellcode的特征进行匹配,从而实现检测;动态检测需要将待检测数据模拟执行产生的指令序列与已知shellcode的指令序列进行比对,从而实现检测;相似度检测与动态检测类似,也需要模拟执行待检测数据,并将模拟执行的结果与已知shellcode的特征数据进行聚类操作,从而实现检测。
以上三种方法均可以从不同方面实现shellcode的检测,但是,静态检测由于特征库受限,无法检测到特征库中不包含的shellcode或混淆后的shellcode;动态检测虽然可以检测到混淆后的shellcode,由于依赖知识库且存在技术意义上误报的可能性,对于未知序列的shellcode仍然无法检测;相似度检测理论上虽然可以检测未知序列的shellcode,还是存在技术意义上误报的可能性,使得攻击者的异常行为很难被检测,无法及时发现shellcode的攻击行为。
发明内容
有鉴于此,本发明提供了一种shellcode的检测方法、装置、计算机设备及计算机存储介质,主要目的在于解决现有技术中shellcode的检测存在技术上误报的可能性,无法及时发现shellcode的攻击行为。
依据本发明第一个方面,提供了一种shellcode的检测方法,该方法包括:
对待检测数据进行模拟执行分析,得到模拟执行的分析结果,所述分析结果包括基于模拟执行的执行步数进行风险标注的偏移地址;
根据所述分析结果选取标注为风险的偏移地址,通过监控所述标注为风险的偏移地址的指令序列进行模拟执行分析过程中是否发生操作系统接口调用,输出shellcode的检测结果。
进一步地,在所述对待检测数据进行模拟执行分析,得到模拟执行的分析结果之前,所述方法还包括:
获取解析处理后的待检测数据;
所述获取解析处理后的待检测数据,具体包括:
获取待检测的格式化数据;
根据所述格式化数据对应的文档结构,选取相应的数据解析方式对所述格式化数据进行解析;
将解析后的格式化数据生成数据缓冲区,并提取数据缓冲区的待检测数据。
进一步地,所述待检测数据分布在所述数据缓冲区中的各个数据块上,在所述获取解析处理后的待检测数据之后,所述方法还包括:
对所述数据缓冲区中的各个数据块上的待检测数据进行信息熵分析,过滤信息熵低于预设数值的数据块上的待检测数据。
进一步地,所述对待检测数据进行模拟执行分析,得到模拟执行的分析结果,具体包括:
遍历所述待检测数据中的每个字节,将所述每个字节作为起始字节执行反汇编操作,判断反汇编操作所得到的第一条指令是否将寄存器设定为特定值;
若是,则第一次模拟执行起始字节对应偏移地址的指令序列,并根据所述指令序列的执行步数,对偏移地址进行风险标注。
进一步地,所述第一次模拟执行起始字节对应偏移地址的指令序列,并根据所述指令序列的执行步数,对偏移地址进行风险标注,具体包括:
第一次模拟执行起始字节对应偏移地址的指令序列,并记录从所述偏移地址开始执行过每一条指令的偏移地址;
根据所述从所述偏移地址开始执行过每一条指令的偏移地址,确定所述指令序列的执行步数;
通过将所述指令序列的执行步数与预先设置的阈值进行比对,对偏移地址进行风险标注。
进一步地,所述通过将所述指令序列的执行步数与预先设置的阈值进行比对,对偏移地址进行风险标注,具体包括:
判断所述指令序列的执行步数是否达到预先设置的阈值;
若是,则判定所述当前指令为疑似shellcode,对偏移地址进行风险标注;
否则,对偏移地址进行安全标注。
进一步地,所述根据所述分析结果选取标注为风险的偏移地址,通过监控所述标注为风险的偏移地址的指令序列进行模拟执行分析过程中是否发生操作系统接口调用,输出shellcode的检测结果,具体包括:
根据所述分析结果选取标注为风险的偏移地址,第二次模拟执行每一个标注为风险的偏移地址的指令序列;
通过监控第二次模拟执行过程中的系统数据结构,监控所述标注为风险的偏移地址的指令序列是否发生操作系统接口调用,输出shellcode的检测结果。
依据本发明第二个方面,提供了一种shellcode的检测装置,所述装置包括:
分析单元,用于对待检测数据进行模拟执行分析,得到模拟执行的分析结果,所述分析结果包括基于模拟执行的执行步数进行风险标注的偏移地址;
监控单元,用于根据所述分析结果选取标注为风险的偏移地址,通过监控所述标注为风险的偏移地址的指令序列进行模拟执行分析过程中是否发生操作系统接口调用,输出shellcode的检测结果。
进一步地,所述装置还包括:
获取单元,用于在所述对待检测数据进行模拟执行分析,得到模拟执行的分析结果之前,获取解析处理后的待检测数据;
所述获取单元包括:
获取模块,用于获取待检测的格式化数据;
选取模块,用于根据所述格式化数据对应的文档结构,选取相应的数据解析方式对所述格式化数据进行解析;
提取模块,用于将解析后的格式化数据生成数据缓冲区,并提取数据缓冲区的待检测数据。
进一步地,所述待检测数据分布在所述数据缓冲区中的各个数据块上,所述装置还包括:
过滤单元,用于在所述获取解析处理后的待检测数据之后,对所述数据缓冲区中的各个数据块上的待检测数据进行信息熵分析,过滤信息熵低于预设数值的数据块上的待检测数据。
进一步地,所述分析单元包括:
判断模块,用于遍历所述待检测数据中的每个字节,将所述每个字节作为起始字节执行反汇编操作,判断反汇编操作所得到的第一条指令是否将寄存器设定为特定值;
标注模块,用于若反汇编操作所得到的第一条指令将寄存器设定为特定值,则第一次模拟执行起始字节对应偏移地址的指令序列,并根据所述指令序列的执行步数,对偏移地址进行风险标注。
进一步地,所述标注模块包括:
记录子模块,用于第一次模拟执行起始字节对应偏移地址的指令序列,并记录从所述偏移地址开始执行过每一条指令的偏移地址;
确定子模块,用于根据所述从所述偏移地址开始执行过每一条指令的偏移地址,确定所述指令序列的执行步数;
比对子模块,用于通过将所述指令序列的执行步数与预先设置的阈值进行比对,对偏移地址进行风险标注。
进一步地,所述比对子模块,具体用于判断所述指令序列的执行步数是否达到预先设置的阈值;
所述比对子模块,具体还用于若所述当前指令的执行步数达到预先设置的阈值,则判定所述当前指令为疑似shellcode,对偏移地址进行风险标注;
所述比对子模块,具体还用于若所述当前指令的执行步数未达到预先设置的阈值,则对偏移地址进行安全标注。
进一步地,所述监控单元包括:
选取模块,用于根据所述分析结果选取标注为风险的偏移地址,第二次模拟执行每一个标注为风险的偏移地址的指令序列;
监控模块,用于通过监控第二次模拟执行过程中的系统数据结构,监控所述标注为风险的偏移地址的指令序列是否发生操作系统接口调用,输出shellcode的检测结果。
依据本发明第四个方面,提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现shellcode的检测方法的步骤。
依据本发明第三个方面,提供了一种计算机存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现shellcode的检测方法的步骤。
依据本发明第五个方面,提供了包括存储在非暂态计算机可读存储介质上的计算程序,该计算机程序包括程序指令,当该程序指令被计算机执行时,使该计算机执行上述shellcode的检测方法的步骤。
借由上述技术方案,本发明提供一种shellcode的检测方法及装置,通过对待检测数据进行模拟执行分析,得到模拟执行的分析结果,该分析结果中包括基于模拟执行的执行步数进行风险标注的偏移地址,判断是否为可疑shellcode,并根据分析结果选取标注为风险的偏移地址,通过监控第二次模拟执行标注为风险的偏移地址的指令序列过程中是否发生操作系统接口调用,进一步对shellcode进行检测,当发生操作系统接口调用时,可以判定存在shellcode。与现有技术中shellcode的检测的方式相比,本发明实施例不依赖任何形式的特征库或知识库,可以从理论上具备检测未知shellcode的能力,并能有效应对使用任意技术混淆的shellcode,同时因为检测的最终判断依据为接口调用与否,不会出现技术意义上的误报,能够发现shellcode的攻击行为,提高计算机系统的安全性。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明实施例提供的一种shellcode的检测方法流程示意图;
图2示出了本发明实施例提供的另一种shellcode的检测方法流程示意图;
图3示出了本发明实施例一种shellcode检测的流程框图;
图4示出了本发明实施例提供的一种shellcode的检测装置结构示意图;
图5示出了本发明实施例提供的另一种shellcode的检测装置结构示意图;
图6示出了本发明实施例提供的一种电子设备的装置结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本发明实施例提供了一种shellcode的检测方法,可以及时发现shellcode的攻击行为,提高操作系统的安全性,如图1所示,该方法包括:
101、对待检测数据进行模拟执行分析,得到模拟执行的分析结果。
其中,待检测数据可以是是各类文件文档,如DOCX、XLSX、PPTX、PDF等。
在现有的各种计算机软件中,由于系统开放性、交互性和软件自身的缺陷导致计算机或者服务系统容易遭受恶意代码和漏洞的攻击,特别是系统漏洞触发外地代码shellcode的执行时,Shellcode是一段用于利用软件漏洞而执行的代码,是溢出恶意攻击行为的核心代码,攻击者可以利用shellcode进入宿主进程,对宿主进程发起攻击,从而实现对操作系统的控制。示例性的,针对AdobePDF阅读器存在一个内存损坏漏洞,攻击者可能就可以通过构造一个含有漏洞利用载荷和一段shellcode的恶意文档来攻击PDF阅读器。其中漏洞利用载荷负责触发PDF阅读器的内存损坏漏洞,且把PDF阅读器的程序指针寄存器劫持到shellcode的起始位置,使得shellcode在受害者计算机中执行,而shellcode就可以做一些例如安装恶意程序之类的事情。
在本发明实施例中,对待检测数据进行模拟执行分析,得到模拟执行的分析结果包括基于模拟执行的执行步数进行风险标注的偏移地址。这里的模拟执行分析为第一次模拟执行分析,具体对待检测数据进行模拟执行分析的过程需要遍历待检测数据中的每个字节,将每个字节作为起始字节执行反汇编操作,判断反汇编操作所得到的第一条指令是否寄存器设定为特定值,若是,则第一次模拟执行起始字节对应偏移地址的指令序列,并根据指令序列的执行步数,对偏移地址进行风险标注,从而得到模拟执行的分析结果。
应说明的是,正常程序在编译的时候就会被编译器添加一些初始代码,这些初始代码的其中一个功能就是设定CPU状态(即寄存器的值),而对于shellcode来说,因为它是塞到正常程序内存中执行的,没有编译器给它生成初始化代码,所以shellcode需要自己完成设定CPU状态这件事,这样才能保证shellcode可以在任意状态下运行。
在本发明实施例中,对于反汇编操作所得到的当前指令是将寄存器设定为特定值,说明待检测数据可能包含shellcode,需要生成初始化代码,为了进一步对可疑的待检测数据进行shellcode检测,可以在第一次模拟执行起始字节对应偏移地址的指令序列过程中,记录指令序列的执行步数,根据指令序列的执行步数的多少来对可能包含shellcode的偏移地址进行风险标注,由于shellcode的组成结构包含大量明显特征,对于包含有shellcode的指令,在模拟执行当前指令的偏移地址的过程中需要执行大量的操作,才能完成shellcode的攻击行为。对于执行步数较多的偏移地址,包含shellcode的可能性越高,反之,执行步数较少的偏移地址,包含shellcode的可能性越低。这里可以通过汇总已有包含shellcode的指令序列的执行步数,设置执行步数的阈值,将执行步数大于阈值的偏移地址进行风险标注,作为疑似包含shellcode的指令序列,反之,将偏移地址进行安全标注。
102、根据所述分析结果选取标注为风险的偏移地址,通过监控所述标注为风险的偏移地址的指令序列进行模拟执行分析过程中是否发生操作系统接口调用,输出shellcode的检测结果。
在本发明实施例中,这里的模拟执行分析为第二次模拟执行分析,并且第二次模拟执行分析的过程与步骤101中模拟执行分析的过程有所不同,在第二次模拟执行的过程需要耗费更多的数据资源,由于shellcode在执行攻击的过程中典型的操作就是对操作系统进行接口调用,这里针对标注为风险的偏移地址,监控第二次模拟执行风险的偏移地址的指令序列过程中是否发生操作系统接口调用,从而对shellcode进行检测。
本发明提供一种shellcode的检测方法,通过对待检测数据进行模拟执行分析,得到模拟执行的分析结果,该分析结果中包括基于模拟执行的执行步数进行风险标注的偏移地址,判断是否为可疑shellcode,并根据分析结果选取标注为风险的偏移地址,通过监控第二次模拟执行标注为风险的偏移地址的指令序列过程中是否发生操作系统接口调用,进一步对shellcode进行检测,当发生操作系统接口调用时,可以判定存在shellcode。与现有技术中shellcode的检测的方式相比,本发明实施例不依赖任何形式的特征库或知识库,可以从理论上具备检测未知shellcode的能力,并能有效应对使用任意技术混淆的shellcode,同时因为检测的最终判断依据为接口调用与否,不会出现技术意义上的误报,能够发现shellcode的攻击行为,提高计算机系统的安全性。
本发明实施例提供了另一种shellcode的检测方法,可以及时发现shellcode的攻击行为,提高操作系统的安全性,如图2所示,所述方法包括:
201、获取解析处理后的待检测数据。
在本发明实施例中,由于不同格式的文本文档其数据存储方式不一样,恶意代码与shellcode存在形式也有所差别,需要对文本文档进行解析处理后才可能得到正确的反汇编效果。具体可以通过获取待检测的格式化数据;根据格式化数据对应的文档结构,选取相应的数据解析方式对格式化数据进行解析;将解析后的格式化数据生成数据缓冲区,并提取数据缓冲区的待检测数据。
上述格式化数据可以是裸数据、转移字符串、以及DOC、XLS、PPT、DOCX、XLXS、PPTX、RFT、PDF、HTML、XML中的一种或多种。
可理解的是,由于每种格式化数据都有其自身的特定,根据文档结构不同,针对不同文本文档的文档结构可以选取不同的解析方式,例如,pdf格式的文本文档可以利用pdfminer工具进行解析,doc格式的文本文档可以利用poi工具进行解析。
具体根据格式化数据对应的文档结构,选取相应的数据解析方式对格式化数据进行解析的过程,可以利用文本文档的结构将文本文档解析为多个部分,并从解析后的文本文档中抽取感兴趣的部分作为待检测数据。这里感兴趣的部分相当于文本文档中最有可能出现shellcode的位置,并且对于不同格式文本文档的设计特点,文本文档中最有可能出现shellcode的部分也不相同,例如,pdf格式的文本文档中有可能出现shellcode的位置是js脚本代码中,doc格式的文本文档中最有可能出现shellcode的位置可能内存ole对象。
由于Shellcode是一种比较特殊的程序代码,其特殊之处在于shellcode是攻击者往被攻击的程序里塞进去的一段代码,目的是执行攻击者希望的功能。解析后的格式化数据通常都会包含多个组成部分,对于不同文档结构的格式化数据,出现在格式化数据中shellcode的位置也有所不同,例如,Adobe PDF阅读器存在一个内存损坏漏洞,攻击者可能就可以通过构造一个含有漏洞利用载荷和一段shellcode的恶意文档来攻击PDF阅读器。其中漏洞利用载荷负责触发PDF阅读器的内存损坏漏洞,且把PDF阅读器的程序指针寄存器劫持到shellcode的起始位置,使shellcode在受害者计算机中执行,而shellcode就可以做一些例如安装恶意程序之类的事情。
202、对所述数据缓冲区中的各个数据块上的待检测数据进行信息熵分析,过滤信息熵低于预设数值的数据块上的待检测数据。
在本发明实施例中,对于解析后的格式化数据形成缓冲区后,待检测数据分布在数据缓冲区的各个数据块上。利用信息熵能够描述程序代码的混乱程度,信息熵越大,表明数据块中待检测数据混乱程度越高,包含价值信息较少。通常情况下,对于包含有shellcode使用的指令集采用较紧凑的编码方式,所以包含有shellcode使用的指令的信息熵普遍高于普通文档数据,且大部分shellcode都不包含NULL字节,所以大部分shellcode的信息熵会更高。
可以理解的是,这里的预设数值可以通过汇总已知shellcode的信息熵所确定的数值,通过过滤信息熵低于预设数值的数据块上的待检测数据,可以过滤掉一定是安全程序代码的数据块。
203、遍历所述待检测数据中的每个字节,将所述每个字节作为起始字节执行反汇编操作,判断反汇编操作所得到的第一条指令是否将寄存器设定为特定值。
由于实现不知道shellcode是否出现在待检测数据中,以及其在待检测数据中的位置,这里需要以不同待检测数据中的字节作为起始字节进行反汇编操作,并对反汇编操作后的指令进行判定。
在本发明实施例中,对于经过编码的shellcode,因为它一定存在解码字段,而解码之前必须进行自定位来获得编码后的shellcode的位置,如果待检测数据中包含shellcode,如果能反汇编到自定位操作,并且第一个指令将可疑的未经初始化的寄存器进行了初始化,也就是将寄存器设定为特定值,则说明待检测数据中可能包含shellcode。
204、若是,则第一次模拟执行起始字节对应偏移地址的指令序列,并记录从所述偏移地址开始执行过每一条指令的偏移地址。
在本发明实施例中,待检测数据实际上为一段字节序列,利用反汇编技术,可以在任意位置按X86指令的编码规则得到相应的指令,因此,以每个字节作为起始字节进行反汇编,可以将反汇编后的第一个指令对应的数据流看作二进制可执行代码,给定一个初始执行的上下文,包括CPU的各寄存器组、内存等,即可执行代码。这里的第一次模拟执行可以利用CPU模拟器,能够模拟CPU对二进制代码进行执行,根据指令动态改变模拟的CPU以及内存状态。
205、根据所述从所述偏移地址开始执行过每一条指令的偏移地址,确定所述指令序列的执行步数。
可以理解的是,在第一次模拟执行起始字节对应偏移地址的指令序列的过程中,为了准确判断待检测数据中是否包含shellcode,需要记录从偏移地址开始执行过每一条指令的偏移地址,按顺序、跳转、条件跳转执行,并统计执行过的每一条指令的偏移地址,确定指令序列的执行步数。
206、通过将所述指令序列的执行步数与预先设置的阈值进行比对,对偏移地址进行风险标注。
在本发明实施例中,具体可以通过判断指令的执行步数是否达到预先设置的阈值;若是,则说明指令序列中疑似包含shellcode,对偏移地址进行风险标注;否则,说明说明指令序列中不包含shellcode,对偏移地址进行安全标注。
207、根据所述分析结果选取标注为风险的偏移地址,第二次模拟执行每一个标注为风险的偏移地址的指令序列。
可以理解的是,标注为风险的偏移地址的指令序列为疑似包含shellcode的指令序列,通过第二次模拟执行该指令序列可以进一步确定该指令序列是否为shellcode,从而准确检测到shellcode。
208、通过监控第二次模拟执行过程中的系统数据结构,监控所述标注为风险的偏移地址的指令序列是否发生操作系统接口调用,输出shellcode的检测结果。
可以理解的是,API是操作系统留给应用程序的一个调用接口,应用程序通过调用操作系统的API而使操作系统去执行应用程序的命令(动作),如CreateFiLe函数主要用于生成文件。在目前shellcode的编写中,攻击者基本都是通过方法找到需要调用的操作系统API函数地址,将这些地址存储在堆栈空间,漏洞触发后,使用指令对其进行调用。本发明实施例如果监控到第二次模拟执行标注为风险的偏移地址的指令序列过程中发生操作系统接口调用,说明检测到包含shellcode的指令序列,输出检测到shellcode的检测结果。
在具体应用场景中,本发明实施例还提供一了种shellcode检测的流程框图,可以如图3所示,通过解析待检测的格式化数据,可以生成待检测buffer,并对待检测buffer进行信息上分析,过滤掉信息熵较低的数据块,从buffer的第一个字节开始,逐个执行反汇编操作,并判断反汇编所得第一条指令是否将寄存器设定为特定值,若是,则模拟执行字节对应偏移地址的指令序列,并记录执行过的每一条偏移地址,记录最终指令序列的执行步数,如果执行步数达到预先设置的阈值,则将偏移地址进行风险标注,如果未达到预先设置的阈值,则将偏移地址进行安全标注,直至偏移地址为buffer数据块的末尾,进一步选择并模拟执行每一个标注为风险的偏移地址的指令序列,监控是否发生操作系统API调用,如果发生操作系统API调用,则输出包含shellcode的检测结果,否则,输出不包含shellcode的检测结果。
进一步地,作为图1所述方法的具体实现,本发明实施例提供了一种shellcode的检测装置,如图4所示,所述装置包括:分析单元31、监控单元32。
分析单元31,可以用于对待检测数据进行模拟执行分析,得到模拟执行的分析结果,所述分析结果包括基于模拟执行的执行步数进行风险标注的偏移地址;
监控单元32,可以用于根据所述分析结果选取标注为风险的偏移地址,通过监控所述标注为风险的偏移地址的指令序列进行模拟执行分析过程中是否发生操作系统接口调用,输出shellcode的检测结果。
本发明提供一种shellcode的检测装置,通过对待检测数据进行模拟执行分析,得到模拟执行的分析结果,该分析结果中包括基于模拟执行的执行步数进行风险标注的偏移地址,判断是否为可疑shellcode,并根据分析结果选取标注为风险的偏移地址,通过监控第二次模拟执行标注为风险的偏移地址的指令序列过程中是否发生操作系统接口调用,进一步对shellcode进行检测,当发生操作系统接口调用时,可以判定存在shellcode。与现有技术中shellcode的检测的方式相比,本发明实施例不依赖任何形式的特征库或知识库,可以从理论上具备检测未知shellcode的能力,并能有效应对使用任意技术混淆的shellcode,同时因为检测的最终判断依据为接口调用与否,不会出现技术意义上的误报,能够发现shellcode的攻击行为,提高计算机系统的安全性。
作为图4中所示shellcode的检测装置的进一步说明,图5是根据本发明实施例另一种shellcode的检测装置的结构示意图,如图5所示,所述装置还包括:
获取单元33,可以用于在所述对待检测数据进行模拟执行分析,得到模拟执行的分析结果之前,获取解析处理后的待检测数据;
所述获取单元33包括:
获取模块331,可以用于获取待检测的格式化数据;
选取模块332,可以用于根据所述格式化数据对应的文档结构,选取相应的数据解析方式对所述格式化数据进行解析;
提取模块333,可以用于将解析后的格式化数据生成数据缓冲区,并提取数据缓冲区的待检测数据。
进一步地,所述待检测数据分布在所述数据缓冲区中的各个数据块上,所述装置还包括:
过滤单元34,可以用于在所述获取解析处理后的待检测数据之后,对所述数据缓冲区中的各个数据块上的待检测数据进行信息熵分析,过滤信息熵低于预设数值的数据块上的待检测数据。
进一步地,所述分析单元31包括:
判断模块311,可以用于遍历所述待检测数据中的每个字节,将所述每个字节作为起始字节执行反汇编操作,判断反汇编操作所得到的第一条指令是否将寄存器设定为特定值;
标注模块312,可以用于若反汇编操作所得到的第一条指令将寄存器设定为特定值,则第一次模拟执行起始字节对应偏移地址的指令序列,并根据所述指令序列的执行步数,对偏移地址进行风险标注。
进一步地,所述标注模块312包括:
记录子模块3121,可以用于第一次模拟执行起始字节对应偏移地址的指令序列,并记录从所述偏移地址开始执行过每一条指令的偏移地址;
确定子模块3122,可以用于根据所述从所述偏移地址开始执行过每一条指令的偏移地址,确定所述指令序列的执行步数;
比对子模块3123,可以用于通过将所述指令序列的执行步数与预先设置的阈值进行比对,对偏移地址进行风险标注。
进一步地,所述比对子模块3123,具体可以用于判断所述指令序列的执行步数是否达到预先设置的阈值;
所述比对子模块3123,具体还可以用于若所述当前指令的执行步数达到预先设置的阈值,则判定所述当前指令为疑似shellcode,对偏移地址进行风险标注;
所述比对子模块3123,具体还可以用于若所述当前指令的执行步数未达到预先设置的阈值,则对偏移地址进行安全标注。
进一步地,所述监控单元32包括:
选取模块321,可以用于根据所述分析结果选取标注为风险的偏移地址,第二次模拟执行每一个标注为风险的偏移地址的指令序列;
监控模块322,可以用于通过监控第二次模拟执行过程中的系统数据结构,监控所述标注为风险的偏移地址的指令序列是否发生操作系统接口调用,输出shellcode的检测结果。
需要说明的是,本实施例提供的一种shellcode的检测装置所涉及各功能单元的其他相应描述,可以参考图1和图2中的对应描述,在此不再赘述。
基于上述如图1和图2所示方法,相应的,本实施例还提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述如图1和图2所示的shellcode的检测方法。
基于这样的理解,本申请的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施场景所述的方法。
基于上述如图1和图2所示的方法,以及图4和图5所示的虚拟装置实施例,为了实现上述目的,本申请实施例还提供了一种计算机设备,具体可以为个人计算机、服务器、网络设备等,该实体设备包括存储介质和处理器;存储介质,用于存储计算机程序;处理器,用于执行计算机程序以实现上述如图1和图2所示的shellcode的检测方法。
示例性的,如图6所示,图6示出了本发明实施例提供的一种电子设备的装置结构示意图,该服务端可以包括:至少一个处理器(processor)41、通信接口(CommunicationsInterface)42、存储器(memory)43和总线44,其中,处理器41、通信接口42、存储器43通过总线44完成相互间的通信。通信接口42可以用于电子设备与外部设备之间的信息传输。处理器41可以调用存储器43中的逻辑指令,以执行如下方法:对待检测数据进行模拟执行分析,得到模拟执行的分析结果,所述分析结果包括基于模拟执行的执行步数进行风险标注的偏移地址;根据所述分析结果选取标注为风险的偏移地址,通过监控所述标注为风险的偏移地址的指令序列进行模拟执行分析过程中是否发生操作系统接口调用,输出shellcode的检测结果。
此外,上述的存储器43中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
可选地,该计算机设备还可以包括用户接口、网络接口、摄像头、射频(RadioFrequency,RF)电路,传感器、音频电路、WI-FI模块等等。用户接口可以包括显示屏(Display)、输入单元比如键盘(Keyboard)等,可选用户接口还可以包括USB接口、读卡器接口等。网络接口可选的可以包括标准的有线接口、无线接口(如蓝牙接口、WI-FI接口)等。
本领域技术人员可以理解,本实施例提供的shellcode的检测的实体设备结构并不构成对该实体设备的限定,可以包括更多或更少的部件,或者组合某些部件,或者不同的部件布置。
存储介质中还可以包括操作系统、网络通信模块。操作系统是管理上述计算机设备硬件和软件资源的程序,支持信息处理程序以及其它软件和/或程序的运行。网络通信模块用于实现存储介质内部各组件之间的通信,以及与该实体设备中其它硬件和软件之间通信。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请可以借助软件加必要的通用硬件平台的方式来实现,也可以通过硬件实现。通过应用本申请的技术方案,与目前现有技术相比,本发明实施例不依赖任何形式的特征库或知识库,可以从理论上具备检测未知shellcode的能力,并能有效应对使用任意技术混淆的shellcode,不会出现技术意义上的误报,能够发现shellcode的攻击行为,提高计算机系统的安全性。
本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本申请所必须的。本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本申请序号仅仅为了描述,不代表实施场景的优劣。以上公开的仅为本申请的几个具体实施场景,但是,本申请并非局限于此,任何本领域的技术人员能思之的变化都应落入本申请的保护范围。

Claims (11)

1.一种shellcode的检测方法,其特征在于,所述方法包括:
对待检测数据进行模拟执行分析,得到模拟执行的分析结果,所述分析结果包括基于模拟执行的执行步数进行风险标注的偏移地址;
根据所述分析结果选取标注为风险的偏移地址,通过监控所述标注为风险的偏移地址的指令序列进行模拟执行分析过程中是否发生操作系统接口调用,输出shellcode的检测结果。
2.根据权利要求1所述的方法,其特征在于,在所述对待检测数据进行模拟执行分析,得到模拟执行的分析结果之前,所述方法还包括:
获取解析处理后的待检测数据;
所述获取解析处理后的待检测数据,具体包括:
获取待检测的格式化数据;
根据所述格式化数据对应的文档结构,选取相应的数据解析方式对所述格式化数据进行解析;
将解析后的格式化数据生成数据缓冲区,并提取数据缓冲区的待检测数据。
3.根据权利要求2所述的方法,其特征在于,所述待检测数据分布在所述数据缓冲区中的各个数据块上,在所述获取解析处理后的待检测数据之后,所述方法还包括:
对所述数据缓冲区中的各个数据块上的待检测数据进行信息熵分析,过滤信息熵低于预设数值的数据块上的待检测数据。
4.根据权利要求1所述的方法,其特征在于,所述对待检测数据进行模拟执行分析,得到模拟执行的分析结果,具体包括:
遍历所述待检测数据中的每个字节,将所述每个字节作为起始字节执行反汇编操作,判断反汇编操作所得到的第一条指令是否将寄存器设定为特定值;
若是,则第一次模拟执行起始字节对应偏移地址的指令序列,并根据所述指令序列的执行步数,对偏移地址进行风险标注。
5.根据权利要求4所述的方法,其特征在于,所述第一次模拟执行起始字节对应偏移地址的指令序列,并根据所述指令序列的执行步数,对偏移地址进行风险标注,具体包括:
第一次模拟执行起始字节对应偏移地址的指令序列,并记录从所述偏移地址开始执行过每一条指令的偏移地址;
根据所述从所述偏移地址开始执行过每一条指令的偏移地址,确定所述指令序列的执行步数;
通过将所述指令序列的执行步数与预先设置的阈值进行比对,对偏移地址进行风险标注。
6.根据权利要求5述的方法,其特征在于,所述通过将所述指令序列的执行步数与预先设置的阈值进行比对,对偏移地址进行风险标注,具体包括:
判断所述指令序列的执行步数是否达到预先设置的阈值;
若是,则判定所述当前指令为疑似shellcode,对偏移地址进行风险标注;
否则,对偏移地址进行安全标注。
7.根据权利要求1-6中任一项所述的方法,其特征在于,所述根据所述分析结果选取标注为风险的偏移地址,通过监控所述标注为风险的偏移地址的指令序列进行模拟执行分析过程中是否发生操作系统接口调用,输出shellcode的检测结果,具体包括:
根据所述分析结果选取标注为风险的偏移地址,第二次模拟执行每一个标注为风险的偏移地址的指令序列;
通过监控第二次模拟执行过程中的系统数据结构,监控所述标注为风险的偏移地址的指令序列是否发生操作系统接口调用,输出shellcode的检测结果。
8.一种shellcode的检测装置,其特征在于,所述装置包括:
分析单元,用于对待检测数据进行模拟执行分析,得到模拟执行的分析结果,所述分析结果包括基于模拟执行的执行步数进行风险标注的偏移地址;
监控单元,用于根据所述分析结果选取标注为风险的偏移地址,通过监控所述标注为风险的偏移地址的指令序列进行模拟执行分析过程中是否发生操作系统接口调用,输出shellcode的检测结果。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
11.一种计算机程序产品,包括存储在非暂态计算机可读存储介质上的计算程序,该计算机程序包括程序指令,其特征在于,当该程序指令被计算机执行时,使该计算机执行前述任一权利要求1至7中任一项所述的方法的步骤。
CN202010145822.4A 2020-03-05 2020-03-05 shellcode的检测方法、装置、计算机设备及计算机存储介质 Active CN113360902B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010145822.4A CN113360902B (zh) 2020-03-05 2020-03-05 shellcode的检测方法、装置、计算机设备及计算机存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010145822.4A CN113360902B (zh) 2020-03-05 2020-03-05 shellcode的检测方法、装置、计算机设备及计算机存储介质

Publications (2)

Publication Number Publication Date
CN113360902A true CN113360902A (zh) 2021-09-07
CN113360902B CN113360902B (zh) 2024-02-20

Family

ID=77523575

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010145822.4A Active CN113360902B (zh) 2020-03-05 2020-03-05 shellcode的检测方法、装置、计算机设备及计算机存储介质

Country Status (1)

Country Link
CN (1) CN113360902B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113918171A (zh) * 2021-10-19 2022-01-11 哈尔滨理工大学 一种新的使用扩展控制流图的反汇编方法

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101964036A (zh) * 2010-10-29 2011-02-02 北京椒图科技有限公司 漏洞检测方法及装置
CN102043915A (zh) * 2010-11-03 2011-05-04 厦门市美亚柏科信息股份有限公司 一种非可执行文件中包含恶意代码的检测方法及其装置
CN102651060A (zh) * 2012-03-31 2012-08-29 北京奇虎科技有限公司 一种漏洞检测的方法和系统
US8307432B1 (en) * 2008-10-07 2012-11-06 Trend Micro Incorporated Generic shellcode detection
WO2012154664A2 (en) * 2011-05-06 2012-11-15 University Of North Carolina At Chapel Hill Methods, systems, and computer readable media for detecting injected machine code
CN104731708A (zh) * 2015-03-25 2015-06-24 北京信息控制研究所 一种Shellcode的动态检测方法
CN105488397A (zh) * 2015-12-02 2016-04-13 国网智能电网研究院 一种基于情境的rop攻击检测系统及方法
CN106874758A (zh) * 2016-08-22 2017-06-20 阿里巴巴集团控股有限公司 一种识别文档代码的方法和装置
US9973531B1 (en) * 2014-06-06 2018-05-15 Fireeye, Inc. Shellcode detection

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8307432B1 (en) * 2008-10-07 2012-11-06 Trend Micro Incorporated Generic shellcode detection
CN101964036A (zh) * 2010-10-29 2011-02-02 北京椒图科技有限公司 漏洞检测方法及装置
CN102043915A (zh) * 2010-11-03 2011-05-04 厦门市美亚柏科信息股份有限公司 一种非可执行文件中包含恶意代码的检测方法及其装置
WO2012154664A2 (en) * 2011-05-06 2012-11-15 University Of North Carolina At Chapel Hill Methods, systems, and computer readable media for detecting injected machine code
CN102651060A (zh) * 2012-03-31 2012-08-29 北京奇虎科技有限公司 一种漏洞检测的方法和系统
US9973531B1 (en) * 2014-06-06 2018-05-15 Fireeye, Inc. Shellcode detection
CN104731708A (zh) * 2015-03-25 2015-06-24 北京信息控制研究所 一种Shellcode的动态检测方法
CN105488397A (zh) * 2015-12-02 2016-04-13 国网智能电网研究院 一种基于情境的rop攻击检测系统及方法
CN106874758A (zh) * 2016-08-22 2017-06-20 阿里巴巴集团控股有限公司 一种识别文档代码的方法和装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
董鹏程;康绯;舒辉;: "一种shellcode动态检测与分析技术", 小型微型计算机系统, no. 07 *
辛毅;方滨兴;云晓春;: "基于代码执行模拟的远程缓冲区攻击检测方法", 哈尔滨工业大学学报, no. 09 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113918171A (zh) * 2021-10-19 2022-01-11 哈尔滨理工大学 一种新的使用扩展控制流图的反汇编方法

Also Published As

Publication number Publication date
CN113360902B (zh) 2024-02-20

Similar Documents

Publication Publication Date Title
US10181026B2 (en) Methods, media, and systems for detecting attack on a digital processing device
US9336389B1 (en) Rapid malware inspection of mobile applications
KR102317833B1 (ko) 악성 코드 탐지 모델 학습 방법 및 이를 이용한 탐지 방법
CN109960932B (zh) 文件检测方法、装置和终端设备
JP2009093615A (ja) 仮想環境を利用した非実行ファイル内のエクスプロイトコード分析方法及び装置
US10007788B2 (en) Method of modeling behavior pattern of instruction set in N-gram manner, computing device operating with the method, and program stored in storage medium to execute the method in computing device
CN109977976B (zh) 可执行文件相似度的检测方法、装置和计算机设备
US11403388B2 (en) Assignment device, assignment method, and assignment program
CN113360902B (zh) shellcode的检测方法、装置、计算机设备及计算机存储介质
KR20160099159A (ko) 악성 코드를 탐지하기 위한 전자 시스템 및 방법
CN111460448B (zh) 一种恶意软件家族检测方法及装置
CN113378161A (zh) 一种安全检测方法、装置、设备及存储介质
CN109669875B (zh) 应用崩溃测试方法、装置、电子设备及存储介质
CN114662097A (zh) Csv文件注入攻击的检测方法和装置、电子设备和存储介质
CN104008336A (zh) 一种ShellCode检测方法和装置
CN114363060A (zh) 一种域名检测方法、系统、设备及计算机可读存储介质
CN112887328A (zh) 一种样本检测方法、装置、设备及计算机可读存储介质
CN107368740B (zh) 一种针对数据文件中可执行代码的检测方法及系统
CN113076540B (zh) 一种攻击检测的方法、装置、电子设备及存储介质
KR102662965B1 (ko) 구조화 문서에 대한 인공지능 기반의 악성코드 탐지 장치 및 방법
CN104680067B (zh) 文件的检测方法及装置
CN113329032B (zh) 一种攻击检测方法、装置、设备和介质
EP4407495A1 (en) Machine learning-based malware detection for code reflection
CN114491621A (zh) 文本对象安全性检测方法和设备
CN109218284B (zh) Xss漏洞检测方法及装置、计算机设备及可读介质

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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 100032 NO.332, 3rd floor, Building 102, 28 xinjiekouwai street, Xicheng District, Beijing

Applicant after: QAX Technology Group Inc.

Applicant after: Qianxin Wangshen information technology (Beijing) Co.,Ltd.

Address before: 100032 NO.332, 3rd floor, Building 102, 28 xinjiekouwai street, Xicheng District, Beijing

Applicant before: QAX Technology Group Inc.

Applicant before: LEGENDSEC INFORMATION TECHNOLOGY (BEIJING) Inc.

GR01 Patent grant
GR01 Patent grant