一种检测反射式动态链接库文件的方法及装置与流程

文档序号:16530031发布日期:2019-01-05 10:40阅读:179来源:国知局
一种检测反射式动态链接库文件的方法及装置与流程

本发明涉及计算机技术领域,尤其涉及一种检测反射式动态链接库文件的方法及装置。



背景技术:

当与安全软件的对抗升级中,常规的动态链接库(dynamiclinklibrarydll)文件注入方式应用十分广泛。该方式在目标进程中开始一个新的线程,这个线程执行系统的api(applicationprogramminginterface)函数,将dll文件放进该目标进程的存储空间里,使得该dll文件成为该目标进程的一部分,之后该dll文件就被装载到目标进程中。常规的dll注入方式需要目标将目标dll文件存在磁盘上,而文件一旦存入磁盘,就也存在着被杀毒软件查杀的风险。

反射式dll文件注入方式通过导入表修复、重定位表修复等操作以实现恶意模块在进程中的隐藏执行,由于整个过程没有文件落地磁盘,没有敏感的系统api操作行为,所以普通安全软件很难检测这一恶意注入行为。

第三方平台采用反射式dll文件注入方式将恶意程序注入到终端本地,恶意程序不会存在磁盘上,终端在查杀时检测不到恶意程序对应的dll文件的存在,因此无法检测到恶意程序。因此,如何检测终端本地的恶意程序是目前需要解决的技术问题。



技术实现要素:

本发明实施例提供了一种检测反射式动态链接库文件的方法及装置,能够精准检测第三方平台注入的恶意程序。

第一方面,本发明实施例提供了一种检测反射式动态链接库文件的方法。该方法包括:

终端获取所述终端运行的a个进程对应b个线程的入口地址,a为正整数,b为大于等于a的正整数;

所述终端获取所述a个进程已加载模块的存储空间;

所述终端根据所述b个线程的入口地址和所述a个进程已加载模块的存储空间判断所述b个线程中是否存在反射式动态链接库dll文件注入线程。

实施本发明案例,通过线程地址和存储空间属性,可以精准的检测第三方平台注入的反射式动态链接库文件的注入。

结合第一方面,在第一方面的第一种实现方式中,终端根据所述b个线程的入口地址和所述已加载模块的存储空间判定所述b个线程中是否存在反射式动态链接库dll文件注入线程,包括:

所述终端判断所述b个线程中的目标线程的入口地址是否存在于所述a个进程已加载模块的存储空间中;

若否,则所述终端判定所述目标进程为反射式dll文件注入线程。

结合第一方面的第一种实现方式,在第一方面的第二种实现方式中,终端判定所述目标进程为反射式dll文件注入线程之后,还包括:

所述终端根据所述目标线程的入口地址确定所述目标线程所在的存储空间。

结合第一方面的第二种实现方式,在第一方面的第三种实现方式中,终端根据所述目标线程的入口地址确定所述目标线程所在的存储空间之后,还包括:

所述终端从所述目标线程所在的存储空间提取特征字符串;

所述终端根据所述特征字符串判断所述目标线程是否为异常线程;

若是,则所述终端结束运行所述目标线程。

结合第一方面的第三种实现方式,在第一方面的第四种实现方式中,终端根据所述特征字符串判断所述目标线程是否为异常线程,包括:

所述终端判断所述特征字符串是否在预设黑名单中,所述预设黑名单中记录有预设的所述异常线程对应的特征字符串。若所述特征字符串在所述预设黑名单中,则判定所述目标线程为异常线程。

第二方面,本发明实施例提供了一种检测反射式动态链接库文件的装置。该装置包括:

第一获取单元,用于终端获取所述终端运行的a个进程对应b个线程的入口地址;

第二获取单元,用于所述终端获取所述a个进程已加载模块的存储空间;

第一判断单元,用于所述终端根据所述b个线程的入口地址和所述a个进程已加载模块的存储空间判定所述b个线程中是否存在反射式dll注入线程。

可选的,所述第一判断单元,具体用于:

所述终端判断所述b个线程中的目标线程的入口地址是否存在于所述a个进程已加载模块的存储空间中;

若否,则所述终端判定所述目标线程为反射式dll文件注入线程。

可选的,所述装置还包括:

定位单元,用于在所述第一判断单元判定所述目标进程为反射式dll注入线程之后,根据所述目标线程的入口地址确定所述目标线程所在的存储空间。

可选的,所述装置还包括:

提取单元,用于所述定位单元根据所述目标线程的入口地址确定所述目标线程所在的存储空间之后,从所述目标线程所在的存储空间提取特征字符串。

