【ATT&CK】ATT&CK中的进程注入三部曲

访客4年前黑客工具403

  详细介绍分析了Mitre ATT&CK矩阵中的三种进程注入手法:经典的进程注入、Process Hollowing和Process Doppelgnging。并对相应的手法趋势作出总结

  恶意软件使用进程注入的主要目的大致是为了躲避杀软的检测或者进行提权操作。这里我们将主要针对之一种情况下的3种手段进行详细的讨论。

  这是最为经典的手段,流程也十分简洁明了即:

  OpenProcess -> VirtualAllocEx -> WriteProcessMemory -> CreateRemoteThread

  【ATT&CK】ATT&CK中的进程注入三部曲289.png

  【ATT&CK】ATT&CK中的进程注入三部曲291.png

  【ATT&CK】ATT&CK中的进程注入三部曲293.png

  【ATT&CK】ATT&CK中的进程注入三部曲295.png

  这是一种相当古老的手段了,中文一般译为"创建傀儡进程",使用该手法创建的进程可以伪装为任意的合法进程,比如伪装为IE,在内存中使用process hacker查看时其图标资源、描述、数字签名均为IE的值。这样应急响应人员在进行排查的时候可能难以发现。

  用简洁的语言概括该手法,即恶意进程首先创建一个挂起状态的进程,然后取消其原先的内存映射并替换成事先准备的恶意代码,在对修改后的映像文件进行重定向后再恢复该进程的运行状态。

  实现思路:

  1. 通过CreateProcess创建目标进程,传入参数CREATE_SUSPENDED使进程挂起

  【ATT&CK】ATT&CK中的进程注入三部曲595.png

  2. 通过NtQueryProcessInformation获取目标进程内存中映像文件的基地址。(PEB块数据结构)

  【ATT&CK】ATT&CK中的进程注入三部曲653.png

  【ATT&CK】ATT&CK中的进程注入三部曲655.png

  3. 通过NtUnmapViewOfSection清空目标进程的内存数据(section),传入参数为进程句柄和映像文件的基地址

  【ATT&CK】ATT&CK中的进程注入三部曲719.png

  4. 通过VirtualAllocEx申请新的内存(起始地址为之前映像文件的基地址,大小则为payload的大小)

  5. 通过WriteProcessMemory向内存写入payload

  6. 将写入内存中的payload进行基址重定向

  7. 通过GetThreadContext获取目标线程的上下文,将上下文的eax寄存器修改为正确的代码入口点

  8. 通过SetThreadContext设置入口点

  9. 通过ResumeThread唤醒进程,执行payload

  对抗思路:

  从实现思路中可以看出,步骤1、4、5、6、7、8、9是常规的创建一个进程然后自己注入的手段。只有步骤2、3是比较特殊的。用常规的检测手段如Hook关键函数进行判断即可检测。

  这是一种比较新的注入手段,首次提出于2017年的欧洲black hat大会。该手段在原理及表现上与Process Hollowing是类似的,利用Process Doppelgnging创建的进程在内存中使用process hacker查看时其图标资源、描述、数字签名均为指定的目标程序。

  该手法利用了windows事务(TxF)的特性,在事务中使用恶意文件覆盖合法文件,此时不提交事务(即覆盖不会在磁盘上发生),然后创建一个section(当前事务的拷贝)。在获得了section的句柄后,就将事务回滚,防止恶意文件在磁盘上真正地覆盖合法文件。之后就使用内存中section的句柄进行进程创建操作。而创建的进程是拥有合法可执行文件的信息的。

  可以看到,由于需要在事务中覆盖文件,所以该手法需要对目标文件有写权限。

  实现思路:

  1. 创建一个TxF事务对象(NtCreateTransaction)

  【ATT&CK】ATT&CK中的进程注入三部曲1473.png

  2. 以事务API打开合法可执行文件,即在事务对象中加入文件(CreateFileTransacted)

  【ATT&CK】ATT&CK中的进程注入三部曲1525.png

  3. 打开恶意文件并为其分配内存空间(CreateFile、GetFileSizeEx -> NtAllocateVirtualMemory -> ReadFile)

  4. 用内存中的恶意文件覆盖事务中的合法可执行文件(WriteFile)

  【ATT&CK】ATT&CK中的进程注入三部曲1642.png

  5. 创建当前事务的section(NtCreateSection)

  【ATT&CK】ATT&CK中的进程注入三部曲1676.png

  6. 回滚事务,使刚刚的覆盖恢复成合法可执行文件(NtRollbackTransaction)

  【ATT&CK】ATT&CK中的进程注入三部曲1678.png

  7. 使用内存中的section来创建进程对象(NtCreateProcessEx)

  【ATT&CK】ATT&CK中的进程注入三部曲1765.png

  8. 获取恶意文件的入口点,创建进程参数块,然后将进程块写入进程内存中(NtQueryInformationProcess -> RtlInitUnicodeString -> RtlCreateProcessParametersEx)

  9. 更新PEB中的进程参数块,为目标进程对象创建线程,执行恶意代码(NtCreateThreadEx)

  对抗思路:

  从步骤上看,Hook关键函数(如NtCreateThreadEx)进行判断即可检测该手法。

  从上述3种手法的演变上可以看到几点趋势。

  之一点,内存中的隐蔽能力越来越强,由最开始的毫无隐蔽性可言,到现在可以做到在内存中表现得与合法程序一致。

  第二点,payload释放到内存中的手段越来越难以检测,最初payload是直接拷贝到内存中的,现在攻击者可以利用一些特性(如TxF)来进一步隐蔽释放过程。

  第三点,最终阶段的关键函数几乎没有变化,即使payload的释放越来越隐蔽,但是最终还是要释放到内存中并且调用执行的。通过对有限的关键函数进行Hook,应该就能dump出最终的payload。

