一种程序内字符串提取方法及装置与流程

文档序号:18475844发布日期:2019-08-20 21:03阅读:208来源:国知局
一种程序内字符串提取方法及装置与流程

本发明涉及计算机技术领域,尤其涉及一种程序内字符串提取方法及装置。



背景技术:

在现有的恶意代码分析方法中,采用沙箱分析恶意代码样本程序已经成为目前对恶意代码进行动态分析的一个主要手段。

在采用沙箱进行恶意代码样本程序的分析过程中,提取样本程序内包含的字符串是一项非常重要的工作,通过提取样本程序内包含的字符串可以帮助实现对样本程序功能和实现方式的理解。

目前在进行样本程序内包含的字符串提取时,一般都是直接用工具提取静态样本程序文件中包含的字符串,这种字符串提取方式存在字符串提取不全面的问题。



技术实现要素:

针对现有技术中的问题,本发明实施例提供一种程序内字符串提取方法及装置。

第一方面,本发明实施例提供了一种程序内字符串提取方法,包括:

在目标程序的动态执行过程中提取所述目标程序中包含的字符串。

进一步地,所述在目标程序的动态执行过程中提取所述目标程序中包含的字符串,具体包括下面四种情况中的一种或多种:

在目标程序开始执行时,提取所述目标程序中包含的字符串;

在所述目标程序执行至预设位置时,提取所述目标程序中包含的字符串;

在所述目标程序退出时,提取所述目标程序中包含的字符串;

在所述目标程序的动态执行过程中的每个预设时间点,提取所述目标程序中包含的字符串。

进一步地,所述程序内字符串提取方法,还包括:

对提取得到的字符串进行字符串去重处理以形成字符串集合。

进一步地,所述程序内字符串提取方法,还包括:

利用预设正则表达式对所述字符串集合中的字符串进行识别,将所述字符串集合中的ip地址、url、域名、电子邮件、手机号和电子钱包提取出来作为第一目标字符串集合,并将所述字符串集合中剩下的字符串作为第二目标字符串集合;

将所述第二目标字符串集合中的合法字符串和乱码字符串剔除,得到第三目标字符串集合;

将所述第一目标字符串集合和所述第三目标字符串集合作为待分析的字符串集合。

进一步地,所述将所述第二目标字符串集合中的合法字符串和乱码字符串剔除,得到第三目标字符串集合,包括:

利用预设合法字符串集合中的合法字符串对所述第二目标字符串集合进行字符串匹配处理,找到并剔除所述第二目标字符串集合中的合法字符串;

以及,将所述第二目标字符串集合中字母数字占比少于预设阈值的字符串剔除,得到第三目标字符串集合。

第二方面,本发明实施例还提供了一种程序内字符串提取装置,包括:

提取模块,用于在目标程序的动态执行过程中提取所述目标程序中包含的字符串。

进一步地,所述提取模块,具体用于执行下面四种情况中的一种或多种:

在目标程序开始执行时,提取所述目标程序中包含的字符串;

在所述目标程序执行至预设位置时,提取所述目标程序中包含的字符串;

在所述目标程序退出时,提取所述目标程序中包含的字符串;

在所述目标程序的动态执行过程中的每个预设时间点,提取所述目标程序中包含的字符串。

进一步地,所述程序内字符串提取装置,还包括:

去重模块,用于对提取得到的字符串进行字符串去重处理以形成字符串集合。

第三方面,本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述程序内字符串提取方法的步骤。

第四方面,本发明实施例还提供了一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所述程序内字符串提取方法的步骤。

由上面技术方案可知,本发明实施例提供的程序内字符串提取方法及装置,不再像现有技术那样,提取静态程序文件中包含的字符串,而是在目标程序的动态执行过程中提取所述目标程序中包含的字符串,因此可以将所述目标程序在各个执行阶段包含的字符串提取出来,从而提取得到的字符串较为全面。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明一实施例提供的程序内字符串提取方法的流程图;

图2是本发明一实施例提供的沙箱(虚拟化分析引擎)的部署结构示意图;

图3为本发明一实施例提供的程序内字符串提取装置的结构示意图;

图4为本发明一实施例提供的电子设备的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1示出了本发明实施例提供的程序内字符串提取方法的流程图。如图1所示,本发明实施例提供的程序内字符串提取方法包括如下步骤:

