加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

十种历程注入技能先容:常见注入技能及趋势观测

发布时间:2018-11-05 19:00:04 所属栏目:业界 来源:Freebuf
导读:媒介 历程注入是一种普及行使的逃避检测的技能,凡是用于恶意软件可能无文件技能。其必要在另一个历程的地点空间内运行特制代码,历程注入改进了不行见性,同时一些技能也实现了耐久性。尽量今朝有很多历程注入技能,但在这篇文章中,我将会先容十种在野发
副问题[/!--empirenews.page--]

 媒介

历程注入是一种普及行使的逃避检测的技能,凡是用于恶意软件可能无文件技能。其必要在另一个历程的地点空间内运行特制代码,历程注入改进了不行见性,同时一些技能也实现了耐久性。尽量今朝有很多历程注入技能,但在这篇文章中,我将会先容十种在野发明的,在另一个措施的地点空间执行恶意代码的历程注入技能,并提供这些技能应用的截图,以便于逆向工程和恶意软件说明,然后帮忙检测并防止这些历程注入技能。

技能应用

一、通过CREATEREMOTETHREAD和LOADLIBRARY举办经典DLL注入

该技能是用于将恶意软件代码注入另一个历程最常用技能之一,恶意软件作者将恶意的动态链接库(DLL)的路径写入另一个历程的假造地点空间,并通过在方针历程中建设一个长途线程来确保方针历程加载它。

通过CREATEREMOTETHREAD和LOADLIBRARY举办经典DLL注入

恶意软件起首必要选择被注入的方针历程(譬喻svchost.exe),这凡是可以通过挪用三个应用编程接口(API)搜刮历程来完成:CreateToolhelp32Snapshot,Process32First和Process32Next。CreateToolhelp32Snapshot是用于列举指定历程或全部历程的堆或模块状态的API,其会返回一个快照。Process32First会检索有关快照中第一个历程的信息,然后通过轮回Process32Next来迭代。找到方针历程后,恶意软件通过挪用OpenProcess获取方针历程的句柄。

如图一所示,恶意软件挪用VirtualAllocEx来得到写入其DLL路径的空间。然后恶意软件挪用WriteProcessMemory在已分派的内存中写入路径。最后,为了让代码在另一个历程中执行,恶意软件作者会挪用API,譬喻CreateRemoteThread,NtCreateThreadEx或RtlCreateUserThread。后两个并未存在应用记录,可是一样平常的设法就是将LoadLibrary的地点转达给个中一个API,以便长途历程不得不代表恶意软件执行DLL。

许多杀毒软件城市追踪和标志CreateRemoteThread,另外,注入也必要磁盘上存在恶意DLL。但这是可以被检测到的。思量到进攻者最常通过注入代码以躲避检测,以是一些精悍的进攻者也许并不会行使这种要领。下面的截图展示了一个叫Rebhip的恶意软件应用了此技能。

Rebhip

二、PORTABLE EXECUTABLE注入(PE注入)

这种技能斌没有转达LoadLibrary的地点,而是将其恶意代码复制到已存在的开放历程并执行(通过shellcode或挪用CreateRemoteThread)。PE注入相对付LoadLibrary注入的一个利益是恶意软件不必在磁盘上放一个恶意DLL。与第一种技能相同,恶意软件在宿主历程平分派到内存,其并没有编写“DLL路径”,而是通过挪用WriteProcessMemory来编写其恶意代码。然而,这种要领的一个缺陷是方针基址的改变,当恶意软件将其PE注入到另一个历程时,其会有一个新的不行猜测的基址,这就要求其动态地从头计较PE的地点。为了办理这个题目,恶意软件必要在宿主历程中找到其重定位表地点,并通过轮回其重定位描写符来理会绝对地点。

PE注入

此技能相同于其他技能,譬喻反射式DLL,由于它们不会将任何文件放在磁盘,可是,反射式DLL注入要领乃至会越发潜伏。它们不依靠于任何特另外Windows API(譬喻CreateRemoteThread或LoadLibrary),由于它们在内存中加载和执行本身。反射式DLL注入通过建设一个DLL来实现,该DLL在执行时将自身映射到内存,而不是依靠于Windows的loader。

在说明PE注入时,挪用CreateRemoteThread之前凡是会看到轮回(凡是是两个“for”轮回,一个嵌套在另一此中)这种技能在crypter(加密和夹杂恶意软件的软件)中很是风行。在图二中,样本的单位测试中正在操作这种技能。代码有两个嵌套轮回来调解其重定位表,可以在挪用WriteProcessMemory和CreateRemoteThread之前看到它。“AND 0x0fff”指令是另一个好指示,表白前12位用于获取包括重定位块的假造地点的偏移量。既然恶意软件已经从头计较了全部须要的地点,那么它必要做的只是将其起始地点转达给CreateRemoteThread并让它执行。

转达给CreateRemoteThread并让它执行

三、PROCESS HOLLOWING技能(又名 PROCESS REPLACEMENT AND RUNPE)

恶意软件可以不消将代码注入宿主措施,而是操作Process Hollowing技能。当恶意软件从方针历程中打消映射,并行使恶意可执行文件包围方针历程的内存空间时,会产生Process Hollowing。

ROCESS HOLLOWING技能

恶意软件起首会建设一个新历程,以挂起模式托管恶意代码,如图三所示,这是通过挪用CreateProcess并将Process Creation Flag配置为CREATE_SUSPENDED(0×00000004)来完成的。新历程的主线程是在挂起状态下建设的,而且在挪用ResumeThread函数之前不会执行。接下来,恶意软件必要行使恶意载荷互换正当文件的内容,这是通过挪用ZwUnmapViewOfSection或NtUnmapViewOfSection来打消映射方针历程的内存完成的。这两个API根基上开释了一个区的全部内存。此刻内存处于未映射状态,loader执行V​​irtualAllocEx为恶意软件分派新内存,并行使WriteProcessMemory将每个恶意软件的部门写入方针历程空间。而恶意软件通过挪用SetThreadContext将进口点指向它已编写的新代码段。最后,恶意软件通过挪用ResumeThread规复挂起的线程,使历程退出挂起状态。

用ResumeThread

四、线程执行挟制技能(可能说SUSPEND, INJECT, AND RESUME (SIR))

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读