第二判断单元,用于所述提取单元从所述目标线程所在的存储空间提取特征字符串判断所述目标线程是否为异常线程;

结束单元,用于所述第二判断单元判定所述目标线程为异常线程后,结束运行所述目标线程。

可选的,所述装置还包括:

第三判断单元,用于在所述提取单元从所述目标线程所在的存储空间提取特征字符串之后,判断所述特征字符串是否在预设黑名单中,所述预设黑名单中记录有预设的所述异常线程对应的特征字符串。

第三方面,本申请实施例提供了一种终端设备,用于执行第一方面所提供的检测反射式动态链接库文件的方法。其中,该终端设备的功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括至少一个与上述功能相对应的模块。该终端设备可包括:存储器、处理器。存储器用于存储第一方面所提供的检测反射式动态链接库文件的实现代码,处理器用于执行存储器中存储的程序代码,即执行第一方面所提供的检测反射式动态链接库文件的方法。

第四方面,本发明实施例提供一种计算机可读存储介质,可读存储介质上存储有指令,当其在处理器上运行时,使得处理器执行上述第一方面描述的检测反射式动态链接库文件的方法。

第五方面,本发明实施例提供了一种包含指令的计算机程序产品,当其在处理器上运行时,使得处理器执行上述第一方面描述的检测反射式动态链接库文件的方法。

附图说明

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

图1为一个实施例中的一种终端进程加载示意图;

图2为一个实施例中的一种检测反射式动态链接库文件方法的流程示意图;

图3为一个实施例提供一种检测反射式动态链接库文件方法的流程示意图;

图4为一个实施例中的一种终端设备结构示意图。

图5为一个实施例中的一种检测反射式动态链接库文件的装置的结构示意图。

具体实施方式

本申请的实施方式部分使用的术语仅用于对本申请的具体实施例进行解释,而非旨在限定本申请。

具体实现中,本发明实施例中描述的终端设备包括但不限于诸如具有触摸敏感表面(例如,触摸屏显示器和/或触摸板)的移动电话、膝上型计算机或平板计算机之类的其它便携式设备。还应当理解的是,在某些实施例中,所述设备并非便携式通信设备,而是具有触摸敏感表面(例如,触摸屏显示器和/或触摸板)的台式计算机。

在接下来的讨论中,描述了包括显示器和触摸敏感表面的终端设备。然而,应当理解的是,终端设备可以包括诸如物理键盘、鼠标和/或控制杆的一个或多个其它物理用户接口设备。

终端设备支持各种应用程序,例如以下中的一个或多个:绘图应用程序、演示应用程序、文字处理应用程序、网站创建应用程序、盘刻录应用程序、电子表格应用程序、游戏应用程序、电话应用程序、视频会议应用程序、电子邮件应用程序、即时消息收发应用程序、锻炼支持应用程序、照片管理应用程序、数码相机应用程序、数字摄影机应用程序、web浏览应用程序、数字音乐播放器应用程序和/或数字视频播放器应用程序。

可以在终端设备上执行的各种应用程序可以使用诸如触摸敏感表面的至少一个公共物理用户接口设备。可以在应用程序之间和/或相应应用程序内调整和/或改变触摸敏感表面的一个或多个功能以及终端设备上显示的相应信息。这样,终端设备的公共物理架构(例如,触摸敏感表面)可以支持具有对用户而言直观且透明的用户界面的各种应用程序。

下面,将对本申请实施例的相关名词作简单解释。

进程和线程:一个进程代表一个正在运行的应用程序,或者说代表一个应用程序的实例,而一个线程代表进程里代码的一条执行线路。进程本身是惰性而不执行任何代码的。每一个进程都拥有地址空间、动态配置而来的文件、线程和一系列模块。进程启动会依赖系统或者第三方的模块。通常在一个进程中可以包含若干个线程,一个进程中至少有一个线程。最初,进程是以一个线程(称为主线程,primarythread)作为开始,如果需要,进程可以产生更多的线程,让cpu在同一时间执行不同段落代码。

dll文件:动态链接库文件,是软件文件类型。在windows中,许多应用并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即dll文件,放置于系统中。当某一个进程运行时,相应的dll文件就会被调用。一个应用程序可使用多个dll文件,一个dll文件也可能被不同的应用程序使用。

模块:一个模块代表的是一个运行中的dll文件中的所有代码和资源,这些代码和资源加载到内存后运行时就叫做模块。进程运行过程中,会调用dll文件中的代码和资源,这些文件的代码和资源被加载到进程的地址空间中,就是一个模块。同样的,进程调用其他dll文件的代码和资源时,这些文件的代码和资源加载到进程的地址空间中,就产生了不同的模块。