步骤101:在目标程序的动态执行过程中提取所述目标程序中包含的字符串。

在本步骤中,所述目标程序可以指待进行分析的恶意代码样本程序。

在本步骤中,沙箱在检测到待进行安全分析的目标程序启动(开始执行)时,开始执行上述步骤101的处理过程。也即沙箱在所述目标程序的动态执行过程中提取所述目标程序中包含的字符串。需要说明的是,目前在进行目标程序内包含的字符串提取时,一般都是直接用工具提取静态程序文件中包含的字符串,这种字符串提取方式存在字符串提取不全面的问题,例如对于目标程序内加密或动态拼接的字符串将无法提取出来。针对该问题,本实施例不再像现有技术那样,提取静态程序文件中包含的字符串,而是在目标程序的动态执行过程中提取所述目标程序中包含的字符串,因此可以将所述目标程序在各个执行阶段包含的字符串提取出来,从而提取得到的字符串较为全面。例如,采用本发明实施例提供的程序内字符串提取方法除了可以将程序内包含的正常未加密的字符串提取出来以外,还可以将目标程序内包含的加密字符串或在程序动态执行过程中动态拼装的字符串提取出来。

需要说明的是,目标程序在动态执行过程中其内的数据是动态变化的,例如,当在目标程序开始执行时,由于在加载程序和执行程序时,会引入一些系统相关的字符串,如系统环境变量等,因此,在目标程序开始执行时,相对于目标程序静态文件已经有了增加。此外,对于一般的加壳加密目标程序来说,当目标程序运行至oep(originalentrypoint),也就是程序的原始入口点时,此时目标程序基本已经全部解密了,故此时可以提取到解密后的有效字符串。又如,对于复杂的加壳加密程序来说,其可能是分段加密的,比如一部分字符串是在目标程序运行至oep时解密,另一其余字符串是在目标程序运行至特定位置的时候解密,故需要在目标程序运行至oep时以及目标程序运行到特定位置的时候分别去提取。比如,在目标程序运行至oep时进行一次字符串的提取,在目标程序执行到某个阶段(如让输入序列号之类的)或某个功能(如某个api调用)时,再执行一次提取,以提取跟这个阶段或功能相关的字符串(此时可以是全程序范围内的提取,也可以是跟这个阶段或功能相关的部分程序段内字符串的提取)。此外,需要说明的是,对于采用更复杂加密机制的目标程序,可能没办法找到特定的位置、功能的情况,那可以在所述目标程序的动态执行过程中的每个预设时间点,提取所述目标程序中包含的字符串。例如可以每隔10或20秒提取一次。此外,在目标程序执行到退出点时,也是一个很好的提取点,如果目标程序没有对之前解密的内容进行清除、再加密,那这时候可以提取到动态执行时解密、释放的各种字符串。

此外,需要说明的是,对于加壳加密程序来说,其程序的入口点oep不太好找,因为很多加壳加密程序会隐藏oep或采用假的oep,因此需要采用一定的技术手段(这部分可以采用现有技术中的一些手段)找到程序真正的oep。此外,对于复杂的加壳加密程序来说,需要预先设定一些提取位置点,比如,设定程序中的一些比较重要或比较关心的功能作为提取字符串的预设提取位置点,这样当程序执行到这些功能处时,开始进行字符串提取工作。

此外,需要说明的是,由于本实施例在目标程序开始执行时提取所述目标程序中包含的字符串,而开始执行时所述目标程序内的字符串为在原目标程序的字符串基础上增加了一些系统相关的字符串(如系统环境变量等),因此,采用本实施例提供的字符串提取方法,不需要在静态程序文件中再单独提取一遍字符串。

根据上面分析可知,由于在目标程序的动态执行过程中,字符串数据是不断变化的(如原来加密的字符串解密后会发生变化,此外,也会出现一些动态拼接生成的字符串),因此,在目标程序不同执行阶段或不同执行时间点提取的字符串是不一样的,因此,本实施例提供的在目标程序的动态执行过程中提取所述目标程序中包含的字符串的方式,可以使得提取得到的字符串较为全面。

此外,需要说明的是,在进行程序内字符串提取时,可以利用标准的string工具提取程序内存中的字符串。