相关文章

勐海布朗山老曼峨普洱茶价格

老曼峨与普洱江湖的王者老班章,同属布朗山的一个村委会。老曼峨寨位居偏远的中缅边境的大山皱褶之中,至今已有1371年的悠久历史;在傣语中,曼峨是ldquo;芦苇寨rdquo;的意思。苦是老曼娥的古树茶。...

燕川豆花火锅能加盟吗?想加盟点进来

燕川豆花火锅能加盟吗?想加盟点进来

有人说火锅行业投资回报丰厚,但是在种类繁多的火锅行业中,做什么品牌的火锅才能打开局面,有没有比较有特点的火锅呢?独具特色又不失美味呢?有不少投资者说加盟燕川豆花火锅让自己取得了成功,并实现了自己多年的...

滕鸿飞个人简介和人物经历(华为 滕鸿飞判决书

滕鸿飞个人简介和人物经历(华为 滕鸿飞判决书

随着昨日新闻的播出,华为副总裁腾鸿飞被带走调查一事发酵的越来越厉害。从一名几百万年薪的高管,到极有可能沦为的阶下囚,这中间起到决定作用的是什么?利益,巨大的利益! 人性是贪婪的,马克思在《资...

退休年龄是否延长(什么时候延长退休年龄)

延迟退休办法还没有出台。2016年2月29日,人力资源社会保障部部长在国务院新闻办公室就业和社会保障问题新闻发布会上讲,“渐进式延迟退休方案已经出来了, 现在还没有具体政策,人社部的草案未公开,预计2...

iPhone 12全新明确,将于9月宣布公布,市场价更感人至深!

倘若问大家哪个的手机最受关注,就算 新机都还没到加温期,但在网络上的信息就一直很多 ,不容置疑很多 朋友会答复称作iPhone的iPhone手机。真理的客观性情况事实上就是这样,每一年的iPhone手...

皮肤怎样变白(美白到底怎么做最有效)

  肌肤怎样变白(美白皮肤究竟如何做最有效)俗话说得好:一白遮百丑。每一个追求美丽的女孩都想有着嫩白的皮肤。爱美之心,人人皆有,每个人都艳羡有着嫩白皮肤的人。但并并不是每一个人都与生俱来有着嫩白的皮肤...