十种历程注入技能先容:常见注入技能及趋势观测
在图8中,Amanahe恶意软件起首挪用OpenThread来获取另一个线程的句柄,然后通过LoadLibraryA挪用QueueUserAPC作为函数指针,将其恶意DLL注入另一个线程。 AtomBombing是一项由enSilo研究初次引入的技能,然后用于Dridex V4。 正如我们在前一篇文章中具体接头的那样,该技能也依靠于APC注入。 可是,它行使原子表写入另一个历程的内存。 八、通过SETWINDOWLONG举办附加窗口内存注入(EWMI) EWMI依靠于注入资源打点器托盘窗口的特殊窗口内存,而且已经在Gapz和PowerLoader等恶意软件系列中应用过屡次。注册窗口类时,应用措施可以指定一些特另外内存字节,称为特殊窗口内存(EWM)。可是,EWM的空间不大。为了规避此限定,恶意软件将代码写入explorer.exe的共享部门,并行使SetWindowLong和SendNotifyMessage行使指向shellcode的函数指针,然后执行它。 在写入共享部门时,恶意软件有两种选择。它既可以建设共享空间,也可以将其映射到自身和另一个历程(譬喻explorer.exe),也可以只打开已存在的共享空间。除了一些其他API挪用之外,前者尚有分派堆空间和挪用NTMapViewOfSection的开销,因从此一种要领更常用。在恶意软件将其shellcode写入共享部门后,它行使GetWindowLong和SetWindowLong来会见和修改“Shell_TrayWnd”的特殊窗口内存。GetWindowLong是一个API,用于将指定偏移量的32位值检索到窗口类工具的特殊窗口内存中,SetWindowLong用于变动指定偏移量的值。这样一来,恶意软件可以简朴地变动窗口类中的函数指针的偏移量,并将其指向写入共享部门的shellcode。 与上面提到的大大都其他技能一样,恶意软件必要触发它特制的代码。在先前接头的技能中,恶意软件通过挪用诸如CreateRemoteThread,QueueUserAPC或SetThreadContext之类的API来实现此目标。行使此要领,恶意软件会通过挪用SendNotifyMessage来触发注入的代码。执行SendNotifyMessage后,Shell_TrayWnd吸取节制并将节制转移到之前由SetWindowLong配置的值指向的地点。在图9中,名为PowerLoader的恶意软件行使此技能。 九、SHIMS注入 Microsoft向开拓职员提供SHIMS首要是为了向后兼容。SHIMS应承开拓职员将修补措施应用于他们的措施,而无需重写代码。通过操作SHIMS,开拓职员可以汇报操纵体系如那里理赏罚应用措施。SHIMS本质上是一种挂钩API并定位特定可执行文件的要领。恶意软件可以操作SHIMS来定位耐久性和注入的可执行文件。Windows在加载二进制文件时运行Shim Engine以搜查SHIMS数据库以应用恰当的修复措施。 此刻有很多要领应用修复措施,但恶意软件的最爱是与安详相干的(譬喻,DisableNX,DisableSEH,InjectDLL等)。要安装填凑数据库,恶意软件可以陈设各类要领。譬喻,一种常见的要领是简朴地执行sdbinst.exe,并将其指向恶意sdb文件。在图10中,告白软件“按导管搜刮掩护”行使垫片举办耐久性和注入。它在Google Chrome中执行“InjectDLL”添补措施以加载vc32loader.dll。有一些用于说明sdb文件的现有器材,可是为了说明下面列出的sdb,我行使了python-sdb。 十、IAT HOOKING和INLINE HOOKING (可能叫应用层ROOTKITS) IAT hooking和inline hooking凡是称为userland rootkit。IAT hooking是恶意软件用于变动导入地点表的技能。当正当应用措施挪用位于DLL中的API时,其会执行替代的函数,而不是原始函数。相反,行使inline hooking,恶意软件则会修改API函数自己。在图11中,恶意软件FinFisher通过修改CreateWindowEx指向的位置来执行IAT hooking。 总结 在这篇文章中,我先容了恶意软件用于在另一个历程中潜匿其勾当的十种差异技能。凡是,恶意软件会直接将其shellcode注入另一个历程,可能逼迫另一个历程加载其恶意库。在表1中,我对各类技能举办了分类,并提供了样本作为阅读本文所涵盖的每种注入技能的参考。 【编辑保举】
点赞 0 (编辑:河北网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |