1.本技术涉及计算机网络安全
技术领域:
:,特别是涉及一种内存取证方法、装置及电子设备。
背景技术:
::2.随着物联网技术的快速发展,基于linux操作系统的elf格式的物联网(internetofthings,iot)恶意软件日渐增多,海量的非x86架构的iot样本需要自动化动态分析排查,且现今恶意软件日趋复杂,高级持续性威胁(advancedpersistentthreat,apt)攻防的复杂性和隐蔽性越来越强,因此,急需一种内存取证方法,对任意cpu架构构成的iot样本进行指令级分析,进而实时对恶意软件的恶意行为进行实时检测排查,其中,恶意行为可以控制系统服务器,盗取重要信息,破坏系统稳定性。3.现阶段的内存取证方法主要是通过虚拟处理器qemu对任意cpu架构的iot样本进行动态分析,其中,qemu有两种运行模式,一种是用户态模拟模式qemu-user,另一种运行模式为全系统模拟模式qemu-system,一般情况下,qemu-user不能直接对cpu内核层进行检测,无法满足cpu指令级分析需求,而qemu-system既可以模拟操作系统用户态运行,也可以模拟操作系统内核态运行,因此,目前主要运用qemu-system对任意cpu架构的iot样本进行动态分析。4.虽然上述基于qemu-system可以实现对任意cpu架构的iot样本进行动态分析,但是由于qemu-system需要模拟执行整个操作系统的操作指令以及在操作系统上运行的iot样本的所有指令,导致在对iot样本进行内存取证的效率不高,无法满足大量iot样本的内存取证需求。技术实现要素:5.本技术提供了一种内存取证方法、装置及电子设备,在检测到iot样本中的中断指令执行过程符合预设规则时,进一步访问iot样本对应的内存地址空间,进而读取用于进行内存取证的内存数据,这种内存取证方式不需要模拟执行操作系统的操作指令,并且不需要iot样本运行结束就可以快速获取iot样本对应的内存数据,从而提高内存取证的效率与准确性。6.第一方面,本技术提供了一种内存取证方法,所述方法包括:7.在获取到物联网iot样本时,通过操作系统内核态执行所述iot样本中的中断指令;8.在检测到所述中断指令的执行过程符合第一预设规则时,通过预设方式访问所述iot样本对应的内存地址空间,其中,所述第一预设规则为恶意样本的运行规则;9.读取所述内存地址空间对应的内存数据,并基于所述内存数据对所述iot样本进行内存取证。10.通过上述方法,在检测到iot样本中的中断指令执行过程符合预设规则时,进一步访问iot样本对应的内存地址空间,进而读取用于进行内存取证的内存数据,这种内存取证方式不需要模拟执行操作系统的操作指令,并且不需要iot样本运行结束就可以快速获取iot样本对应的内存数据,从而提高内存取证的效率与准确性。11.进一步,通过操作系统内核态执行iot样本中的中断指令,包括:12.基于硬件虚拟化的虚拟化程序启动所述操作系统;13.通过所述操作系统用户态运行所述iot样本,并检测是否触发所述iot样本中的中断指令;14.若是,则将所述操作系统用户态调整为内核态,并通过所述操作系统内核态执行所述中断指令;15.若否,则继续以所述操作系统用户态运行所述iot样本。16.通过上述方法,在执行iot样本的过程中触发中断指令时,以操作系统用户态执行该中断指令,可以支持后续进一步获取iot样本运行过程对应的内存数据。17.进一步,在检测到所述中断指令的执行过程符合第一预设规则时,通过预设方式访问所述iot样本对应的内存地址空间,包括:18.对预设函数增强页表的钩子程序;19.通过所述钩子程序,检测所述中断指令的执行过程是否调用所述预设函数;20.若是,则继续执行所述预设函数,并通过触发预设指令访问所述iot样本对应的内存地址空间;21.若否,则继续执行所述中断指令。22.通过上述方法,对预设函数设置陷阱,在该陷阱被触发时表明iot样本可能为恶意样本,然后进一步通过执行预设指令访问iot样本对应的内存地址空间,便于对该iot样本进一步作内存取证分析。23.进一步,读取所述内存地址空间对应的内存数据,并基于所述内存数据对所述iot样本进行内存取证,包括:24.获取所述iot样本所在的操作系统对应的内存地址空间读写规则;25.根据所述内存地址空间读写规则,读取所述iot样本对应内存地址空间的内存数据;26.基于所述内存数据分析所述iot样本的运行过程,对所述iot样本进行内存取证。27.通过上述方法,读取iot样本内存地址空间对应的内存数据,并使用该内存数据用以进行内存取证分析。28.在一种可能的设计中,通过操作系统内核态执行所述iot样本中的中断指令,包括:29.判定所述iot样本是否为恶意样本;30.若否,则通过操作系统内核态执行所述iot样本中的中断指令;31.若是,则根据用户态预设模拟器插件启动所述恶意样本,其中,所述用户态预设模拟器插件能够获取当前进程对应的虚拟cpu寄存器值;32.追踪所述恶意样本对应的指令执行过程,并检测当前指令的执行过程是否符合第二预设规则,其中,所述第二预设规则为恶意样本的运行规则;33.在所述当前指令的执行过程符合所述第二预设规则时,根据所述恶意样本运行过程对应的内存数据对所述恶意样本进行内存取证。34.通过上述方法,在iot样本为恶意样本时,不需要等待iot样本的执行过程进入操作系统内核态,便可以基于用户态预设插件对该iot样本所有指令的执行过程进行分析,可以提高内存取证的效率。35.进一步,所述追踪所述恶意样本对应的指令执行过程,并检测当前指令的执行过程是否符合第二预设规则,包括:36.利用所述用户态预设模拟器插件获取预设指针;37.通过所述预设指针,读取所述恶意样本中的当前指令执行过程对应虚拟cpu的寄存器值;38.根据所述寄存器值,分析得到所述当前指针执行过程对应的内存数据;39.根据所述寄存器值和所述内存数据,判定所述当前指令的执行过程是否符合所述第二预设规则。40.通过上述方法,追踪恶意样本的指令执行过程,并获取恶意样本中的每一个指令的执行过程对应的寄存器值及内存数据,从而实现对iot样本进行指令级分析。41.进一步,根据所述寄存器值和所述内存数据,判定所述当前指令的执行过程是否符合所述第二预设规则,包括:42.判定所述寄存器值是否处于第一预设数值范围,并判定所述内存数据是否处于第二预设数值范围;43.若所述寄存器值处于所述第一预设数值范围,并且所述内存数据处于所述第二预设数值范围,则判定所述当前指令的执行过程符合所述第二预设规则;44.若所述寄存器值没有处于所述第一预设数值范围和/或所述内存数据没有处于所述第二预设数值范围,则判定所述当前指令的执行过程不符合所述第二预设规则。45.通过上述方法,判定当前指令的执行过程是否符合第二预设规则,以便于在当前指令的执行过程符合恶意程序的运行规则时,获取当前指令执行过程对应的用于进行内存取证分析的内存数据。46.进一步,根据所述恶意样本运行过程对应的内存数据对所述恶意样本作内存取证,包括:47.对所述恶意样本的运行过程进行监视;48.根据所述内存地址空间读写规则,读取所述恶意样本运行过程对应的内存数据;49.根据所述内存数据分析所述恶意样本的运行过程,对所述恶意样本进行内存取证。50.通过上述方法,读取恶意样本内存地址空间对应的内存数据,并使用该内存数据用以进行内存取证分析。51.第二方面,本技术提供了一种内存取证装置,所述装置包括:52.执行模块,用于在获取到物联网iot样本时,通过操作系统内核态执行所述iot样本中的中断指令;53.访问模块,用于在检测到所述中断指令的执行过程符合第一预设规则时,通过预设方式访问所述iot样本对应的内存地址空间,其中,所述第一预设规则为恶意样本的运行规则;54.取证模块,用于读取所述内存地址空间对应的内存数据,并基于所述内存数据对所述iot样本进行内存取证。55.进一步,所述执行模块具体用于:56.基于硬件虚拟化的虚拟化程序启动所述操作系统;57.通过所述操作系统用户态运行所述iot样本,并检测是否触发所述iot样本中的中断指令;58.若是,则将所述操作系统用户态调整为内核态,并通过所述操作系统内核态执行所述中断指令;59.若否,则继续以所述操作系统用户态运行所述iot样本。60.进一步,所述访问模块具体用于:61.对预设函数增强页表的钩子程序;62.通过所述钩子程序,检测所述中断指令的执行过程是否调用所述预设函数;63.若是,则继续执行所述预设函数,并通过触发预设指令访问所述iot样本对应的内存地址空间;64.若否,则继续执行所述中断指令。65.进一步,所述读取模块具体用于:66.获取所述iot样本所在的操作系统对应的内存地址空间读写规则;67.根据所述内存地址空间读写规则,读取所述iot样本对应内存地址空间的内存数据;68.基于所述内存数据分析所述iot样本的运行过程,对所述iot样本进行内存取证。69.在一种可能的设计中,所述执行模块包括:70.判定单元,用于判定所述iot样本是否为恶意样本;71.执行单元,用于若所述iot样本为非恶意样本,则通过操作系统内核态执行所述iot样本中的中断指令;72.启动单元,用于若所述iot样本为恶意样本,则根据用户态预设模拟器插件启动所述恶意样本,其中,所述用户态预设模拟器插件能够获取当前进程对应的虚拟cpu寄存器值;73.检测单元,用于追踪所述恶意样本对应的指令执行过程,并检测当前指令的执行过程是否符合第二预设规则,其中,所述第二预设规则为恶意样本的运行规则;74.取证单元,用于在所述当前指令的执行过程符合所述第二预设规则时,根据所述恶意样本运行过程对应的内存数据对所述恶意样本进行内存取证。75.进一步,所述检测单元具体用于:76.利用所述用户态预设模拟器插件获取预设指针;77.通过所述预设指针,读取所述恶意样本中的当前指令执行过程对应虚拟cpu的寄存器值;78.根据所述寄存器值,分析得到所述当前指针执行过程对应的内存数据;79.根据所述寄存器值和所述内存数据,判定所述当前指令的执行过程是否符合所述第二预设规则。80.进一步,所述检测单元还用于:81.判定所述寄存器值是否处于第一预设数值范围,并判定所述内存数据是否处于第二预设数值范围;82.若所述寄存器值处于所述第一预设数值范围,并且所述内存数据处于所述第二预设数值范围,则判定所述当前指令的执行过程符合所述第二预设规则;83.若所述寄存器值没有处于所述第一预设数值范围和/或所述内存数据没有处于所述第二预设数值范围,则判定所述当前指令的执行过程不符合所述第二预设规则。84.进一步,所述取证单元具体用于:85.对所述恶意样本的运行过程进行监视;86.根据所述内存地址空间读写规则,读取所述恶意样本运行过程对应的内存数据;87.根据所述内存数据分析所述恶意样本的运行过程,对所述恶意样本进行内存取证。88.第三方面,本技术提供了一种电子设备,包括:89.存储器,用于存放计算机程序;90.处理器,用于执行所述存储器上所存放的计算机程序时,实现上述内存取证方法步骤。91.第四方面,本技术提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述内存取证方法步骤。92.基于以上的内存取证方法,在检测到iot样本中的中断指令执行过程符合预设规则时,进一步访问iot样本对应的内存地址空间,进而读取用于进行内存取证的内存数据,这种内存取证方式不需要模拟执行操作系统的操作指令,并且不需要iot样本运行结束就可以快速获取iot样本对应的内存数据,从而提高内存取证的效率与准确性。93.上述第二方面至第四方面中的各个方面以及各个方面可能达到的技术效果参照上述针对第一方面或者第一方面中的各种可能方案可以达到的技术效果说明,这里不再重复赘述。附图说明94.图1为本技术提供的一种内存取证方法的流程图;95.图2为本技术提供的一种内存取证装置的结构示意图;96.图3为本技术提供的一种电子设备结构示意图。具体实施方式97.为了使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术作进一步地详细描述。方法实施例中的具体操作方法也可以应用于装置实施例或系统实施例中。需要说明的是,在本技术的描述中“多个”理解为“至少两个”。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。a与b连接,可以表示:a与b直接连接和a与b通过c连接这两种情况。另外,在本技术的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。98.下面结合附图,对本技术实施例进行详细描述。99.现阶段对恶意软件进行内存取证方法主要是通过虚拟处理器qemu对任意cpu架构的恶意样本进行动态分析,其中,qemu有两种运行模式,一种是用户态模拟模式qemu-user,另一种运行模式为全系统模拟模式qemu-system,一般情况下,qemu-user不能直接对cpu内核层进行检测,无法满足cpu指令级分析需求,而qemu-system既可以模拟操作系统用户态运行,也可以模拟操作系统内核态运行,因此,目前主要运用qemu-system对任意cpu架构的iot样本进行动态分析。100.虽然上述基于qemu-system可以实现对任意cpu架构的iot样本进行动态分析,但是由于qemu-system需要模拟执行整个操作系统的操作指令以及在操作系统上运行的iot样本的所有指令,导致在对iot样本进行内存取证的效率不高,无法满足大量iot样本的内存取证需求。101.为了解决上述问题,本技术提供了一种内存取证方法,在检测到iot样本中的中断指令执行过程符合预设规则时,进一步通过预设方式直接访问iot样本对应的内存地址空间,并且读取用于进行内存取证的内存数据,这种内存取证方式不需要模拟执行操作系统的操作指令,并且不需要iot样本运行结束就可以快速定位iot样本对应的内存空间地址,读取用于内存取证的内存数据,从而提高内存取证的效率与准确性。其中,本技术实施例所述方法和装置基于同一技术构思,由于方法及装置所解决问题的原理相似,因此装置与方法的实施例可以相互参见,重复之处不再赘述。102.如图1所示,为本技术提供的一种内存取证方法的流程图,具体包括如下步骤:103.s11,在获取到物联网iot样本时,通过操作系统内核态执行iot样本中的中断指令;104.在本技术实施例中,在获取得到iot样本时,首先基于硬件虚拟化的虚拟化程序启动操作系统,其中,硬件虚拟化的虚拟程序可以是开源的虚拟机(kernel-basedvirtualmachine,kvm),也可以是开源的虚拟机xen;105.然后通过该操作系统用户态运行iot样本,在iot样本运行的过程中,若iot样本中的当前指令为中断指令,则将操作系统的工作模式由用户态调整为内核态,然后通过操作系统内核态执行该中断指令,若当前指令不是中断指令,则继续通过操作系统用户态执行当前指令。106.举例来讲,若在运行iot样本的过程中,当前指令为打开一个系统文件a,在这种情况下,通过操作系统用户态无法直接完成打开文件a的操作,那么iot样本的运行过程进入中断,需要将操作系统的工作模式由用户态调整为内核态之后,才能实现具体打开文件a操作流程;107.如果当前指令的执行过程不需要操作系统之间进行交互,仅仅执行简单的计算指令,这种情况下,就直接基于操作系统用户态继续执行当前指令,不需要进入中断。108.通过上述方法,在执行iot样本的过程中触发中断指令时,以操作系统用户态执行该中断指令,这种方式可以支持后续进一步获取iot样本运行过程对应的内存数据。109.s12,在检测到中断指令的执行过程符合第一预设规则时,通过预设方式访问iot样本对应的内存地址空间;110.在本技术实施例中,在iot样本的运行过程进入中断以后,以操作系统用户态执行当前中断指令,在执行该中断指令的过程中,需要检测该中断指令的执行过程是否符合第一预设规则,其中,所述第一预设规则为恶意程序的运行规则,如果该中断指令的执行过程符合第一预设规则,表明该iot样本文件可能为恶意样本文件,具体来讲,上述过程包括:111.对预设函数设置陷阱,其中,预设函数为恶意样本运行时可能调用的函数,比如load_elf_binary函数,设置的陷阱可以是增强页表(enhancedpagetable,ept)的钩子程序epthook,设置陷阱可以由虚拟机监控程序来完成;112.接下来通过检测中断指令的执行过程是否触发陷阱,来判断中断指令的执行过程是否调用预设函数,当中断指令的执行过程触发设置的陷阱时,表明该执行过程调用了预设函数,此时可以初步判断当前中断指令对应的iot样本可能为恶意样本,因此,需要进一步访问iot样本对应的内存地址空间;113.在本技术中,访问iot样本对应的内存地址空间的方法可以通过执行预设指令来完成,具体来讲,可以使用虚拟程序xen4.14+的fast_singlestep指令基于陷阱监视器(thetrapmonitor,mtf)快速单步到恶意程序rootkit的关联inline钩子程序hook,进而实现访问iot样本中的恶意程序对应的内存地址空间;在实现访问iot样本中的恶意程序对应的内存地址空间之后,可以退出运行支持操作系统的虚拟化程序,然后对iot样本作内存取证。114.当然,在中断指令的执行过程没有触发设置的陷阱时,表明该中断指令的执行过程没有调用预设函数,此时,继续执行所述中断指令。115.通过上述方式,对预设函数设置陷阱,在该陷阱被触发时表明iot样本可能为恶意样本,然后进一步通过执行预设指令访问iot样本对应的内存地址空间,便于对该iot样本进一步作内存取证分析。116.s13,读取内存地址空间对应的内存数据,并基于所述内存数据对所述iot样本进行内存取证。117.在本技术实施例中,在访问iot样本对应的内存地址空间后,进一步获取iot样本所在的操作系统对应的内存地址空间读写规则,然后volatility内存取证插件根据内存地址空间读写规则,读取iot样本对应内存地址空间的内存数据,基于该内存数据分析iot样本的运行过程,进而实现对iot样本的内存取证。118.基于上述内存取证方法,在检测到iot样本中的中断指令执行过程符合预设规则时,进一步访问iot样本对应的内存地址空间,进而读取用于进行内存取证的内存数据,这种内存取证方式不需要模拟执行操作系统的操作指令,并且不需要iot样本运行结束就可以快速获取iot样本对应的内存数据,从而提高内存取证的效率与准确性。119.在一种可能的设计中,在获取到iot样本时,首先判断该iot样本是否为恶意样本;若否,则通过如图1所示的方法对该iot样本进行内存取证;若是,则基于用户态预设模拟器插件对恶意样本进行内存取证,具体内存取证方法包括:120.首先,根据用户态预设模拟器插件启动恶意样本,其中,预设模拟器插件可以是修改源代码patch后的qemu-6中的预设插件,在本技术实施例中,patch后的qemu-6的用户态工作模式可以支持任意cpu架构的iot样本的运行,并且patch后的qemu-6中的预设插件可以获取iot样本中的所有指令执行过程对应的虚拟cpu寄存器值;121.接下来,使用用户态预设模拟器插件追踪恶意样本对应的所有指令的执行过程,并检测当前指令的执行过程是否符合第二预设规则,其中,第二预设规则为恶意样本的运行规则,比如,若当前指令为强制打广告或者强制加载恶意软件,则表明当前指令的执行过程符合第二预设规则,因此可以确定当前指令为恶意程序;122.在上述过程中,检测当前指令的执行过程是否符合第二预设规则的具体方法可以是:利用用户态预设模拟器插件获取预设指针,其中,预设指针可以是vcpuenv_ptr指针;然后通过预设指针,读取恶意样本中的当前指令执行过程对应虚拟cpu的寄存器值,并且根据寄存器值,分析得到当前指针执行过程对应的内存数据,最后根据寄存器值和内存数据,判定当前指令的执行过程是否符合第二预设规则,具体判定方法包括:123.判定寄存器值是否处于第一预设数值范围,并判定内存数据是否处于第二预设数值范围;若寄存器值处于第一预设数值范围,并且内存数据处于第二预设数值范围,则确定当前指令的执行过程符合第二预设规则;124.若寄存器值没有处于第一预设数值范围和/或内存数据没有处于第二预设数值范围,则确定当前指令的执行过程不符合第二预设规则。125.基于方法检测当前指令的执行过程是否符合第二预设规则,通过追踪恶意样本的指令执行过程,并获取恶意样本中的每一个指令的执行过程对应的寄存器值及内存数据,可以实现对iot样本进行指令级分析。126.进一步,在检测出当前指令的执行过程符合第二预设规则时,控制用于运行用户态预设模拟器插件的虚拟化程序退出运行,然后,根据恶意样本运行过程对应的内存数据对恶意样本进行内存取证,其中,恶意样本运行过程对应的内存数据通过上述预设模拟器插件获取,具体来讲,上述根据恶意样本运行过程对应的内存数据对恶意样本进行内存取证的方法可以是:127.使用虚拟机监控程序对恶意样本的运行过程进行监视,并且通知volatility内存取证插件根据内存地址空间读写规则,读取恶意样本运行过程对应的内存数据,最后,根据内存数据分析恶意样本的运行过程,实现对恶意样本进行内存取证。128.当然,也可以通过调用yara规则扫描恶意样本运行过程对应的内存数据,并且将该内存数据通过预设规则来进行分析,从而实现对恶意样本的内存取证,其中,预设规则可以是命令与控制规则(command-and-control,c2)。129.通过上述方法,在确定出iot样本为恶意样本时,可以在iot样本运行的过程中,不需要等待iot样本的执行过程进入操作系统内核态,便可以基于用户态预设插件对该iot样本所有指令的执行过程进行分析,这种方式可以提高内存取证的效率。130.基于同一发明构思,本技术实施例中还提供了一种内存取证装置,如图2所示,为本技术中一种内存取证装置的结构示意图,该装置包括:131.执行模块21,用于在获取到物联网iot样本时,通过操作系统内核态执行所述iot样本中的中断指令;132.访问模块22,用于在检测到所述中断指令的执行过程符合第一预设规则时,通过预设方式访问所述iot样本对应的内存地址空间,其中,所述第一预设规则为恶意样本的运行规则;133.取证模块23,用于读取所述内存地址空间对应的内存数据,并基于所述内存数据对所述iot样本进行内存取证。134.进一步,所述执行模块21具体用于:135.基于硬件虚拟化的虚拟化程序启动所述操作系统;136.通过所述操作系统用户态运行所述iot样本,并检测是否触发所述iot样本中的中断指令;137.若是,则将所述操作系统用户态调整为内核态,并通过所述操作系统内核态执行所述中断指令;138.若否,则继续以所述操作系统用户态运行所述iot样本。139.进一步,所述访问模块22具体用于:140.对预设函数增强页表的钩子程序;141.通过所述钩子程序,检测所述中断指令的执行过程是否调用所述预设函数;142.若是,则继续执行所述预设函数,并通过触发预设指令访问所述iot样本对应的内存地址空间;143.若否,则继续执行所述中断指令。144.进一步,所述取证模块23具体用于:145.获取所述iot样本所在的操作系统对应的内存地址空间读写规则;146.根据所述内存地址空间读写规则,读取所述iot样本对应内存地址空间的内存数据;147.基于所述内存数据分析所述iot样本的运行过程,对所述iot样本进行内存取证。148.在一种可能的设计中,所述执行模块21包括:149.判定单元,用于判定所述iot样本是否为恶意样本;150.执行单元,用于若所述iot样本为非恶意样本,则通过操作系统内核态执行所述iot样本中的中断指令;151.启动单元,用于若所述iot样本为恶意样本,则根据用户态预设模拟器插件启动所述恶意样本,其中,所述用户态预设模拟器插件能够获取当前进程对应的虚拟cpu寄存器值;152.检测单元,用于追踪所述恶意样本对应的指令执行过程,并检测当前指令的执行过程是否符合第二预设规则,其中,所述第二预设规则为恶意样本的运行规则;153.取证单元,用于在所述当前指令的执行过程符合所述第二预设规则时,根据所述恶意样本运行过程对应的内存数据对所述恶意样本进行内存取证。154.进一步,所述检测单元具体用于:155.利用所述用户态预设模拟器插件获取预设指针;156.通过所述预设指针,读取所述恶意样本中的当前指令执行过程对应虚拟cpu的寄存器值;157.根据所述寄存器值,分析得到所述当前指针执行过程对应的内存数据;158.根据所述寄存器值和所述内存数据,判定所述当前指令的执行过程是否符合所述第二预设规则。159.进一步,所述检测单元还用于:160.判定所述寄存器值是否处于第一预设数值范围,并判定所述内存数据是否处于第二预设数值范围;161.若所述寄存器值处于所述第一预设数值范围,并且所述内存数据处于所述第二预设数值范围,则判定所述当前指令的执行过程符合所述第二预设规则;162.若所述寄存器值没有处于所述第一预设数值范围和/或所述内存数据没有处于所述第二预设数值范围,则判定所述当前指令的执行过程不符合所述第二预设规则。163.进一步,所述取证单元具体用于:164.对所述恶意样本的运行过程进行监视;165.根据所述内存地址空间读写规则,读取所述恶意样本运行过程对应的内存数据;166.根据所述内存数据分析所述恶意样本的运行过程,对所述恶意样本进行内存取证。167.基于上述内存取证装置,在检测到iot样本中的中断指令执行过程符合预设规则时,进一步访问iot样本对应的内存地址空间,进而读取用于进行内存取证的内存数据,这种内存取证方式不需要模拟执行操作系统的操作指令,并且不需要iot样本运行结束就可以快速获取iot样本对应的内存数据,从而提高内存取证的效率与准确性。168.基于同一发明构思,本技术实施例中还提供了一种电子设备,所述电子设备可以实现前述一种内存取证装置的功能,参考图3,所述电子设备包括:169.至少一个处理器31,以及与至少一个处理器31连接的存储器32,本技术实施例中不限定处理器31与存储器32之间的具体连接介质,图3中是以处理器31和存储器32之间通过总线30连接为例。总线30在图3中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线30可以分为地址总线、数据总线、控制总线等,为便于表示,图3中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。或者,处理器31也可以称为控制器,对于名称不做限制。170.在本技术实施例中,存储器32存储有可被至少一个处理器31执行的指令,至少一个处理器31通过执行存储器32存储的指令,可以执行前文论述内存取证方法。处理器31可以实现图2所示的装置中各个模块的功能。171.其中,处理器31是该装置的控制中心,可以利用各种接口和线路连接整个该控制设备的各个部分,通过运行或执行存储在存储器32内的指令以及调用存储在存储器32内的数据,该装置的各种功能和处理数据,从而对该装置进行整体监控。172.在一种可能的设计中,处理器31可包括一个或多个处理单元,处理器31可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器31中。在一些实施例中,处理器31和存储器32可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。173.处理器31可以是通用处理器,例如中央处理器(cpu)、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本技术实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本技术实施例所公开的内存取证方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。174.存储器32作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器32可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(randomaccessmemory,ram)、静态随机访问存储器(staticrandomaccessmemory,sram)、可编程只读存储器(programmablereadonlymemory,prom)、只读存储器(readonlymemory,rom)、带电可擦除可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom)、磁性存储器、磁盘、光盘等。存储器32是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本技术实施例中的存储器32还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。175.通过对处理器31进行设计编程,可以将前述实施例中介绍的内存取证方法所对应的代码固化到芯片内,从而使芯片在运行时能够执行图1所示的实施例的内存取证方法的步骤。如何对处理器31进行设计编程为本领域技术人员所公知的技术,这里不再赘述。176.基于同一发明构思,本技术实施例还提供一种存储介质,该存储介质存储有计算机指令,当该计算机指令在计算机上运行时,使得计算机执行前文论述内存取证方法。177.在一些可能的实施方式中,本技术提供的内存取证方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在装置上运行时,程序代码用于使该控制设备执行本说明书上述描述的根据本技术各种示例性实施方式的内存取证方法中的步骤。178.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。179.本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。180.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。181.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。182.显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。当前第1页12当前第1页12
技术特征:
1.一种内存取证方法,其特征在于,所述方法包括:在获取到物联网iot样本时,通过操作系统内核态执行所述iot样本中的中断指令;在检测到所述中断指令的执行过程符合第一预设规则时,通过预设方式访问所述iot样本对应的内存地址空间,其中,所述第一预设规则为恶意样本的运行规则;读取所述内存地址空间对应的内存数据,并基于所述内存数据对所述iot样本进行内存取证。2.如权利要求1所述的方法,其特征在于,通过操作系统内核态执行iot样本中的中断指令,包括:基于硬件虚拟化的虚拟化程序启动所述操作系统;通过所述操作系统用户态运行所述iot样本,并检测是否触发所述iot样本中的中断指令;若是,则将所述操作系统用户态调整为内核态,并通过所述操作系统内核态执行所述中断指令;若否,则继续以所述操作系统用户态运行所述iot样本。3.如权利要求1所述的方法,其特征在于,在检测到所述中断指令的执行过程符合第一预设规则时,通过预设方式访问所述iot样本对应的内存地址空间,包括:对预设函数增强页表的钩子程序;通过所述钩子程序,检测所述中断指令的执行过程是否调用所述预设函数;若是,则继续执行所述预设函数,并通过触发预设指令访问所述iot样本对应的内存地址空间;若否,则继续执行所述中断指令。4.如权利要求1所述的方法,其特征在于,读取所述内存地址空间对应的内存数据,并基于所述内存数据对所述iot样本进行内存取证,包括:获取所述iot样本所在的操作系统对应的内存地址空间读写规则;根据所述内存地址空间读写规则,读取所述iot样本对应内存地址空间的内存数据;基于所述内存数据分析所述iot样本的运行过程,对所述iot样本进行内存取证。5.如权利要求1所述的方法,其特征在于,通过操作系统内核态执行所述iot样本中的中断指令,包括:判定所述iot样本是否为恶意样本;若否,则通过操作系统内核态执行所述iot样本中的中断指令;若是,则根据用户态预设模拟器插件启动所述恶意样本,其中,所述用户态预设模拟器插件能够获取当前进程对应的虚拟cpu寄存器值;追踪所述恶意样本对应的指令执行过程,并检测当前指令的执行过程是否符合第二预设规则,其中,所述第二预设规则为恶意样本的运行规则;在所述当前指令的执行过程符合所述第二预设规则时,根据所述恶意样本运行过程对应的内存数据对所述恶意样本进行内存取证。6.如权利要求5所述的方法,其特征在于,所述追踪所述恶意样本对应的指令执行过程,并检测当前指令的执行过程是否符合第二预设规则,包括:利用所述用户态预设模拟器插件获取预设指针;
通过所述预设指针,读取所述恶意样本中的当前指令执行过程对应虚拟cpu的寄存器值;根据所述寄存器值,分析得到所述当前指针执行过程对应的内存数据;根据所述寄存器值和所述内存数据,判定所述当前指令的执行过程是否符合所述第二预设规则。7.如权利要求6所述的方法,其特征在于,根据所述寄存器值和所述内存数据,判定所述当前指令的执行过程是否符合所述第二预设规则,包括:判定所述寄存器值是否处于第一预设数值范围,并判定所述内存数据是否处于第二预设数值范围;若所述寄存器值处于所述第一预设数值范围,并且所述内存数据处于所述第二预设数值范围,则判定所述当前指令的执行过程符合所述第二预设规则;若所述寄存器值没有处于所述第一预设数值范围和/或所述内存数据没有处于所述第二预设数值范围,则判定所述当前指令的执行过程不符合所述第二预设规则。8.一种内存取证装置,其特征在于,所述装置包括:执行模块,用于在获取到物联网iot样本时,通过操作系统内核态执行所述iot样本中的中断指令;访问模块,用于在检测到所述中断指令的执行过程符合第一预设规则时,通过预设方式访问所述iot样本对应的内存地址空间,其中,所述第一预设规则为恶意样本的运行规则;取证模块,用于读取所述内存地址空间对应的内存数据,并基于所述内存数据对所述iot样本进行内存取证。9.一种电子设备,其特征在于,包括:存储器,用于存放计算机程序;处理器,用于执行所述存储器上所存放的计算机程序时,实现权利要求1-7中任一项所述的方法步骤。10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-7中任一项所述的方法步骤。
技术总结
本申请公开了一种内存取证方法、装置及电子设备,该方法包括:在获取到物联网IOT样本时,通过操作系统内核态执行IOT样本中的中断指令;在检测到中断指令的执行过程符合第一预设规则时,通过预设方式访问IOT样本对应的内存地址空间;读取内存地址空间对应的内存数据,并基于所述内存数据对所述IOT样本进行内存取证。基于以上方法,在检测到IOT样本中的中断指令执行过程符合预设规则时,进一步访问IOT样本对应的内存地址空间,进而读取用于进行内存取证的内存数据,这种内存取证方式不需要模拟执行操作系统的操作指令,并且不需要IOT样本运行结束就可以快速获取IOT样本对应的内存数据,从而提高内存取证的效率与准确性。性。性。
技术研发人员:傅政雄 吴铁军 范敦球 蔡莉 叶晓虎
受保护的技术使用者:北京神州绿盟科技有限公司
技术研发日:2021.11.26
技术公布日:2022/3/8