进程启动会依赖系统或者第三方的文件。动态链接库dll是一组源代码的文件库,文件库中包含了可供应用程序(即进程)调用的多个dll文件,在应用程序调用dll里面某个模块的一个程序的时候,操作系统会将该模块的文件加载到进程的地址空间中。

参见图1,图1示出了本申请实施例提供的终端进程加载示意图,以图1的进程1和进程2举例来说,进程1和进程2都拥有终端分配的地址空间,该地址空间为终端在内存中,为进程分配的存储资源,该存储资源用于存储进程运行过程中产生的数据。例如,终端分别为进程1分配地址空间1,为进程2分配地址空间2。

如图1所示,动态链接库dll包括n个dll文件,分别为:dll文件1、dll文件2……和dll文件n。以进程1举例来说,例如,进程1最开始以线程1为主线程,终端创建进程1时,进程1所需要用到3个dll文件分别为:dll文件1、dll文件2和dll文件3,终端将这3个dll文件的代码和资源加载到进程1的地址空间1,dll文件1的代码和资源加载到地址空间1形成已加载模块1,同样,dll文件2和dll文件3代码和资源加载到地址空间1分别形成为已加载模块2和已加载模块3。

进程运行时,如果需要,进程可以产生更多的线程。以图1的进程1和进程2举例来说,进程1以线程1为主线程,产生的新线程为线程2和线程3;线程2以线程1为主,产生的新线程为线程2、线程3、线程4和线程5。以进程1举例来说,主线程1需要用到的dll文件1、dll文件2和dll文件3的代码和资源已经加载到地址空间1,形成已加载模块1、已加载模块2和已加载模块3。当进程1产生线程2和线程3,线程2需要调用dll文件4代码和资源,线程3需要调用dll文件5的代码和资源,终端将dll文件4和dll文件5的代码和资源加载到地址空间1形成已加载模块4和已加载模块5。

可选的,当进程1创建线程2和线程3,线程2和线程3的线程入口地址位于已加载模块1、已加载模块2、已加载模块3、已加载模块4或者已加载模块5的代码段存储区间。

参见图2,是本发明实施例提供一种检测反射式动态链接库文件的方法的示意流程图。如图2所示检测反射式动态链接库文件的方法可以包括:

s101,终端获取所述终端运行的a个进程对应b个线程的入口地址,a为正整数,b为大于等于a的正整数。

可选的,所述终端可以是手机、笔记本电脑、平板电脑、掌上电脑、mid、或其他可安装部署即时通讯应用客户端的终端设备。

获取终端运行的a个进程对应b个线程的线程信息的方法可以是多种的。举例来说,可以是通过linux的top命令或者ps命令获取终端运行的所有进程对应的进程信息,也可以是通过内核驱动枚举出系统所有进程对应的线程信息。上述线程信息包括:线程入口地址、线程名称和线程状态中的一个或多个。

s102,所述终端获取所述a个进程已加载模块的存储空间。

以图1中进程1为例进行说明,进程1中的线程1调用dll中模块3中的某个程序,程序代码、数据和资源被加载到进程1的地址空间中,这里所有的数据结构为已加载模块1,该模块所占用的进程的地址空间就是已加载模块的存储空间。线程1的入口地址位于所述代码段存储区间。

s103,所述终端根据所述b个线程的入口地址和所述a个进程已加载模块的存储空间判断所述b个线程中是否存在反射式动态链接库dll文件注入线程。

可选的,终端根据所述b个线程的入口地址和所述已加载模块的存储空间判定所述b个线程中是否存在反射式动态链接库dll文件注入线程的具体判断方法为:终端判断所述b个线程中的目标线程的入口地址是否存在于所述a个进程已加载模块的存储空间中;若否,则所述终端判定所述目标线程为反射式dll文件注入线程。

可选的,判定某个目标线程为反射式dll文件注入线程之后,进一步判定该目标线程是否为异常线程。因为在终端中,有些安全软件会利用反射式dll文件注入线程进行自我隐蔽,实现病毒检测查杀的功能,这些线程为正常线程。因此,本发明实施例根据特征字符串判定判定该目标线程是否为异常线程。

参见图3,图3为本发明的一个实施例提供的一种检测反射式动态链接库文件的方法的流程示意图。终端在执行步骤s103之后,还包括如下步骤s104-s106。以下对步骤s104-s106进行详细介绍:

