防止迈克菲 Dll 注入
Prevent McAfee Dlls injection
我有一个在WinSock模块上做一些内联钩子的过程(发送和接收函数)。在装有迈克菲的计算机上,我可以看到两个 dll 正在注入到我的进程中:
- 希皮.dll
- 希普卡.dll
两者都可能在这些功能上进行内联钩接,我遇到了冲突和不需要的行为。是否有选项可以防止/卸载这些 dll,以便它们不会干扰?
10倍,家伙
有很多场景可以实现DLL注入(钩子),顺便说一句,你必须更多地了解每个方法背后的工作原理,最常见的是使用CreateRemoteThread()API函数,然后你必须在每个进程上注入你的安全DLL,并钩住/重定向/拒绝任何对CreateRemoteThread()的调用或任何"危险"的API调用。
PS:但请记住:
用户模式挂钩永远不能成为应用额外安全性的选项 以任何安全的方式进行检查。如果你只想 "沙盒"一个专用进程,你很清楚,而这个过程实际上不知道 EasyHook,这可能会成功!但永远不要尝试根据用户编写任何安全软件 模式挂钩。这行不通,我向你保证...
您有 2 个选项。
- 为您的进程添加排除项,以便迈克菲不会尝试扫描它。我不使用 McAfee 的产品,但我认为这将是一个相对简单的过程。
- 卸载迈克菲
最简单的解决方案是取消挂钩受影响的函数。我必须做同样的事情来解决一些戴尔垃圾软件。这并不过分困难,即使它需要对 x86 汇编有一些了解。您必须禁用 DEP,使修补的代码可写,找到原始指令,然后将它们复制回来。找到原始说明可能意味着拆卸补丁。
另一种选择是简单地将其钩在不同的位置。例如,改为挂钩 IAT,然后在完成所需的任何操作后,将执行转发回实际函数,然后它将通过 McAfee 的钩子。
我不得不处理类似的事情一次。阅读他们自己的钩子组件存根,这样你就可以弄清楚如何以你之后链接到他们的钩子的方式钩子。
我想迈克菲正在从内核模式执行DLL注入。他们可能会找到 KeServiceDescriptorTable 的地址(由 NTOSKRNL 在 32 位系统上导出,它的地址在 64 位环境中由 KiSystemServiceRepeat -> 泄漏,接近 IA32_LSTAR Model 特定寄存器找到的 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 调用的例程,他们将找到防止这种情况并绕过它的方法(例如,将进程地址空间中修补的例程修补回原始例程,注入,然后重新修补字节)。
如果您想停止使用迈克菲拥有的权限的安全软件,那么您就是在玩火。这类似于反作弊无法阻止具有内核模式访问权限的游戏黑客,并采取严厉措施,甚至标记现在启用的调试模式/测试模式。
- 读取进程内存多级指针(DLL 注入)
- DLL 注入不断失败,出现不一致的错误
- DLL 注入记事本
- 当我将 DLL 注入现有进程时,DLLMain 不执行任何操作
- 如何获取 dll 注入到的进程的名称
- Dll 注入 - LoadLibraryA 失败
- 通过 dll 注入在主线程中执行代码
- 手动 DLL 注入
- DLL注入,C ++,DLL没有SVChost权限的原因
- DLL 注入编译 "unresolved external symbol" Visual Studio C++
- C++ - DLL 注入器中未解析的外部
- C++Dll注入——Hello world Dll只有在注入到注入它的相同.exe中时才能工作
- DLL注入仅在没有从视觉工作室开始时起作用
- C++ - DLL 注入和调用函数
- 如何将DLL注入Delphi程序
- DLL 注入:DrawText 和 TextOut 不会返回所有文本
- Dll 注入 - 在另一个进程中编写本机代码
- GetFullPathNameA的Dll注入不起作用
- 如何使用Blackllist/通过唯一标识dll来阻止dll注入
- 如何将dll注入另一个进程