ATT&CK-CN V1.0 Last Update: 2019-03 [返回索引页]

译者: 林妙倩(清华大学网络研究院网络空间安全实习生) 原创翻译作品,如果需要转载请取得翻译作者同意。

数据来源:ATT&CK Matrices

原文: https://attack.mitre.org/techniques/T1179

术语表: /attack/glossary

Hook

Windows 进程通常利用应用程序编程接口(API)函数来执行需要可重用系统资源的任务。Windows API 函数通常作为导出函数存储在动态链接库(DLL)中。Hook 涉及将调用重定向到这些功能,可以通过以下方式实现:

  • hook 程序,它拦截并执行指定的代码以响应诸如消息,击键和鼠标输入之类的事件。[1] [2]
  • 导入地址表(IAT)hookk,它修改进程的 IAT,其中存储指向导入的 API 函数的指针。[2] [3] [4]
  • 内联 hook,它覆盖 API 函数中的第一个字节以重定向代码流。[2] [5] [4]

与进程注入类似,攻击者可以使用 hook 在另一个进程的上下文中加载和执行恶意代码,秘密执行的同时还可以访问进程的内存和潜在的高级权限。当通过正常使用调用函数时,安装 hook 机制也可以通过连续调用提供持久性。

恶意 hook 机制还可以捕获 API 调用,其中包含显示 Credential Access 的用户身份验证凭据的参数。[6]

Rootkit 通常使用 hook 来隐藏文件,进程,注册表项和其他对象,以隐藏恶意软件和相关行为。[7]

缓解

这种类型的攻击技术无法通过预防性控制轻松缓解,因为它基于滥用操作系统设计功能。例如,缓解所有 hook 可能会产生意想不到的副作用,例如阻止合法软件(即安全产品)正常运行。应该集中精力防止攻击者工具在活动链中更早地运行,并确定后续的恶意行为。

检测

监视对 SetWindowsHookEx 和 SetWinEventHook 函数的调用,这些函数安装了一个钩子过程。[1] [10] 还要考虑使用工具 [10] [11] [12] 或通过编程方式检查内部内核结构来分析钩链(其中包含指向每种类型 hook 的 hook 流程的指针) 。[13] [14]

Rootkits 探测器 [15] 也可用于监控各种类型的 hook 活动。

通过将内存中的代码与相应的静态二进制代码进行比较来校验实时进程的完整性,特别是检查跳转和重定向代码流的其他指令。还要考虑拍摄新启动的进程 [16] 的 快照, 以将内存中的 IAT 与引用函数的实际地址进行比较。[17] [3]

分析进程行为以确定进程是否正在执行通常不执行的操作,例如打开网络连接,读取文件或可能与泄密后行为相关的其他可疑操作。