s104,终端根据所述目标线程的入口地址确定所述目标线程所在的存储空间。

可选的,根据目标线程的入口地址确定所述目标线程所在的存储空间,可以找出反射式dll文件在终端中的的存储位置。

s105,所述终端从所述目标线程所在的存储空间提取特征字符串。

可选的,终端提取特征字符串的方式可以是多样的。比如,利用恶意软件模式匹配利器yara进行特征字符串的提取。yara可以基于文本或二进制模式创建恶意软件家族描述信息,当然也可以是其他匹配信息。yara创建的每一条描述或规则都由一系列字符串和一个布尔型表达式构成。

s106,所述终端根据所述特征字符串判断所述目标线程是否为异常线程;

可选的,判断所述目标线程是否为异常线程的具体方法为:终端判断所述特征字符串是否在预设黑名单中,所述预设黑名单中记录有预设的所述异常线程对应的特征字符串。若提取的特征字符串在预设黑名单,则判定所述目标线程为异常线程。

举例来说,若预设黑名单记录的特征字符串有:&a、&b和&c,那么包含有$a、$b、$c中的一个或者多个字符串所对应的线程的为异常线程。

s107,判定所述线程为异常线程后,终端结束运行所述目标线程。

实施本发明案例,通过线程地址和存储空间属性建立检测模型,可以精确检测出第三方平台注入的恶意程序。

参见图4,图4示出了本申请实施例提供的一种终端设备,该终端设备400可包括:一个或多个处理器401、存储器402、发射器403和接收器404。这些部件可通过总线405或者其他方式连接,图4以通过总线连接为例。其中:

处理器401可以是通用处理器,例如中央处理器(centralprocessingunit,cpu),还可以是数字信号处理器(digitalsignalprocessing,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic),或者是被配置成实施本发明实施例的一个或多个集成电路。

存储器402可以和处理器401通过总线405或者输入输出端口耦合,存储器402也可以与处理器401集成在一起。存储器402用于存储各种软件程序和/或多组指令。具体的,存储器402可包括高速随机存取的存储器,并且也可包括非易失性存储器,例如一个或多个磁盘存储设备、闪存设备或其他非易失性固态存储设备。存储器402还可以存储网络通信程序,该网络通信程序可用于与一个或多个附加设备,一个或多个终端,一个或多个网络设备进行通信。

发射器403可用于对处理器401输出的信号进行发射处理。接收器404可用于对接收的通信信号进行接收处理。在网络设备400中,发射器403和接收器404的数量均可以是一个或者多个。

参见图5,图5示给出了一种检测反射式动态链接库文件的装置的结构示意图,如图5所示该检测反射式动态链接库文件的装置500包括:第一获取单元501,第二获取单元502,第一判断单元503。

其中,第一获取单元501,用于终端获取所述终端运行的a个进程对应b个线程的入口地址。第二获取单元502,用于根所述终端获取所述a个进程已加载模块的存储空间。第一判断单元503,用于终端根据所述b个线程的入口地址和所述a个进程已加载模块的存储空间判定所述b个线程中是否存在反射式dll注入线程。

可选的,第一判断单元502,具体用于:

终端判断所述b个线程中的目标线程的入口地址是否存在于所述a个进程已加载模块的存储空间中;

若否,则所述终端判定所述目标进程为反射式dll文件注入线程。

可选的,所述装置500还包括:

定位单元,用于在所述第一判断单元判定所述目标进程为反射式dll注入线程之后,根据所述目标线程的入口地址确定所述目标线程所在的存储空间。

可选的,所述装置500还包括:

提取单元,用于所述定位单元根据所述目标线程的入口地址确定所述目标线程所在的存储空间之后,从所述目标线程所在的存储空间提取特征字符串。

第二判断单元,用于所述提取单元从所述目标线程所在的存储空间提取特征字符串判断所述目标线程是否为异常线程;

结束单元,用于所述第二判断单元判定所述目标线程为异常线程后,结束运行所述目标线程。

可选的,所述装置500还包括:

第三判断单元,用于在所述提取单元从所述目标线程所在的存储空间提取特征字符串之后,判断所述特征字符串是否在预设黑名单中,所述预设黑名单中记录有预设的所述异常线程对应的特征字符串。

在本发明的另一实施例中提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令被处理器执行时实现。

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

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。

以上所述的具体实施方式,对本发明实施例的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明实施例的具体实施方式而已,并不用于限定本发明实施例的保护范围,凡在本发明实施例的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明实施例的保护范围之内。

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