我正在逆转一种恶意软件,该恶意软件使用Process Hollowing的变体创建了我无法转储的进程。我不知道我在做什么错。我总是看到建议在GetContextThread处停止,但是此过程挖空不会调用该Api。

这正是发生的情况: br /> CreateProcessA:创建一个新进程,进程创建标志0x00000004用于在挂起状态下创建进程
NtCreateSection:创建两个读/写/执行部分
ZwMapViewOfSection:将读/写/执行部分映射到恶意软件的地址空间中
ZwMapViewOfSection:将第二部分映射到挂起进程的地址空间中(因此,此部分在两个进程之间共享)。
ReadProcessMemory:将已暂停进程的图像的图像库读取到第1部分中
ReadProcessMemory:将恶意软件的映像库的图像读取到库2中。通过将第1节映射到新的流程库a ddress
ResumeThread:恢复执行注入代码的已暂停进程的线程



技术用语...我应该看一下上面的api的哪一个才能找到EP?大概是最后的NtMapViewOfSection吗?

#1 楼

您上面描述的技术称为“动态派生”或“过程空心化”。您可以按照https://reverseengineering.stackexchange中介绍的步骤找到子过程的入口点。 com / a / 8431/1562,尽管我建议在NtSetContextThread()而不是SetThreadContext()上设置断点,因为该恶意软件可能会跳过后者,而直接调用前者。

评论


我没有对该API的任何调用,还有这样的流程,它显示在这里:lexsi.com/securityhub/overview-kronos-banking-malware-rootkit/…在使用CreateProcessInternalW创建流程之后到我发布的API,最后是以下内容:CreateThreadEx调用NtResumeThread()运行新进程。也许我错过了什么?

– Peterlagunas
16-4-23在16:49



很好,那么“入口点”很可能是传递给CreateThreadEx()的lpStartAddress参数。

–詹森·格夫纳(Jason Geffner)
16年4月24日在20:04

多谢您重播。第五个参数将我指向无处。正如您在imgur.com/Nd3Iwze上看到的那样,这些是参数,并且该方向甚至在我的内存映射中都不存在。我很抱歉一次又一次地失败,可能会困扰你,但我真的需要解决这个问题

– Peterlagunas
16-4-26在2:56



好吧,关于最后一条评论,我以为我无法获得某种保护的原因?因为当我再次阅读您告诉我的帖子时,由于我无权输入该进程的内存,因此它似乎出现了。所以我的新问题是,某些API可以保护它吗?你会推荐我去哪儿看看?再次非常感谢你

– Peterlagunas
16-4-26的3:11

非常感谢你!!!我已经把它丢了:)再次谢谢!

– Peterlagunas
16年4月26日在13:19