详细内容或原文请订阅后点击阅览
绕过用户模式 EDR 挂钩的简介
了解用户模式 EDR 挂钩的基础知识、常见的绕过技术及其局限性。
来源:MalwareTech时光倒流之旅
最近我重新开始研究恶意软件,并翻阅了一些旧笔记,准备写一篇文章。在将笔记与旧博客文章进行交叉引用时,我意识到我从未真正发表过关于系统调用和用户模式挂钩的大部分工作。由于我的下一篇文章将要求读者熟悉这两个概念,因此我决定花时间完善并发表我其余的研究成果。嘿,谁会拒绝免费的额外博客文章呢?
虽然这篇文章旨在独立成篇,但如果您有兴趣,您可以在此处、此处、此处和此处找到我之前关于这些主题的文章。令人惊讶的是,尽管所有这些研究都是十多年前的,但它在今天仍然完全具有现实意义。我想,事物变化越多,它们保持不变的程度就越大?
此处 此处 此处 此处什么是系统调用
系统调用是从用户模式转换到内核模式的标准方式。它们是软件中断的现代、更快版本。
系统调用接口非常复杂,但由于其中大部分与我们正在做的事情无关,我只会给出一个更高级别的总结。在大多数情况下,您不需要深入了解它的工作原理来利用这些技术,但了解它会很有帮助。
在 Windows 上,内核有一个允许从用户模式调用的函数表。这些函数有时被称为系统服务、本机函数或 Nt 函数。它们是以 Nt 或 Zw 开头的函数,位于 ntoskrnl.exe 中。系统服务表称为系统服务描述符表,简称 SSDT。
syscall
查找看起来像这样 entry = nt!KiServiceTable+(SSN * 4)。
entry = nt!KiServiceTable+(SSN * 4)
syscall 指令导致 CPU 切换到内核模式并调用系统调用处理程序,该处理程序从 eax 寄存器获取 SSN 并调用相应的 SSDT 函数。
OpenProcess()
NtOpenProcess()
NtOpenProcess()