防止McAfee Dlls注入

问题描述 投票:2回答:6

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

  • hipi.dll
  • hipqa.dll

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

10x,盖伊

c++ windows hook dll-injection mcafee
6个回答
1
投票

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

PS:但请记住:

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


0
投票

你有2个选择。

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

0
投票

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


0
投票

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


0
投票

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


0
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.