此外,结合图2对本发明实施例提供的程序内字符串提取方法的执行主体沙箱进行简单说明。如图2所示,待进行安全分析的终端设备上部署有物理硬件、宿主机操作系统和vm1-vm3共3个虚拟机,所述终端设备上还部署有沙箱(图2中的虚拟化分析引擎),所述沙箱与虚拟机vm1-vm3分离,从而能够实现一种较为独立的分析系统。所述沙箱用于对虚拟机vm1-vm3中运行的程序进行安全检测和安全分析,用于及时发现网络安全问题,因此可以将所述沙箱看作是部署在终端设备上的且独立于终端设备虚拟机的一个安全分析系统。其中,所述沙箱在对虚拟机vm1-vm3中运行的程序进行安全检测和安全分析时,需要提取程序中的字符串,在进行字符串提取时,为了能够得到较为全面的字符串,故可以采用本发明实施例提供的程序内字符串提取方法,如在目标程序的动态执行过程中提取所述目标程序中包含的字符串。

由上面技术方案可知,本发明实施例提供的程序内字符串提取方法及装置,不再像现有技术那样,提取静态程序文件中包含的字符串,而是在目标程序的动态执行过程中提取所述目标程序中包含的字符串,因此可以将所述目标程序在各个执行阶段包含的字符串提取出来,从而提取得到的字符串较为全面。例如,采用本发明实施例提供的程序内字符串提取方法及装置除了可以提取程序内包含的正常未加密的字符串以外,还可以将目标程序中的加密字符串或动态拼装的字符串提取出来。

基于上述实施例的内容,在本实施例中,上面步骤101的实现过程包括下面四种情况中的一种或多种:

在目标程序开始执行时,提取所述目标程序中包含的字符串;

在所述目标程序执行至预设位置时,提取所述目标程序中包含的字符串;

在所述目标程序退出时,提取所述目标程序中包含的字符串;

在所述目标程序的动态执行过程中的每个预设时间点,提取所述目标程序中包含的字符串。

在本实施例中,正如上面实施例的介绍,在目标程序开始执行时,由于在加载程序和执行程序时,会自动引入一些系统相关的字符串,如系统环境变量等,因此,在目标程序开始执行时,相对于目标程序静态文件已经有了增加,因此,在目标程序开始执行时,提取所述目标程序中包含的字符串,可以得到比目标程序静态文件更为全面的字符串。

在本实施例中,所述预设位置可以为目标程序的入口点oep,也可以为目标程序的特定运行位置,如运行至某个特定阶段或某个特定功能处。正如上面实施例的介绍,对于一般的加壳加密目标程序来说,当目标程序运行至oep(originalentrypoint),也就是程序的入口点时,此时目标程序基本已经全部解密了,故此时可以提取到解密后的有效字符串。又如,对于复杂的加壳加密程序来说,其可能是分段加密的,比如一部分字符串是在目标程序运行至oep时解密,另一其余字符串是在目标程序运行至特定位置的时候解密,故需要在目标程序运行至oep时以及目标程序运行到特定位置的时候分别去提取。比如,在目标程序运行至oep时进行一次字符串的提取,在目标程序执行到某个阶段(如让输入序列号之类的)或某个功能(如某个api调用)时,再执行一次提取,以提取跟这个阶段或功能相关的字符串(此时可以是全程序范围内的提取,也可以是跟这个阶段或功能相关的部分程序段内字符串的提取)。

在本实施例中,正如上面实施例的介绍,在目标程序执行到退出点时,也是一个很好的提取点,如果目标程序没有对之前解密的内容进行清除、再加密,那这时候可以提取到动态执行时解密、释放的各种字符串。

在本实施例中,正如上面实施例的介绍,对于采用更复杂加密机制的目标程序,可能没办法找到特定的位置、功能等情况,那可以在所述目标程序的动态执行过程中的每个预设时间点,提取所述目标程序中包含的字符串。例如可以每隔10或20秒提取一次,或者,可以在几个特定的指定时间点提取所述目标程序中包含的字符串。

根据上面分析可知,由于在目标程序的动态执行过程中,字符串数据是不断变化的(如程序开始执行时会加载一些系统字符串,又如原来加密的字符串解密后会生成一些新的字符串,又如在程序执行到某些功能时会动态拼接生成一些新的字符串),因此,在目标程序不同执行阶段或不同执行时间点提取的字符串是不一样的,因此,本实施例提供的在目标程序的动态执行过程中的不同阶段或不同时间点提取所述目标程序中包含的字符串的方式,可以使得提取得到的字符串较为全面。

