CN108875357A - 一种程序启动方法、装置、电子设备及存储介质 - Google Patents
一种程序启动方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN108875357A CN108875357A CN201711391646.7A CN201711391646A CN108875357A CN 108875357 A CN108875357 A CN 108875357A CN 201711391646 A CN201711391646 A CN 201711391646A CN 108875357 A CN108875357 A CN 108875357A
- Authority
- CN
- China
- Prior art keywords
- client computer
- sample program
- program
- virtual machine
- sample
- 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
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/51—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/16—Constructional details or arrangements
-
- 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/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Human Computer Interaction (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明的实施例公开一种程序启动方法、装置、电子设备及存储介质,涉及计算机网络安全领域,能够在客户机外部实现对样本程序的启动。所述一种程序启动方法,应用于宿主机,该方法包括:将样本程序输入到客户机;当监测到客户机的控制流的触发事件,将当前执行指针跳转到所述汇编指令片段进行执行以启动所述样本程序。本发明适用于对样本程序的检测。
Description
技术领域
本发明涉及计算机网络安全领域,尤其涉及一种程序启动方法、装置、电子设备及存储介质。
背景技术
沙箱(Sandboxie),又名沙盘,是一种按照安全策略限制程序行为的执行环境,它允许用户在沙箱环境中运行程序,运行所产生的变化可以随后删除。通过在沙箱环境中运行程序,可以检测程序中是否存在恶意行为,当发现程序中存在恶意行为时可以发出告警。
目前在以虚拟机作为载体的沙箱中,将待检测程序作为样本投递进虚拟机中进行分析时,需要在虚拟机中首先启动样本,然后监控启动后的样本的运行轨迹。启动样本的传统做法是提前在客户机(利用虚拟机软件安装在宿主机上的虚拟设备)内部加入启动程序并且将其设置为自启动,使其随客户机的启动而启动,这种方法必须事先对目标客户机进行修改和配置,并且可能被启动后的样本通过搜索注册表项,自启动文件等方法进行识别,以此来逃避检测,更麻烦的是这种样本的启动方法必须在客户机内部添加相关程序并且进行配置,不能灵活的适应位于虚拟机外的监控程序的调度。
发明内容
有鉴于此,本发明实施例提供一种程序启动方法、装置、电子设备及存储介质,能够在客户机外部实现对样本程序的启动。
第一方面,本发明实施例提供一种程序启动方法,应用于宿主机,该方法包括:将样本程序输入到客户机中;当监测到客户机的控制流的触发事件,将当前执行指针跳转到用于启动所述样本程序的汇编指令片段进行执行以启动所述样本程序。
结合第一方面,在第一方面的第一种可能的实现方式中,所述当监测到客户机的控制流的触发事件,将当前执行指针跳转到所述汇编指令片段进行执行以启动所述样本程序之前,所述方法还包括:获取所述客户机的信息,所述客户机信息包括虚拟机名称、虚拟机类型以及虚拟机上运行的操作类型;根据所述客户机的信息、所述样本程序的类型以及所述样本程序位于所述客户机的位置生成用于启动所述样本程序的汇编指令片段。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述根据所述客户机的信息、所述样本程序的类型以及所述样本程序位于所述客户机的位置生成用于启动所述样本程序的汇编指令片段之后,所述方法还包括:调用虚拟机管理软件的内存操作接口,在客户机的内存空间上申请一段用于保存所述汇编指令片段的第一空间,所述第一空间大小为生成的所述汇编指令片段的大小;调用虚拟机管理软件的写内存接口,将所述汇编指令片段写入所述第一空间,并记录所述第一空间的首地址;所述将当前执行指针跳转到所述汇编指令片段进行执行以启动所述样本程序,包括:将当前执行指针跳转至所述第一空间的首地址,对所述第一空间内写入的所述汇编指令片段进行执行。
结合第一方面,在第一方面的第三种可能的实现方式中,在将样本程序输入到客户机之前,所述程序启动方法,还包括:调用虚拟机自省接口的中断操作接口注册中断事件,所述中断事件为所述客户机中的虚拟机系统启动后出现的任一中断事件;所述当监测到客户机的控制流的触发事件,将当前执行指针跳转到所述汇编指令片段进行执行以启动所述样本程序,包括:当监测到所述中断事件在虚拟机系统开机后被触发,将当前执行指针跳转到所述汇编指令片段进行执行以启动所述样本程序。
结合第一方面,在第一方面的第四种可能的实现方式中,所述将当前执行指针跳转到所述汇编指令片段进行执行以启动所述样本程序之前,所述方法还包括:备份当前指令执行现场信息,所述指令执行现场信息包括指针地址、栈地址以及寄存器的当前状态;所述将当前执行指针跳转到所述汇编指令片段进行执行以启动所述样本程序之后,所述方法还包括:根据所述指令执行现场信息,将所述当前执行指针跳转到备份时的状态,将栈以及寄存器恢复到备份时的状态。
结合第一方面、第一方面的第一种、第二种、第三种或者第四种可能的实现方式,在第一方面的第五种可能的实现方式中,所述启动所述样本程序,包括:为所述样本程序分配对应的虚拟内存空间;将所述样本程序的二进制文件读入所述虚拟内存空间中;将执行参数依次写入对应的栈中并设置相应的寄存器状态;找到执行所述样本程序的入口函数开始执行并从所述寄存器中存取相应参数根据代码逻辑进行处理。
结合第一方面、第一方面的第一种、第二种、第三种或者第四种可能的实现方式,在第一方面的第六种可能的实现方式中,所述将样本程序输入到客户机中,包括:将所述样本程序写入所述客户机的磁盘镜像中以使得所述客户机中的虚拟机系统启动时去挂载所述磁盘镜像,所述磁盘镜像的挂载路径唯一确定。
结合第一方面、第一方面的第一种、第二种、第三种或者第四种可能的实现方式,在第一方面的第七种可能的实现方式中,所述将样本程序输入到客户机中,包括:在所述客户机中的虚拟机系统启动后,通过虚拟机管理软件提供的文件操作接口将所述样本程序写入对应的路径中。
结合第一方面、第一方面的第一种、第二种、第三种或者第四种可能的实现方式,在第一方面的第八种可能的实现方式中,所述将样本程序输入到客户机中,包括:在所述客户机中的虚拟机系统启动后,通过虚拟机自省技术提供的操作权限直接调用客户机系统文件操作的底层接口完成样本程序的输入。
第二方面,本发明实施例提供一种程序启动装置,包括:
输入单元,用于将样本程序输入到客户机中;
执行单元,用于当监测到客户机的控制流的触发事件,将当前执行指针跳转到用于启动所述样本程序的汇编指令片段进行执行以启动所述样本程序。
结合第二方面,在第二方面的第一种可能的实现方式中,所述装置,还包括:
获取单元,用于当监测到客户机的控制流的触发事件,将当前执行指针跳转到用于启动所述样本程序的汇编指令片段进行执行以启动所述样本程序之前,获取所述客户机的信息,所述客户机信息包括虚拟机名称、虚拟机类型以及虚拟机上运行的操作类型;
生成单元,用于根据所述获取单元获取的客户机的信息、所述输入单元输入的样本程序的类型以及所述样本程序位于所述客户机的位置生成用于启动所述样本程序的汇编指令片段。
结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述装置,还包括:
第一调用单元,用于根据所述客户机的信息、所述样本程序的类型以及所述样本程序位于所述客户机的位置生成用于启动所述样本程序的汇编指令片段之后,调用虚拟机管理软件的内存操作接口,在客户机的内存空间上申请一段用于保存所述汇编指令片段的第一空间,所述第一空间大小为生成的所述汇编指令片段的大小;
第二调用单元,用于调用虚拟机管理软件的写内存接口,将所述汇编指令片段写入所述第一空间,并记录所述第一空间的首地址;
所述执行单元,具体用于将当前执行指针跳转至所述第一空间的首地址,对所述第一空间内写入的所述汇编指令片段进行执行。
结合第二方面,在第二方面的第三种可能的实现方式中,所述装置,还包括:
第三调用单元,用于在将样本程序输入到客户机之前,调用虚拟机自省接口的中断操作接口注册中断事件,所述中断事件为所述客户机中的虚拟机系统启动后出现的任一中断事件;
所述执行单元,具体用于当监测到所述中断事件在虚拟机系统开机后被触发,将当前执行指针跳转到所述汇编指令片段进行执行以启动所述样本程序。
结合第二方面,在第二方面的第四种可能的实现方式中,所述装置,还包括:
备份单元,用于将当前执行指针跳转到所述汇编指令片段进行执行以启动所述样本程序之前,备份当前指令执行现场信息,所述指令执行现场信息包括指针地址、栈地址以及寄存器的当前状态;
恢复单元,用于将当前执行指针跳转到所述汇编指令片段进行执行以启动所述样本程序之后,根据所述指令执行现场信息,将所述当前执行指针跳转到备份时的状态,将栈以及寄存器恢复到备份时的状态。
结合第二方面、第二方面的第一种、第二种或第三种可能的实现方式,在第二方面的第五种可能的实现方式中,所述执行单元,包括:
分配模块,用于为所述样本程序分配对应的虚拟内存空间;
读入模块,用于将所述样本程序的二进制文件读入所述分配模块分配的虚拟内存空间中;
写入模块,用于将执行参数依次写入对应的栈中并设置相应的寄存器状态;
处理模块,用于找到执行所述样本程序的入口函数开始执行并从所述寄存器中存取相应参数根据代码逻辑进行处理。
结合第二方面、第二方面的第一种、第二种或者第三种可能的实现方式,在第二方面的第六种可能的实现方式中,所述输入单元,具体用于:
将所述样本程序写入所述客户机的磁盘镜像中以使得所述客户机中的虚拟机系统启动时去挂载所述磁盘镜像,所述磁盘镜像的挂载路径唯一确定。
结合第二方面、第二方面的第一种、第二种或第三种可能的实现方式,在第二方面的第七种可能的实现方式中,所述输入单元,具体用于:
在所述客户机中的虚拟机系统启动后,通过虚拟机管理软件提供的文件操作接口将所述样本程序写入对应的路径中。
结合第二方面、第二方面的第一种、第二种或第三种可能的实现方式,在第二方面的第八种可能的实现方式中,所述输入单元,具体用于:
在所述客户机中的虚拟机系统启动后,通过虚拟机自省技术提供的操作权限直接调用客户机系统文件操作的底层接口完成样本程序的输入。
第三方面,本发明实施例提供一种电子设备,所述电子设备包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为上述电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一所述的程序启动方法。
第四方面,本发明的实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现前述任一所述的程序启动方法。
本发明实施例提供的一种程序启动方法、装置、电子设备及存储介质,通过在宿主机上将样本程序输入到客户机中;当监测到客户机的控制流的触发事件,将当前执行指针跳转到用于启动所述样本程序的汇编指令片段进行执行以启动所述样本程序,实现在客户机外部启动位于客户机中的样本程序,使得沙箱系统可以做到无需对虚拟机系统做出任何修改就能启动虚拟机中的样本程序的运行,而对样本程序本身来说无法检测到自身是通过什么方法被启动的,大大减小样本逃避的概率,使采集到的行为更加丰富,提高沙箱系统的行为检出率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明的实施例提供的一种程序启动方法的流程图;
图2为本发明又一实施例提供的一种程序启动方法的流程图;
图3为本发明另一实施例提供的一种程序启动方法的流程图
图4为本发明实施例提供的程序启动装置的结构示意图一;
图5为本发明实施例提供的程序启动装置的结构示意图二;
图6为本发明又一实施例提供的程序启动装置的结构示意图;
图7为图5-6所示的程序启动装置中执行单元的结构示意图;
图8为本发明电子设备一个实施例的结构示意图。
具体实施方式
下面结合附图对本发明实施例进行详细描述。
应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本实施例提供一种程序启动方法,以解决现有技术中需事先对目标客户机进行修改和配置,并且可能被启动后的样本程序通过搜索注册表项,自启动文件等方法进行识别,以此来逃避检测的问题。
图1为本发明的实施例提供的一种程序启动方法的流程图,如图1所示,本实施例的应用场景以虚拟机作为载体的沙箱,其包括宿主机、客户机,其中,所述宿主机为真实的物理设备,虚拟机系统和客户机安装在此设备之上;所述客户机为利用虚拟机软件,安装在宿主机之上的虚拟设备;所述虚拟机系统为安装在客户机设备(虚拟设备)之中的操作系统。
本实施例的方法,其执行主体为宿主机,可以包括:
步骤101、将样本程序输入到客户机中。
本实施例中,将样本程序输入到客户机中具体实现方式,可以有以下三种但不限于以下三种形式:
第一种:将所述样本程序写入所述客户机的磁盘镜像中以使得所述客户机中的虚拟机系统启动时去挂载所述磁盘镜像,所述磁盘镜像的挂载路径唯一确定。
第二种:在所述客户机中的虚拟机系统启动后,通过虚拟机管理软件提供的文件操作接口将所述样本程序写入对应的路径中。
第三种:在所述客户机中的虚拟机系统启动后,通过虚拟机自省技术提供的操作权限直接调用客户机系统文件操作的底层接口完成样本程序的输入。
步骤102、当监测到客户机的控制流的触发事件,将当前执行指针跳转到用于启动所述样本程序的汇编指令片段进行执行以启动所述样本程序。
在本实施例中,在客户机外部,也就是在宿主机上或者虚拟机管理软件层,通过截获客户器的控制流比如中断请求,系统调用表,或者修改客户机的内存或寄存器,以及对跳转结构的修改或者重定向,以此实现将自定义代码嵌入到客户机系统中并执行,通过以上描述的方法能避免对虚拟机内部的任何修改,使恶意样本无法检测到自己是如何被启动的,大大减小样本逃避的概率。
图2为本发明又一实施例提供的一种程序启动方法的流程图,如图2所示,在上述实施例的基础上,在所述步骤102之前,还包括:
步骤201、获取对应的客户机的信息,所述客户机信息包括虚拟机名称、虚拟机类型以及虚拟机上运行的操作类型。
步骤202、根据所述客户机的信息、所述样本程序的类型以及所述样本程序位于所述客户机的位置生成用于启动所述样本程序的汇编指令片段。
本实施例中,根据传入的被监控的客户机的信息,确定相关的数据结构,以及调用接口的选择,初始化数据结构,最重要的是根据样本程序的文件类型,以及在客户机中保存的位置,按自定义规则生成启动样本的汇编指令片段,然后调用虚拟机管理软件的内存操作接口,在客户机的内存空间上申请一段内存,大小为生成的汇编指令片段的大小,然后在调用写内存的接口将生成的汇编指令片段写入该段内存空间中,返回首地址,并进行记录保存。
其中,自定义规则与客户机上运行的操作系统对应,所述客户机上运行的操作系统包括但不限于Windows、Linux等。
值得说明的是,所述编译指令片段可以是如步骤201、202所述的,在输入样本程序之后,由宿主机自动获取信息进行编译指令片段的生成,也可以在输入样本程序之前,将预先设置的编译指令片段存储到相应的位置中。
在一实施例中,为了不影响虚拟机系统的运行,所述将当前执行指针跳转到所述汇编指令片段进行执行以启动所述样本程序之前,还包括:备份当前指令执行现场信息,所述指令执行现场信息包括指针地址、栈地址以及寄存器的当前状态;所述将当前执行指针跳转到所述汇编指令片段进行执行以启动所述样本程序之后,还包括:根据所述指令执行现场信息,将所述当前执行指针跳转到备份时的状态,将栈以及寄存器恢复到备份时的状态。
本发明实施例提供的一种程序启动方法,通过在宿主机上将将样本程序输入到客户机中并获取对应的客户机的信息,根据所述客户机的信息、所述样本程序的类型以及所述样本程序位于所述客户机的位置生成用于启动所述样本程序的汇编指令片段;当监测到预先注册的中断事件在虚拟机系统开机后被触发,将当前执行指针跳转到所述汇编指令片段进行执行以启动所述样本程序,实现在客户机外部启动位于客户机中的样本程序,使得沙箱系统可以做到无需对虚拟机系统做出任何修改就能启动虚拟机中的样本程序的运行,而对样本程序本身来说无法检测到自身是通过什么方法被启动的,大大减小样本逃避的概率,使采集到的行为更加丰富,提高沙箱系统的行为检出率。
图3为本发明另一实施例提供的一种程序启动方法的流程图,如图3所示,在本实施例中以中断事件为例进行详细说明,具体的,本实施例的方法可以包括:
步骤301、将样本程序输入到客户机中并获取对应的客户机的信息,所述客户机信息包括虚拟机名称、虚拟机类型以及虚拟机上运行的操作类型;
本实施例中,步骤301的过程和上述方法实施例的步骤101类似,此处不再赘述。
步骤302、根据所述客户机的信息、所述样本程序的类型以及所述样本程序位于所述客户机的位置生成用于启动所述样本程序的汇编指令片段。
步骤303、调用虚拟机管理软件的内存操作接口,在客户机的内存空间上申请一段用于保存所述汇编指令片段的第一空间。
在本实施例中,所述第一空间大小为生成的所述汇编指令片段的大小。
步骤304、调用虚拟机管理软件的写内存接口,将所述汇编指令片段写入所述第一空间,并记录所述第一空间的首地址。
步骤305、调用虚拟机自省接口的中断操作接口注册中断事件,所述中断事件为所述客户机中的虚拟机系统启动后出现的任一中断事件。
在虚拟机管理层,调用虚拟机自省接口的中断操作接口注册中断事件,对某中断进行监控,在客户机启动后,进入系统之后会调用该中断,当该中断发生后则会触发注册的中断事件,在注册的事件回调中进行逻辑处理。具体注册哪个中断需要根据虚拟机系统类型进行确定,因为不同的操作系统在进入操作系统后的启动流程存在部分差异。
示例性的,以INT3中断为例,对其注册中断事件进行监控,在事件回调中去备份当前执行指令的地址,然后将执行指针指向上一步中已经写入启动数据的内存地址。具体的注册操作可以使用LibVMI(LibVMI是美国的Sandia国家实验室的Brian D.Payne等人开发的提供虚拟机内省(VMI)功能的程序库)提供的接口vmi_register_event(vmi_instance_tvmi,vmi_event_t*event),填充event结构即可,在该结构中指定回调函数。
步骤306、当监测到所述中断事件在虚拟机系统开机后被触发,备份当前指令执行现场信息,将当前执行指针跳转至所述第一空间的首地址,对所述第一空间内写入的所述汇编指令片段进行执行。
在本实施例中,所述指令执行现场信息包括指针地址、栈地址以及寄存器的当前状态。
在本实施例中,所述启动所述样本程序,具体包括:为所述样本程序分配对应的虚拟内存空间;将所述样本程序的二进制文件读入所述虚拟内存空间中;执行参数依次写入对应的栈中并设置相应的寄存器状态;找到执行所述样本程序的入口函数开始执行并从所述寄存器中存取相应参数根据代码逻辑进行处理。
值得说明的是,该段写入的汇编指令片段完全是从底层模拟的程序的装载过程,调用内存操作接口申请4GB大小的虚拟内存区间,将对应的样本程序读入该段内存中,将参数写入相应的参数栈中,设置寄存器状态值,然后找到执行程序的入口函数进程执行,而入口函数的地址是固定的,因此很容易找打程序的入口地址,这样就能启动样本了。
步骤307、根据所述指令执行现场信息,将所述当前执行指针跳转到备份时的状态,将栈以及寄存器恢复到备份时的状态。
当利用上述描述的步骤完成客户机中的样本的启动之后,也就是说样本被正常启动后,则退出这段汇编指令片段,在退出之前需要做的一件事就是恢复拦截点的现场,具体的恢复方法为,将当前执行指针指向之前备份的地址,并且按照备份的栈,和寄存器状态,对相关栈进行恢复,设置相关的寄存状态,确保对系统不造成影响。
本发明实施例提供的一种程序启动方法,通过在宿主机上将样本程序输入到客户机中并获取对应的客户机的信息,根据所述客户机的信息、所述样本程序的类型以及所述样本程序位于所述客户机的位置生成用于启动所述样本程序的汇编指令片段;当监测到预先注册的中断事件在虚拟机系统开机后被触发,将当前执行指针跳转到所述汇编指令片段进行执行以启动所述样本程序,实现在客户机外部启动位于客户机中的样本程序,使得沙箱系统可以做到无需对虚拟机系统做出任何修改就能启动虚拟机中的样本程序的运行,而对样本程序本身来说无法检测到自身是通过什么方法被启动的,大大减小样本逃避的概率,使采集到的行为更加丰富,提高沙箱系统的行为检出率。
图4为本发明一实施例提供的程序启动装置的结构示意图,如图4所示,本实施例的程序启动装置可以包括输入单元41和执行单元42。
其中,所述输入单元41,用于将样本程序输入到客户机中。
在一实施例中,所述输入单元41,具体用于:将所述样本程序写入所述客户机的磁盘镜像中以使得所述客户机中的虚拟机系统启动时去挂载所述磁盘镜像,所述磁盘镜像的挂载路径唯一确定。
又一实施例中,所述输入单元41,具体用于:在所述客户机中的虚拟机系统启动后,通过虚拟机管理软件提供的文件操作接口将所述样本程序写入对应的路径中。
再一实施例中,所述输入单元41,具体用于:在所述客户机中的虚拟机系统启动后,通过虚拟机自省技术提供的操作权限直接调用客户机系统文件操作的底层接口完成样本程序的输入。
所述执行单元42,用于当监测到客户机的控制流的触发事件,将当前执行指针跳转到用于启动所述样本程序的汇编指令片段进行执行以启动所述样本程序。
本实施例的装置,可以用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
可选的,在一实施例中,如图5所示,所述装置还包括获取单元52和生成单元53。
其中,所述获取单元52,用于当监测到客户机的控制流的触发事件,将当前执行指针跳转到用于启动所述样本程序的汇编指令片段进行执行以启动所述样本程序之前,获取所述客户机的信息,所述客户机信息包括虚拟机名称、虚拟机类型以及虚拟机上运行的操作类型;所述生成单元53,用于根据所述获取单元获取的客户机的信息、所述输入单元输入的样本程序的类型以及所述样本程序位于所述客户机的位置生成用于启动所述样本程序的汇编指令片段。
本发明实施例提供的一种程序启动装置,通过在宿主机上将将样本程序输入到客户机中并获取对应的客户机的信息,根据所述客户机的信息、所述样本程序的类型以及所述样本程序位于所述客户机的位置生成用于启动所述样本程序的汇编指令片段;当监测到预先注册的中断事件在虚拟机系统开机后被触发,将当前执行指针跳转到所述汇编指令片段进行执行以启动所述样本程序,实现在客户机外部启动位于客户机中的样本程序,使得沙箱系统可以做到无需对虚拟机系统做出任何修改就能启动虚拟机中的样本程序的运行,而对样本程序本身来说无法检测到自身是通过什么方法被启动的,大大减小样本逃避的概率,使采集到的行为更加丰富,提高沙箱系统的行为检出率。
图6为本发明又一实施例提供的程序启动装置的结构示意图,如图6所示,本实施例的装置在图3所示装置结构的基础上,进一步地,还可以包括第一调用单元61和第二调用单元62。
其中,所述第一调用单元61,用于根据所述客户机的信息、所述样本程序的类型以及所述样本程序位于所述客户机的位置生成用于启动所述样本程序的汇编指令片段之后,调用虚拟机管理软件的内存操作接口,在客户机的内存空间上申请一段用于保存所述汇编指令片段的第一空间,所述第一空间大小为生成的所述汇编指令片段的大小。
所述第二调用单元62,用于调用虚拟机管理软件的写内存接口,将所述汇编指令片段写入所述第一空间,并记录所述第一空间的首地址。
所述执行单元42,具体用于将当前执行指针跳转至所述第一空间的首地址,对所述第一空间内写入的所述汇编指令片段进行执行。
进一步的,在一实施例中,所述客户机的控制流为中断事件,所述程序启动装置还包括:第三调用单元63,用于在将样本程序输入到客户机之前,调用虚拟机自省接口的中断操作接口注册中断事件,所述中断事件为所述客户机中的虚拟机系统启动后出现的任一中断事件;所述执行单元42,具体用于当监测到所述中断事件在虚拟机系统开机后被触发,将当前执行指针跳转到所述汇编指令片段进行执行以启动所述样本程序。
进一步的,为了不影响虚拟机系统的运行,所述程序启动装置还包括:备份单元,用于将当前执行指针跳转到所述汇编指令片段进行执行以启动所述样本程序之前,备份当前指令执行现场信息,所述指令执行现场信息包括指针地址、栈地址以及寄存器的当前状态;恢复单元,用于将当前执行指针跳转到所述汇编指令片段进行执行以启动所述样本程序之后,根据所述指令执行现场信息,将所述当前执行指针跳转到备份时的状态,将栈以及寄存器恢复到备份时的状态。
如图7所示,在一实施例中,所述执行单元42,包括:
分配模块421,用于为所述样本程序分配对应的虚拟内存空间;
读入模块422,用于将所述样本程序的二进制文件读入所述分配模块分配的虚拟内存空间中;
写入模块423,用于将执行参数依次写入对应的栈中并设置相应的寄存器状态;
处理模块424,用于找到执行所述样本程序的入口函数开始执行并从所述寄存器中存取相应参数根据代码逻辑进行处理。
本实施例的装置,可以用于执行图2所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本发明实施例提供的一种程序启动装置,通过在宿主机上将将样本程序输入到客户机中并获取对应的客户机的信息,根据所述客户机的信息、所述样本程序的类型以及所述样本程序位于所述客户机的位置生成用于启动所述样本程序的汇编指令片段;当监测到预先注册的中断事件在虚拟机系统开机后被触发,将当前执行指针跳转到所述汇编指令片段进行执行以启动所述样本程序,实现在客户机外部启动位于客户机中的样本程序,使得沙箱系统可以做到无需对虚拟机系统做出任何修改就能启动虚拟机中的样本程序的运行,而对样本程序本身来说无法检测到自身是通过什么方法被启动的,大大减小样本逃避的概率,使采集到的行为更加丰富,提高沙箱系统的行为检出率。
本发明实施例还提供一种电子设备,图8为本发明电子设备一个实施例的结构示意图,可以实现本发明图1-3所示实施例的流程,如图8所示,上述电子设备可以包括:壳体81、处理器82、存储器83、电路板84和电源电路85,其中,电路板84安置在壳体81围成的空间内部,处理器82和存储器83设置在电路板84上;电源电路85,用于为上述电子设备的各个电路或器件供电;存储器83用于存储可执行程序代码;处理器82通过读取存储器83中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一实施例所述的程序启动方法。
处理器82对上述步骤的具体执行过程以及处理器82通过运行可执行程序代码来进一步执行的步骤,可以参见本发明图1-3所示实施例的描述,在此不再赘述。
该电子设备以多种形式存在,包括但不限于:
(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如iPhone)、多媒体手机、功能性手机,以及低端手机等。
(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:PDA、MID和UMPC设备等,例如iPad。
(3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器(例如iPod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。
(4)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
(5)其他具有数据交互功能的电子设备。
本发明的实施例还提供一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现前述的程序启动方法。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
为了描述的方便,描述以上装置是以功能分为各种单元/模块分别描述。当然,在实施本发明时可以把各单元/模块的功能在同一个或多个软件和/或硬件中实现。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (20)
1.一种程序启动方法,其特征在于,应用于宿主机,该方法包括:
将样本程序输入到客户机中;
当监测到客户机的控制流的触发事件,将当前执行指针跳转到用于启动所述样本程序的汇编指令片段进行执行以启动所述样本程序。
2.根据权利要求1所述的方法,其特征在于,所述当监测到客户机的控制流的触发事件,将当前执行指针跳转到用于启动所述样本程序的汇编指令片段进行执行以启动所述样本程序之前,所述方法还包括:
获取所述客户机的信息,所述客户机信息包括虚拟机名称、虚拟机类型以及虚拟机上运行的操作类型;
根据所述客户机的信息、所述样本程序的类型以及所述样本程序位于所述客户机的位置生成用于启动所述样本程序的汇编指令片段。
3.根据权利要求2所述的方法,其特征在于,所述根据所述客户机的信息、所述样本程序的类型以及所述样本程序位于所述客户机的位置生成用于启动所述样本程序的汇编指令片段之后,所述方法还包括:
调用虚拟机管理软件的内存操作接口,在客户机的内存空间上申请一段用于保存所述汇编指令片段的第一空间,所述第一空间大小为生成的所述汇编指令片段的大小;
调用虚拟机管理软件的写内存接口,将所述汇编指令片段写入所述第一空间,并记录所述第一空间的首地址;
所述将当前执行指针跳转到所述汇编指令片段进行执行以启动所述样本程序,包括:
将当前执行指针跳转至所述第一空间的首地址,对所述第一空间内写入的所述汇编指令片段进行执行。
4.根据权利要求1所述的方法,其特征在于,在将样本程序输入到客户机之前,所述方法还包括:
调用虚拟机自省接口的中断操作接口注册中断事件,所述中断事件为所述客户机中的虚拟机系统启动后出现的任一中断事件;
所述当监测到客户机的控制流的触发事件,将当前执行指针跳转到所述汇编指令片段进行执行以启动所述样本程序,包括:
当监测到所述中断事件在虚拟机系统开机后被触发,将当前执行指针跳转到所述汇编指令片段进行执行以启动所述样本程序。
5.根据权利要求1所述的方法,其特征在于,所述将当前执行指针跳转到所述汇编指令片段进行执行以启动所述样本程序之前,所述方法还包括:
备份当前指令执行现场信息,所述指令执行现场信息包括指针地址、栈地址以及寄存器的当前状态;
所述将当前执行指针跳转到所述汇编指令片段进行执行以启动所述样本程序之后,所述方法还包括:
根据所述指令执行现场信息,将所述当前执行指针跳转到备份时的状态,将栈以及寄存器恢复到备份时的状态。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述启动所述样本程序,包括:
为所述样本程序分配对应的虚拟内存空间;
将所述样本程序的二进制文件读入所述虚拟内存空间中;
将执行参数依次写入对应的栈中并设置相应的寄存器状态;
找到执行所述样本程序的入口函数开始执行并从所述寄存器中存取相应参数根据代码逻辑进行处理。
7.根据权利要求1-5任一项所述的方法,其特征在于,所述将样本程序输入到客户机中,包括:
将所述样本程序写入所述客户机的磁盘镜像中以使得所述客户机中的虚拟机系统启动时去挂载所述磁盘镜像,所述磁盘镜像的挂载路径唯一确定。
8.根据权利要求1-5任一项所述的方法,其特征在于,所述将样本程序输入到客户机中,包括:
在所述客户机中的虚拟机系统启动后,通过虚拟机管理软件提供的文件操作接口将所述样本程序写入对应的路径中。
9.根据权利要求1-5任一项所述的方法,其特征在于,所述将样本程序输入到客户机中,包括:
在所述客户机中的虚拟机系统启动后,通过虚拟机自省技术提供的操作权限直接调用客户机系统文件操作的底层接口完成样本程序的输入。
10.一种程序启动装置,其特征在于,包括:
输入单元,用于将样本程序输入到客户机中;
执行单元,用于当监测到客户机的控制流的触发事件,将当前执行指针跳转到用于启动所述样本程序的汇编指令片段进行执行以启动所述样本程序。
11.根据权利要去10所述的装置,其特征在于,还包括:
获取单元,用于当监测到客户机的控制流的触发事件,将当前执行指针跳转到用于启动所述样本程序的汇编指令片段进行执行以启动所述样本程序之前,获取所述客户机的信息,所述客户机信息包括虚拟机名称、虚拟机类型以及虚拟机上运行的操作类型;
生成单元,用于根据所述获取单元获取的客户机的信息、所述输入单元输入的样本程序的类型以及所述样本程序位于所述客户机的位置生成用于启动所述样本程序的汇编指令片段。
12.根据权利要求11所述的装置,其特征在于,还包括:
第一调用单元,用于根据所述客户机的信息、所述样本程序的类型以及所述样本程序位于所述客户机的位置生成用于启动所述样本程序的汇编指令片段之后,调用虚拟机管理软件的内存操作接口,在客户机的内存空间上申请一段用于保存所述汇编指令片段的第一空间,所述第一空间大小为生成的所述汇编指令片段的大小;
第二调用单元,用于调用虚拟机管理软件的写内存接口,将所述汇编指令片段写入所述第一空间,并记录所述第一空间的首地址;
所述执行单元,具体用于将当前执行指针跳转至所述第一空间的首地址,对所述第一空间内写入的所述汇编指令片段进行执行。
13.根据权利要求10所述的装置,其特征在于,还包括:
第三调用单元,用于在将样本程序输入到客户机之前,调用虚拟机自省接口的中断操作接口注册中断事件,所述中断事件为所述客户机中的虚拟机系统启动后出现的任一中断事件;
所述执行单元,具体用于当监测到所述中断事件在虚拟机系统开机后被触发,将当前执行指针跳转到所述汇编指令片段进行执行以启动所述样本程序。
14.根据权利要求10所述的装置,其特征在于,还包括:
备份单元,用于将当前执行指针跳转到所述汇编指令片段进行执行以启动所述样本程序之前,备份当前指令执行现场信息,所述指令执行现场信息包括指针地址、栈地址以及寄存器的当前状态;
恢复单元,用于将当前执行指针跳转到所述汇编指令片段进行执行以启动所述样本程序之后,根据所述指令执行现场信息,将所述当前执行指针跳转到备份时的状态,将栈以及寄存器恢复到备份时的状态。
15.根据权利要求10-14任一项所述的装置,其特征在于,所述执行单元,包括:
分配模块,用于为所述样本程序分配对应的虚拟内存空间;
读入模块,用于将所述样本程序的二进制文件读入所述分配模块分配的虚拟内存空间中;
写入模块,用于将执行参数依次写入对应的栈中并设置相应的寄存器状态;
处理模块,用于找到执行所述样本程序的入口函数开始执行并从所述寄存器中存取相应参数根据代码逻辑进行处理。
16.根据权利要求10-14任一项所述的装置,其特征在于,所述输入单元,具体用于:
将所述样本程序写入所述客户机的磁盘镜像中以使得所述客户机中的虚拟机系统启动时去挂载所述磁盘镜像,所述磁盘镜像的挂载路径唯一确定。
17.根据权利要求10-14任一项所述的装置,其特征在于,所述输入单元,具体用于:
在所述客户机中的虚拟机系统启动后,通过虚拟机管理软件提供的文件操作接口将所述样本程序写入对应的路径中。
18.根据权利要求10-14任一项所述的装置,其特征在于,所述输入单元,具体用于:
在所述客户机中的虚拟机系统启动后,通过虚拟机自省技术提供的操作权限直接调用客户机系统文件操作的底层接口完成样本程序的输入。
19.一种电子设备,其特征在于,所述电子设备包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为上述电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一权利要求所述的方法。
20.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现前述任一权利要求所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711391646.7A CN108875357B (zh) | 2017-12-20 | 2017-12-20 | 一种程序启动方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711391646.7A CN108875357B (zh) | 2017-12-20 | 2017-12-20 | 一种程序启动方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108875357A true CN108875357A (zh) | 2018-11-23 |
CN108875357B CN108875357B (zh) | 2020-05-12 |
Family
ID=64325789
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711391646.7A Active CN108875357B (zh) | 2017-12-20 | 2017-12-20 | 一种程序启动方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108875357B (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101373502A (zh) * | 2008-05-12 | 2009-02-25 | 公安部第三研究所 | 基于Win32平台下病毒行为的自动化分析系统 |
CN102542196A (zh) * | 2011-11-23 | 2012-07-04 | 北京安天电子设备有限公司 | 一种恶意代码发现和预防方法 |
CN102707985A (zh) * | 2011-03-28 | 2012-10-03 | 中兴通讯股份有限公司 | 一种虚拟机系统的访问控制方法和系统 |
US20130340050A1 (en) * | 2008-11-26 | 2013-12-19 | David A. Harrison | Zero configuration communications between a sandboxed program and a networked service |
CN104462955A (zh) * | 2014-12-25 | 2015-03-25 | 中国科学院信息工程研究所 | 一种基于虚拟化的主机行为主动检测系统及方法 |
CN104866764A (zh) * | 2015-06-02 | 2015-08-26 | 哈尔滨工业大学 | 一种基于对象引用图的Android手机恶意软件检测方法 |
US9165142B1 (en) * | 2013-01-30 | 2015-10-20 | Palo Alto Networks, Inc. | Malware family identification using profile signatures |
CN105631312A (zh) * | 2015-12-25 | 2016-06-01 | 北京奇虎科技有限公司 | 恶意程序的处理方法及系统 |
CN106547608A (zh) * | 2016-09-09 | 2017-03-29 | 北京安天电子设备有限公司 | 一种基于内存页主动合并技术的沙箱并发方法及系统 |
US20170111374A1 (en) * | 2015-10-20 | 2017-04-20 | Sophos Limited | Mitigation of anti-sandbox malware techniques |
CN107391234A (zh) * | 2017-08-10 | 2017-11-24 | 西安电子科技大学 | 一种基于vmi的文件系统细粒度监控方法 |
-
2017
- 2017-12-20 CN CN201711391646.7A patent/CN108875357B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101373502A (zh) * | 2008-05-12 | 2009-02-25 | 公安部第三研究所 | 基于Win32平台下病毒行为的自动化分析系统 |
US20130340050A1 (en) * | 2008-11-26 | 2013-12-19 | David A. Harrison | Zero configuration communications between a sandboxed program and a networked service |
CN102707985A (zh) * | 2011-03-28 | 2012-10-03 | 中兴通讯股份有限公司 | 一种虚拟机系统的访问控制方法和系统 |
CN102542196A (zh) * | 2011-11-23 | 2012-07-04 | 北京安天电子设备有限公司 | 一种恶意代码发现和预防方法 |
US9165142B1 (en) * | 2013-01-30 | 2015-10-20 | Palo Alto Networks, Inc. | Malware family identification using profile signatures |
CN104462955A (zh) * | 2014-12-25 | 2015-03-25 | 中国科学院信息工程研究所 | 一种基于虚拟化的主机行为主动检测系统及方法 |
CN104866764A (zh) * | 2015-06-02 | 2015-08-26 | 哈尔滨工业大学 | 一种基于对象引用图的Android手机恶意软件检测方法 |
US20170111374A1 (en) * | 2015-10-20 | 2017-04-20 | Sophos Limited | Mitigation of anti-sandbox malware techniques |
CN105631312A (zh) * | 2015-12-25 | 2016-06-01 | 北京奇虎科技有限公司 | 恶意程序的处理方法及系统 |
CN106547608A (zh) * | 2016-09-09 | 2017-03-29 | 北京安天电子设备有限公司 | 一种基于内存页主动合并技术的沙箱并发方法及系统 |
CN107391234A (zh) * | 2017-08-10 | 2017-11-24 | 西安电子科技大学 | 一种基于vmi的文件系统细粒度监控方法 |
Non-Patent Citations (2)
Title |
---|
李伟明 等: ""针对恶意代码的连续内存镜像分析方法"", 《网络与信息安全学报》 * |
陈兴蜀 等: ""基于KVM的Windows虚拟机用户进程防护"", 《电子科技大学学报》 * |
Also Published As
Publication number | Publication date |
---|---|
CN108875357B (zh) | 2020-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106133698B (zh) | 用于用户模式崩溃报告的框架 | |
US8429745B1 (en) | Systems and methods for data loss prevention on mobile computing systems | |
RU2571726C2 (ru) | Система и способ проверки целесообразности установки обновлений | |
US9509697B1 (en) | Systems and methods for authorizing attempts to access shared libraries | |
KR102534334B1 (ko) | 컴퓨팅 디바이스들에서 프로세스들에 대한 소프트웨어 공격들의 검출 | |
CN109726067B (zh) | 一种进程监控方法以及客户端设备 | |
US20160217029A1 (en) | Data Flow Tracking Via Memory Monitoring | |
CN105164657A (zh) | 程序数据至非易失性存储器的选择性备份 | |
US11327816B2 (en) | Monitoring components in a service framework | |
CN111800490B (zh) | 获取网络行为数据的方法、装置及终端设备 | |
JP7144642B2 (ja) | フォレンジクスのための動作ベースのvmリソースキャプチャ | |
Margosis et al. | Windows Sysinternals administrator's reference | |
US9552481B1 (en) | Systems and methods for monitoring programs | |
CN110380860B (zh) | 基于区块链智能合约的共有资源数据处理方法和设备 | |
Stirparo et al. | In-memory credentials robbery on android phones | |
CN108874658A (zh) | 一种沙箱分析方法、装置、电子设备及存储介质 | |
CN115659340B (zh) | 一种仿冒小程序识别方法、装置、存储介质及电子设备 | |
CN112182581A (zh) | 应用测试方法、装置、应用测试设备和存储介质 | |
US20180035285A1 (en) | Semantic Privacy Enforcement | |
US9692773B1 (en) | Systems and methods for identifying detection-evasion behaviors of files undergoing malware analyses | |
US20130111163A1 (en) | Multiple Computing Environments On A Computer System | |
CN108875357A (zh) | 一种程序启动方法、装置、电子设备及存储介质 | |
CN105700912A (zh) | 应用删除方法及应用删除装置 | |
Castiglione et al. | How to forge a digital alibi on Mac OS X | |
US20210303414A1 (en) | Achieving activity centric computing using portable containers |
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 |