×

DLL注入技术

访客 访客 发表于2021-09-29 00:57:01 浏览737 评论5

5人参与发表评论

简述

DLL是windows服务平台出示的一种模块共享资源和器重体制,它自身不可以立即单独运作,但能够 被加载到别的进程中间接性实行。

DLL注入,是将编码插进/注入到已经运作的进程中的全过程。原本是手机软件用以向别的程序流程加上/拓展作用、调节或反向工程的一种合理合法技术性。但是,之后恶意程序也常见这类方法来干坏事。是一种广泛运用于恶意程序和无文档进攻中的躲避技术性

DLL注入方式

一般 状况下,程序流程加载DLL的机会关键有3个,因而,在开展DLL注入时,也是根据这3种方式开展:

在进程建立环节加载输入表中的DLL,即别名的“静态数据输入”

根据启用LoadLibrary(Ex)积极加载,别名“动态性加载”

因为系统软件体制的规定,务必加载系统软件预置的一些基础服务模块,比如Shell拓展模块,互联网服务插口模块或输入法模块等。

根据干涉输入表处理全过程加载总体目标DLL(静态数据输入)

在进程建立环节,解决并加载输入表中的DLL模块是一项十分关键的工作中。当一个进程被建立后,不容易立即到EXE自身的入口实行,最先强制执行的是ntdll.dll中的LdrInitializeThunk涵数(ntdll是windows电脑操作系统中一个十分关键的基本模块,它在进程建立环节就早已被投射到新进程中了。)LdrInitializeThunk会启用LdrInitializeProcess对进程的一些必需內容开展复位,LdrInitializeProcess会再次启用LdrpWalkImportDescriptor对输入表开展解决,即加载输入表中的模块,并添充应用软件的IAT(表针,偏向的是结构体数组,建筑结构名称叫IMAGE_THUNK_DATA,是个4选1的union,4个目标是ForwarderString/Function/Ordinal/AddressOfData,IAT挑选在其中的Function(详细地址))。因此,只需在输入表被解决以前开展干涉,为输入表提升一个新项目,使其偏向要加载的总体目标DLL,或是更换元输入表中的DLL并对启用开展分享,那麼新进程的主线任务程在输入表复位环节便会积极加载总体目标DLL。普遍技巧:

静态数据改动PE输入表法

进程建立期改动PE输入表法

输入表项DLL替换法

更改程序执行步骤使其积极加载总体目标DLL(动态性加载)

程序执行的器皿是进程,真真正正主题活动的是在其中的进程。程序流程并不可以独立实行,仅有将程序流程加载到运行内存中,系统软件为他资源分配后才可以实行,这类实行的程序流程称之为进程,换句话说进程是系统软件开展资源配置和生产调度的一个单独模块,每一个进程都是有自身独立的详细地址室内空间。

因而,更改操作程序的一般 作法是更改进程EIP,建立新进程或改动总体目标进程内的一些编码,使其实行LoadLibrary(Ex)来加载总体目标DLL。普遍技巧:

CreateRemoteThread法

RtlCreateUserThread法

QueueUserApc/NtQueueAPCThread APC注入法

SetThreadContext法

核心中根据Hook/Notify干涉实行步骤法

核心KeUserModeCallback法

纯WriteProcessMemory法

运用系统软件体制加载DLL

电脑操作系统出示的一些系统软件体制是依靠一些基础服务模块(可能是电脑操作系统自身出示的,也可能是第三方出示的)完成的,当进程积极或处于被动开启了这种系统软件体制时,便会在适度的情况下积极加载这种模块。因而,能够 订制一个合乎该标准的DLL,将其申请注册为服务程序模块,那样就可以“合理合法”地进到总体目标进程了。有关方式以下:

SetwindowHookEx 信息勾子注入

AppInit_DLLs 注册表项注入

输入法注入

SPI互联网过滤装置注入

ShimEngine注入

Explorer Shell拓展注入

DLL注入的预防

对于整体的3种注入方式,对前面一种静态数据改动文档开展注入的预防,关键采用文件校验等方法开展预防,有标准的能够 给程序流程再加上电子签名,一旦发觉程序流程被改动就拒不履行。对于动态性注入关键分成驱动器层预防和网络层预防两类。

驱动器层预防

KeUserModeCallback防全局性信息勾子注入

NtMapViewOfSection/LoadImageNotify对模块开展认证

阻拦进程开启,读,写,及其建立远进程,推送APC等实际操作

Call Stack检验不法模块

网络层预防

根据Hook LoadLibraryEx涵数预防全局钩子,输入法注入等

在DLLMain中防御力远程控制进程

枚举类型并搜索当今进程中的不法模块和异常运行内存

Hook ntdll中的最底层涵数开展Call Stack检验

之上是本人踏恶意程序剖析之途,所需累积的专业知识。纯学习分享,不喜勿喷

参考文献:《加密与解密4.0》,google.com

群贤毕至

访客
柔侣桃靥 柔侣桃靥2022-06-04 20:44:19 | 回复 关方式以下:SetwindowHookEx 信息勾子注入AppInit_DLLs 注册表项注入输入法注入SPI互联网过滤装置注入ShimEngine注入Explorer Shell拓展注入DLL注入的预防对于整体的3种注入方式,对前面一种静态数据改动文档开展注入的预防,关键采用
性许绮烟 性许绮烟2022-06-04 20:56:30 | 回复 (详细地址))。因此,只需在输入表被解决以前开展干涉,为输入表提升一个新项目,使其偏向要加载的总体目标DLL,或是更换元输入表中的DLL并对启用开展分享,那麼新进程的主线任务程在输入表复位环节便会积极加载总体目标DLL。普遍技巧:静态数据改动PE输入表法进程建立期改动
夙世诗呓 夙世诗呓2022-06-04 16:57:58 | 回复 ptor对输入表开展解决,即加载输入表中的模块,并添充应用软件的IAT(表针,偏向的是结构体数组,建筑结构名称叫IMAGE_THUNK_DATA,是个4选1的union,4个目标是ForwarderString/Function/Ordinal/Address
莣萳绿脊 莣萳绿脊2022-06-04 20:10:14 | 回复 rtDescriptor对输入表开展解决,即加载输入表中的模块,并添充应用软件的IAT(表针,偏向的是结构体数组,建筑结构名称叫IMAGE_THUNK_DATA,是个4选1的union,4个目标是Forwarder
世味笑惜 世味笑惜2022-06-04 21:07:27 | 回复 LdrInitializeProcess会再次启用LdrpWalkImportDescriptor对输入表开展解决,即加载输入表中的模块,并添充应用软件的IAT(表针,偏向的是结构体数组,建筑结构名称叫IMAGE_THUNK_DATA,是个4