一种动态链接库文件注入检测方法及装置与流程

文档序号:36266059发布日期:2023-12-06 10:21阅读:25来源:国知局
一种动态链接库文件注入检测方法及装置与流程

本发明涉及网络安全领域,具体涉及一种动态链接库文件注入检测方法及装置。另外,还涉及一种电子设备及处理器可读存储介质。


背景技术:

1、目前,dll(dynamic link library,动态链接库)注入技术广泛应用于软件安全领域中,其可以在不修改原程序的情况下,对其进行一些修补、扩展、增强等操作。然而,在实际应用中,存在一些病毒利用dll注入技术来隐藏自己,以实现在合法进程中运行的目的,从而难以被杀毒软件和安全软件检测和清除,除此之外,还可以注入到银行等金融机构的软件中,窃取受害者账户信息和其他敏感信息等。针对病毒利用dll注入的问题,现有技术中通常通过在ring3挂钩目标进程createremotethread函数来监视创建远程请求,但是其挂钩很容易被病毒代码绕过,导致实际的检测精度和效率较差。


技术实现思路

1、为此,本发明提供一种动态链接库文件注入检测方法及装置,以解决现有技术中存在的动态链接库文件注入检测方案的检测精度和效率较差的缺陷。

2、第一方面,本发明提供一种动态链接库文件注入检测方法,包括:

3、在确定第一进程通过创建远程线程的方式向第二进程注入动态链接库文件的情况下,获取所述远程线程对应的线程上下文;其中,所述第一进程为操作系统运行的触发创建远程线程请求的进程,所述第二进程为操作系统运行的接收远程线程创建请求的进程;所述线程上下文用于表示远程线程在所述第二进程中的位置关系;

4、基于所述远程线程对应的线程上下文,确定所述动态链接库文件注入的目标位置。

5、进一步的,所述在确定第一进程通过创建远程线程的方式向第二进程注入动态链接库文件的情况下,获取所述远程线程对应的线程上下文,具体包括:

6、在确定第一进程通过创建远程线程向第二进程注入动态链接库文件的情况下,触发调用操作系统的回调函数,以在所述回调函数被调用过程中查找相应的ktrap_frame数据结构,并从所述ktrap_frame数据结构获取所述远程线程对应的线程上下文;

7、其中,所述ktrap_frame数据结构是操作系统在线程初始堆栈内填充的用于保存线程上下文的结构体。

8、进一步的,所述线程上下文包括线程起始地址和线程参数;所述动态链接库文件存有导出表;其中,所述导出表用于记载所述动态链接库的导出信息,所述导出信息包括线程参数对应的信息;

9、所述基于所述远程线程对应的线程上下文,确定所述动态链接库文件注入的目标位置,具体包括:

10、查询所述线程上下文中的线程起始地址所对应的虚拟地址描述符记录的内存信息,在所述内存信息包含动态链接库文件的情况下,遍历所述动态链接库文件的导出表,以读取所述线程参数对应的字符串,所述字符串用于表示所述动态链接库文件的注入路径,并基于所述字符串对应的注入路径确定注入的目标位置。

11、进一步的,在确定第一进程通过创建远程线程的方式向第二进程注入动态链接库文件的情况下之前,还包括:

12、获取所述第一进程向所述第二进程发送的用于创建线程的请求;

13、在请求创建的线程为远程线程的情况下,确定所述第一进程当前将要通过所述远程线程向所述第二进程注入动态链接库文件。

14、进一步的,在确定所述动态链接库文件注入的目标位置之后,还包括:

15、在判定所述动态链接库文件的注入路径为异常和/或所述线程上下文中的线程起始地址为异常的情况下,触发调用ntterminatethread函数以阻止所述第一进程通过创建远程线程的方式向所述第二进程注入动态链接库文件。

16、进一步的,在确定第一进程通过创建远程线程向第二进程注入动态链接库文件的情况下,触发调用操作系统的回调函数之前,还包括:预先基于所述操作系统的pssetcreatethreadnotifyroutine函数,注册所述回调函数;

