一种反病毒虚拟沙盒操作系统API模拟的方法
文献发布时间:2023-06-19 18:46:07
技术领域
本发明涉及信息安全技术领域,尤其涉及一种反病毒虚拟沙盒操作系统API模拟的方法。
背景技术
目前,在信息安全领域中,恶意代码检测一直都是各个安全厂商所面临的首要问题。但是近年来,一些主流病毒家族为了与安全软件厂商进行免杀对抗,大范围在病毒样本中使用代码混淆技术。安全软件厂商为了与不断变化的混淆代码进行对抗,追求更高的病毒检出率,从而发展出了虚拟沙盒技术。常规的反病毒引擎中的虚拟沙盒仅能够虚拟执行汇编指令,对于传统指令级混淆的样本来说,可以完成部分样本数据和代码的解密,但由于虚拟沙盒中缺少系统API(Application Programming Interface)实现,从而最终导致样本无法像在真实系统环境中一样执行。当今的混淆病毒样本混淆手段愈发多样,如:调用API通过检测返回结果或者错误号、利用Windows消息回调机制等方式检测系统真实性,故仅模拟执行汇编指令对于病毒查杀的帮助已经十分有限。故此,在反病毒虚拟沙盒中模拟API对于提高查杀率来说变得尤为重要。
发明内容
本发明要解决的技术问题是如何在反病毒虚拟沙盒操作系统中模拟API的方法。
本发明为了解决此问题,提出了一种反病毒虚拟沙盒操作系统API模拟的方法,具体包括如下步骤:
步骤一:收集、整理API的返回值、参数列表、调用约定;
步骤二:根据API的名称生成全局唯一的API索引号;
步骤三:根据第一步收集、整理的API信息与第二步生成的API索引号生成API中断调用代码;
步骤四:根据第一步收集、整理的API信息,编写代码模拟、仿真对应API的行为、代码逻辑;
步骤五:在虚拟沙盒中接管预留的用于处理API调用的系统中断,在该中断被触发时,根据调用API的索引号,将当前上下文转发到相应的被模拟API函数的入口继续执行,API函数执行到返回后,返回API仿真结果。
进一步的,所述步骤一中根据真实操作系统的动态库中API函数的实现情况将API的返回值、参数列表、调用约定进行收集、整理。
进一步的,所述步骤一中根据查阅操作系统API文档将API的返回值、参数列表、调用约定进行收集、整理。
进一步的,所述步骤一中根据包含该系统API的头文件,将API的返回值、参数列表、调用约定进行收集、整理。
采用上述技术方案,具有以下技术效果:
本发明实现了病毒样本在虚拟沙盒环境中调用仿真API,在反病毒虚拟沙盒中模拟API对于提高查杀率,最终达到病毒样本在虚拟沙盒环境中可以调用仿真API的目的。
附图说明
图1为本发明的模拟过程流程图。
具体实施方式
下面结合附图对本发明做进一步说明。
实施例1:如图1的具体实施方式
具体实施流程见图1:
第一步,假设针对案例样本(sha1:151230e3546faa21fb1a5b0de1bfa8adcc7ff30a)需要在虚拟沙盒操作系统中模拟API(GetStartupInfoW),根据该系统API头文件内信息,得出该API函数返回值类型为void(无法返回值),调用约定为WINAPI(__stdcall),参数列表中只有一个参数,参数类型为指针类型。截取部分系统API头文件(WinBase.h)中GetStartupInfoW相关内容如下:
第二步,根据API名称GetStartupInfoW,在虚拟沙盒系统中生成API索引号(0x4701cf)。
第三步,根据第一步中的API信息和第二步中生成的API索引号,生成API中断调用代码。生成的API中断调用代码如下:
mov eax,0x4701cf;SYSCALL:KERNEL32!GetStartupInfoW
int 0x80
ret 0x4
第四步,根据第一步中的API信息编写代码模拟、仿真对应API的行为、代码逻辑。相关仿真示例代码如下:
第五步,在虚拟沙盒中接管预留的用于处理API调用的系统中断,在该中断被触发时,根据调用API的索引号,将当前上下文转发到相应的被模拟API函数的入口继续执行,API函数执行到返回后,返回API仿真结果。
以上描述了本发明的基本原理和主要特征,本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内,发明要求保护范围由所附的权利要求书及其等效物界定。