防止McAfee Dlls注入

时间:2013-02-04 08:37:33

标签: c++ windows hook dll-injection mcafee

我有一个进程在WinSock模块上执行一些内联​​挂钩(发送和接收函数)。 在使用McAfee的计算机上,我可以看到两个dll正在注入我的进程:

  • hipi.dll
  • hipqa.dll

两者都在做这些函数的内联挂钩,我会遇到冲突和不需要的行为。是否可以选择防止/卸载这些dll,以免它们干扰?

10倍, 盖

6 个答案:

答案 0 :(得分:1)

有许多方案可以实现DLL注入(Hooking),BTW,你必须了解更多关于每个方法后面的东西如何工作,最常见的是使用CreateRemoteThread()API函数,然后你必须注入你的安全DLL在每个进程上并挂钩/重定向/拒绝对CreateRemoteThread()或任何“危险”API调用的任何调用。

PS:但请记住:

  

用户模式挂钩永远不能成为应用额外安全性的选项   以任何安全的方式检查。如果你只想要       对“沙盒”一个专门的过程,你很了解,而且这个过程实际上并不了解       EasyHook,这可能会成功!但是,不要试图根据用户编写任何安全软件       模式挂钩。这不行,我向你保证...

答案 1 :(得分:0)

您有2个选项。

  1. 为您的流程添加排除项,以便McAfee不会尝试扫描它。我不使用McAfee的产品,但我认为这是一个相对简单的过程。
  2. 卸载McAfee

答案 2 :(得分:0)

最简单的解决方案是取消挂起受影响的功能。我不得不做同样的事情来解决一些戴尔的crapware。虽然它需要对x86程序集有所了解,但这并不算太难。您必须禁用DEP,使修补的代码可写,找到原始指令,然后将其复制回来。查找原始说明可能意味着要拆卸补丁。

答案 3 :(得分:0)

另一种选择只是将它挂在不同的地方。例如,取而代之的是挂钩IAT,然后当你完成所需的任何操作后,将执行转发回实际功能,然后通过McAfee的钩子进行操作。

答案 4 :(得分:0)

我必须处理过类似的事情。阅读他们自己的钩子组件存根,这样你就可以弄清楚如何以你的钩子链接到你的钩子的方式。

答案 5 :(得分:0)

我认为McAfee正在从内核模式执行DLL注入。他们很可能找到了KeServiceDescriptorTable的地址(由NTOSKRNL在32位系统上导出,其地址由KiSystemServiceRepeat泄露在64位环境中 - >接近IA32_LSTAR模型特定寄存器找到的KiSystemCall64)然后找到NtCreateThreadEx从服务表中,或者他们使用KeInitializeApc和KeInsertQueueApc(均由NTOSKRNL导出)进行APC注入(自定义NtQueueApcThread包装器)。考虑到他们是一个拥有大量资源的安全供应商,这是合乎逻辑的,我怀疑他们是从用户模式注入的。

可能是他们滥用PsSetCreateProcessNotifyRoutineEx或PsSetLoadImageNotifyRoutineEx来检测新进程创建。第一个不如后者,后者更适合过滤NTDLL.DLL,因为它是第一个加载到每个进程中的模块,并表示该进程实际上已正确启动并准备执行其自己的代码(在Windows模块加载之后,因为McAfee需要等待加载像kernel32.dll这样的Win32模块,否则如果他们在注入的模块中完全使用Win32 API,它们将会崩溃进程。)

您可以尝试拦截LdrInitializeThunk或KiUserApcDispatcher,但老实说,您无能为力。无论您做什么,McAfee都会找到一种注入流程的方法,因为他们可以从内核模式进行控制。如果您通过驱动程序的各种内核模式回调开发进程保护,它们将使用通过ntoskrnl.exe的模式匹配扫描定位的非导出例程或不调用回调通知API的导出例程来绕过它。如果您在远程攻击者执行时本地修补了在您自己的进程中本地调用线程创建/ APC的例程,他们将找到防止此操作并绕过它的方法(例如,将您的进程的地址空间中的修补例程修补回到原始,注入,然后重新修补字节。)

如果您想使用McAfee拥有的权限停止安全软件,那么您正在玩火。它与Anti-Cheat无法阻止具有内核模式访问权限的游戏黑客的方式类似,并且现在采取严厉措施甚至标记启用调试模式/测试模式。

相关问题