17、在所述远程线程需要执行调用所述回调函数的情况下,触发所述远程线程从用户态切换到内核态,并将所述用户态的线程上下文存储到ktrap_frame数据结构。

18、在所述远程线程需要执行调用所述回调函数的情况下第二方面,本发明提供一种动态链接库文件注入检测装置,包括:

19、线程上下文获取单元,用于在确定第一进程通过创建远程线程的方式向第二进程注入动态链接库文件的情况下,获取所述远程线程对应的线程上下文;其中,所述第一进程为操作系统运行的触发创建远程线程请求的进程,所述第二进程为操作系统运行的接收远程线程创建请求的进程;所述线程上下文用于表示远程线程在所述第二进程中的位置关系;

20、注入检测单元,用于基于所述远程线程对应的线程上下文,确定所述动态链接库文件注入的目标位置。

21、进一步的,所述线程上下文获取单元,具体用于:

22、在确定第一进程通过创建远程线程向第二进程注入动态链接库文件的情况下,触发调用操作系统的回调函数,以在所述回调函数被调用过程中查找相应的ktrap_frame数据结构,并从所述ktrap_frame数据结构获取所述远程线程对应的线程上下文;

23、其中,所述ktrap_frame数据结构是操作系统在线程初始堆栈内填充的用于保存线程上下文的结构体。

24、进一步的,所述线程上下文包括线程起始地址和线程参数;所述动态链接库文件存有导出表;其中,所述导出表用于记载所述动态链接库的导出信息,所述导出信息包括线程参数对应的信息;

25、所述注入检测单元,具体用于:

26、查询所述线程上下文中的线程起始地址所对应的虚拟地址描述符记录的内存信息,在所述内存信息包含动态链接库文件的情况下,遍历所述动态链接库文件的导出表,以读取所述线程参数对应的字符串,所述字符串用于表示所述动态链接库文件的注入路径,并基于所述字符串对应的注入路径确定注入的目标位置。

27、进一步的,在确定第一进程通过创建远程线程的方式向第二进程注入动态链接库文件的情况下之前,还包括:

28、远程线程检测单元,用于获取所述第一进程向所述第二进程发送的用于创建线程的请求;在请求创建的线程为远程线程的情况下,确定所述第一进程当前将要通过所述远程线程向所述第二进程注入动态链接库文件。

29、进一步的,在确定所述动态链接库文件注入的目标位置之后,还包括:

30、异常处理单元,用于在判定所述动态链接库文件的注入路径为异常和/或所述线程上下文中的线程起始地址为异常的情况下,触发调用ntterminatethread函数以阻止所述第一进程通过创建远程线程的方式向所述第二进程注入动态链接库文件。

31、进一步的,在确定第一进程通过创建远程线程向第二进程注入动态链接库文件的情况下,触发调用操作系统的回调函数之前,还包括:回调注册单元,用于预先基于所述操作系统的pssetcreatethreadnotifyroutine函数,注册所述回调函数;

32、在所述远程线程需要执行调用所述回调函数的情况下,触发所述远程线程从用户态切换到内核态,并将所述用户态的线程上下文存储到ktrap_frame数据结构。

33、在所述远程线程需要执行调用所述回调函数的情况下。

34、第三方面,本发明还提供一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行所述计算机程序时实现如上述任意一项所述的动态链接库文件注入检测方法的步骤。

35、第四方面,本发明还提供一种处理器可读存储介质,所述处理器可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现如上述任意一项所述的动态链接库文件注入检测方法的步骤。

36、本发明提供的动态链接库文件注入检测方法,通过在确定第一进程通过创建远程线程的方式向第二进程注入动态链接库文件的情况下,获取所述远程线程对应的线程上下文,该线程上下文用于表示远程线程在第二进程中的位置关系,进而基于所述远程线程对应的线程上下文来确定动态链接库文件的注入路径,其能够对远程线程的注入数据进行快速检测,有效提高了远程线程注入数据的检测效率和精确度。

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