基于上述实施例的内容,在本实施例中,所述程序内字符串提取方法,还包括:

步骤102:对提取得到的字符串进行字符串去重处理以形成字符串集合。

在本实施例中,不管是在目标程序的动态执行过程中提取一次所述目标程序中包含的字符串,还是在目标程序的动态执行过程中多次提取所述目标程序中包含的字符串,得到的字符串中均有可能存在字符串重复的情况,因此,在提取字符串后,对提取得到的字符串进行字符串去重处理以形成字符串集合,以便于后续字符串安全分析,简化不必要的重复分析过程。

基于上述实施例的内容,在本实施例中,所述程序内字符串提取方法,还包括:

步骤103:利用预设正则表达式对所述字符串集合中的字符串进行识别,将所述字符串集合中的ip地址、url、域名、电子邮件、手机号和电子钱包提取出来作为第一目标字符串集合,并将所述字符串集合中剩下的字符串作为第二目标字符串集合。

在本步骤中,所述预设正则表达式为需要和ip地址、url、域名、电子邮件、手机号和电子钱包等字符串格式分别对应的正则表达式。由于这些正则表达式为本领域的公知内容,故此处不再详述。

步骤104:将所述第二目标字符串集合中的合法字符串和乱码字符串剔除,得到第三目标字符串集合。

步骤105:将所述第一目标字符串集合和所述第三目标字符串集合作为待分析的字符串集合。

在本实施例中,需要说明的是,由于最后得到的待分析的字符串集合中的字符串需要是对安全分析有用的字符串,因此,在采用上面实施例的字符串提取方式提取得到字符串之后,需要把一些乱码和一些已知为合法字符串的字符串排除,以减少这些无意义的字符串对分析人员的干扰。

基于上述实施例的内容,在本实施例中,上述步骤103可通过如下方式实现:

利用预设合法字符串集合中的合法字符串对所述第二目标字符串集合进行字符串匹配处理,找到并剔除所述第二目标字符串集合中的合法字符串;

以及,将所述第二目标字符串集合中字母数字占比少于预设阈值的字符串剔除,得到第三目标字符串集合。

在本实施例中,所述预设合法字符串集合中的合法字符串是预先经过人工确认的合法字符串。

在本实施例中,将字母数字占比少于预设阈值的字符串作为乱码进行剔除。这里的预设阈值可以为50%或40%。

图3示出了本发明实施例提供的程序内字符串提取装置的结构示意图。如图3所示,本发明实施例提供的程序内字符串提取装置包括:

提取模块21,用于在目标程序的动态执行过程中提取所述目标程序中包含的字符串。

基于上述实施例的内容,在本实施例中,所述提取模块21,具体用于执行下面四种情况中的一种或多种:

在目标程序开始执行时,提取所述目标程序中包含的字符串;

在所述目标程序执行至预设位置时,提取所述目标程序中包含的字符串;

在所述目标程序退出时,提取所述目标程序中包含的字符串;

在所述目标程序的动态执行过程中的每个预设时间点,提取所述目标程序中包含的字符串。

基于上述实施例的内容,在本实施例中,所述程序内字符串提取装置,还包括:

去重模块,用于对提取得到的字符串进行字符串去重处理以形成字符串集合。

由于本发明实施例提供的程序内字符串提取装置,可以用于执行上述实施例所述的程序内字符串提取方法,其工作原理和有益效果类似,故此处不再详述,具体内容可参见上述实施例的介绍。

基于相同的发明构思,本发明又一实施例提供了一种电子设备,参见图4,所述电子设备具体包括如下内容:处理器301、存储器302、通信接口303和总线304;

其中,所述处理器301、存储器302、通信接口303通过所述总线304完成相互间的通信;

所述处理器301用于调用所述存储器302中的计算机程序,所述处理器执行所述计算机程序时实现上述网络服务模拟方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述过程:在目标程序的动态执行过程中提取所述目标程序中包含的字符串。

基于相同的发明构思,本发明又一实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述网络服务模拟方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述过程:在目标程序的动态执行过程中提取所述目标程序中包含的字符串。

此外,上述的存储器中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的网络服务模拟方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1