电脑被远程线程注入怎么处理 360提示远程线程注入案例( 三 )


电脑被远程线程注入怎么处理 360提示远程线程注入案例

文章插图

电脑被远程线程注入怎么处理 360提示远程线程注入案例

文章插图
AppCertDlls
这种方式类似与AppInit_DLLs 。除了该键下的DLL会加载到调用Win32 API CreateProcess, CreateProcessAsUser, CreateProcessWithlogonW, CreateProcessWithTokenW, WinExec的进程中 。
IFEO
IFEO通常用于调试 。开发者能在该键下设置调试器 。来附加调试 。因此 。当可执行文件启动时 。附加到它的程序也会启动 。为了使用这功能 。你能简单的设置调试器的路径 。并附加到你想分析的可执行文件上 。下图 。木马Diztakun(Sha256:f0089056fc6a314713077273c5910f878813fa750f801dfca4ae7e9d7578a148)使用了这种技术 。它修改了任务管理器的调试器的值 。
电脑被远程线程注入怎么处理 360提示远程线程注入案例

文章插图

电脑被远程线程注入怎么处理 360提示远程线程注入案例

文章插图
0x07 APC注入和AtomBombing
恶意软件利用异步过程调用(APC)来强制另一个线程执行附加到APC队列的自定义代码 。每个线程都有一个APC队列 。当线程进入可变状态(编辑注: 这里疑为英文原文的拼写错误 。有两处使用了alterable state一词 。而一处使用了alertable state 。疑应为alterable state)时 。可以被执行 。当调用SleepEx, SignalObjectAndWait,MsgWaitForMultipleObjectsEx, WaitForMultipleObjectsEx, WaitForSingleObjectEx时进入可变状态 。恶意软件通常查询线程是否处于可变状态 。然后调用OpenThread和QueueUserAPC来向线程插入APC 。QueueUserAPC有3个参数:1. 目标线程的句柄 2. 恶意软件想要执行的函数指针 3. 传给函数的参数 。下图 。恶意软件Amanahe(Sha256: f74399cc0be275376dad23151e3d0c2e2a1c966e6db6a695a05ec1a30551c0ad)首先调用了OpenThread来得到另一个线程的句柄 。然后调用QueueUserAPC 。以LoadLibrary作为函数指针注入恶意DLL 。
AtomBombing由enSilo首次提出 。然后在Dridex V4中使用 。正如之前博文中讨论的 。这种技术也依赖APC注入 。然而它使用atom表来写入到另一个进程的内存 。
电脑被远程线程注入怎么处理 360提示远程线程注入案例

文章插图

电脑被远程线程注入怎么处理 360提示远程线程注入案例

文章插图
0x08 通过SetWindowLong的窗口内存注入(EWMI)
EWMI依赖注入到资源管理器托盘窗口内存中 。并在恶意软件家族Gapz和PowerLoader中使用多次 。当注册一个窗口类时 。应用程序能指定额外的内存字节 。称为额外的窗口内存(EWM) 。然而 。在EWM中没有太多的空间 。为了规避这个限制 。恶意软件将代码写入explorer.exe的共享段中 。并使用SetWindowLong和SendNotifyMessage得到一个指向shellcode的函数指针 。然后执行它 。
当写入共享段时 。恶意软件有两个选项 。它能创建一个共享段自己映射到另一个进程(如explorer)中 。或者打开一个已存在的共享段 。前者有分配堆内存的开销 。而且还要调用NtMapViewOfSection等API 。因此后者更常用 。在恶意软件将shellcode写入共享段后 。使用GetWindowLong和SetWindowLong来访问并修改Shell_TrayWnd的额外的窗口内存 。GetWindowLong是用于通过32位值作为偏移得到窗口类对象中额外窗口内存 。同时使用SetWindowLong能改变指定偏移的值 。通过完成这个 。恶意软件能改变窗口类中的函数指针 。将它指向共享段的shellcode 。
和上述的技术一样 。恶意软件需要触发写入的代码 。之前说 。它是通过调用类似CreateRemoteThread 。SetThreadContext 。QueueUserAPC这些API来实现的 。与之前不同的是 。这种技术是通过使用SendNotifyMessage来触发代码执行的 。
一旦执行SendNotifyMessage 。Shell_TrayWnd将接收到并将控制移交给SetWindowLong设置的地址 。下图 。名为PowerLoader(Sha256:5e56a3c4d4c304ee6278df0b32afb62bd0dd01e2a9894ad007f4cc5f873ab5cf)的恶意软件使用了这种技术 。
电脑被远程线程注入怎么处理 360提示远程线程注入案例

文章插图

电脑被远程线程注入怎么处理 360提示远程线程注入案例

文章插图
电脑被远程线程注入怎么处理 360提示远程线程注入案例

文章插图

电脑被远程线程注入怎么处理 360提示远程线程注入案例

文章插图
0x09 使用Shims注入
微软提供了Shims给开发者 。这主要是为了向后兼容 。Shims允许开发者不必重写代码就能修复程序 。通过利用shims 。开发者告诉操作系统如何处理他们的应用程序 。Shims本质是Hook API的方式 。恶意软件能利用shims实现注入和持久化 。当加载二进制时 。Windows运行Shim引擎以检查shim数据库 。以便使用合适的修复 。

推荐阅读