组件对象模型劫持

编辑

通过注册表修改识别组件对象模型 (COM) 劫持。攻击者可以通过执行被劫持的 COM 对象引用触发的恶意内容来建立持久性。

规则类型: eql

规则索引:

  • logs-endpoint.events.registry-*

严重性: 中

风险评分: 47

运行频率: 5 分钟

搜索索引起始时间: now-9m (Date Math 格式,另请参阅 额外回溯时间)

每次执行的最大警报数: 100

参考:

标签:

  • 域: 端点
  • 操作系统: Windows
  • 用例: 威胁检测
  • 策略: 持久性
  • 策略: 防御规避
  • 策略: 权限提升
  • 资源: 调查指南
  • 数据源: Elastic Endgame
  • 数据源: Elastic Defend

版本: 114

规则作者:

  • Elastic

规则许可证: Elastic License v2

调查指南

编辑

分类和分析

调查组件对象模型劫持

攻击者可以通过劫持 COM 引用和关系来插入恶意代码,这些恶意代码可以代替合法软件执行,以此作为持久化的一种手段。

可能的调查步骤

  • 调查未知进程的进程执行链(父进程树)。检查它们的可执行文件是否普遍存在,它们是否位于预期位置,以及它们是否使用有效的数字签名进行签名。
  • 确定执行操作的用户帐户以及它是否应该执行此类操作。
  • 调查过去 48 小时内与用户/主机相关的其他警报。
  • 通过查找跨主机的类似事件来评估此行为在环境中是否普遍存在。
  • 检索注册表中引用的文件,并确定它是否是恶意的
  • 使用私有沙盒恶意软件分析系统执行分析。
  • 观察和收集有关以下活动的信息
  • 尝试联系外部域和地址。
  • 文件和注册表访问、修改和创建活动。
  • 服务创建和启动活动。
  • 计划任务创建。
  • 使用 PowerShell Get-FileHash cmdlet 获取文件的 SHA-256 哈希值。
  • 在 VirusTotal、Hybrid-Analysis、CISCO Talos、Any.run 等资源中搜索哈希的存在和信誉。

误报分析

  • 一些 Microsoft 可执行文件将引用 LocalServer32 注册表键值,以获取外部 COM 对象的位置。

响应和补救

  • 根据分类结果启动事件响应流程。
  • 隔离相关主机以防止进一步的攻击后行为。
  • 如果分类确定了恶意软件,请在环境中搜索其他受感染的主机。
  • 实施临时网络规则、程序和分段以包含恶意软件。
  • 停止可疑进程。
  • 立即阻止已识别的入侵指标 (IoC)。
  • 检查受影响的系统是否存在其他恶意软件后门,例如反向 shell、反向代理或攻击者可能用来重新感染系统的 dropper。
  • 删除并阻止分类期间识别出的恶意构件。
  • 调查攻击者入侵或使用的系统上的凭据泄露情况,以确保识别所有受感染的帐户。重置这些帐户以及其他可能泄露的凭据(如电子邮件、业务系统和 Web 服务)的密码。
  • 运行完整的反恶意软件扫描。这可能会揭示系统中遗留的其他构件、持久性机制和恶意软件组件。
  • 确定攻击者滥用的初始向量,并采取行动以防止通过相同向量再次感染。
  • 使用事件响应数据,更新日志记录和审计策略,以提高检测平均时间 (MTTD) 和响应平均时间 (MTTR)。

设置

编辑

设置

如果在版本 < 8.2 的非 elastic-agent 索引(例如 beats)上启用 EQL 规则,则事件将不定义 event.ingested,并且直到 8.2 版本才添加 EQL 规则的默认回退。因此,为了使此规则有效工作,用户需要添加自定义的摄取管道以将 event.ingested 填充到 @timestamp。有关添加自定义摄取管道的更多详细信息,请参阅 - https://elastic.ac.cn/guide/en/fleet/current/data-streams-pipeline-tutorial.html

规则查询

编辑
registry where host.os.type == "windows" and event.type == "change" and
  /* not necessary but good for filtering privileged installations */
  user.domain != "NT AUTHORITY" and process.executable != null and
  (
    (
      registry.path : "HK*\\InprocServer32\\" and
      registry.data.strings: ("scrobj.dll", "?:\\*\\scrobj.dll") and
      not registry.path : "*\\{06290BD*-48AA-11D2-8432-006008C3FBFC}\\*"
    ) or

    (
      registry.path : "HKLM\\*\\InProcServer32\\*" and
        registry.data.strings : ("*\\Users\\*", "*\\ProgramData\\*")
    ) or

    /* in general COM Registry changes on Users Hive is less noisy and worth alerting */
    (
      registry.path : (
        "HKEY_USERS\\*\\InprocServer32\\",
        "HKEY_USERS\\*\\LocalServer32\\",
        "HKEY_USERS\\*\\DelegateExecute",
        "HKEY_USERS\\*\\TreatAs\\",
        "HKEY_USERS\\*\\ScriptletURL*"
      )
    )
  ) and

      not  (
            process.code_signature.trusted == true and
            process.code_signature.subject_name in
                         ("Island Technology Inc.", "Google LLC", "Grammarly, Inc.", "Dropbox, Inc", "REFINITIV US LLC", "HP Inc.",
                          "Citrix Systems, Inc.", "Adobe Inc.", "Veeam Software Group GmbH", "Zhuhai Kingsoft Office Software Co., Ltd.",
                          "Oracle America, Inc.")
        ) and

  /* excludes Microsoft signed noisy processes */
  not
  (
    process.name : ("OneDrive.exe", "OneDriveSetup.exe", "FileSyncConfig.exe", "Teams.exe", "MicrosoftEdgeUpdate.exe", "msrdcw.exe", "MicrosoftEdgeUpdateComRegisterShell64.exe") and
    process.code_signature.trusted == true and process.code_signature.subject_name in ("Microsoft Windows", "Microsoft Corporation")
  ) and

  not process.executable :
                  ("?:\\Program Files (x86)\\*.exe",
                   "?:\\Program Files\\*.exe",
                   "?:\\Windows\\System32\\svchost.exe",
                   "?:\\Windows\\System32\\msiexec.exe",
                   "?:\\Windows\\SysWOW64\\regsvr32.exe",
                   "?:\\Windows\\System32\\regsvr32.exe",
                   "?:\\Windows\\System32\\DriverStore\\FileRepository\\*.exe",
                   "?:\\ProgramData\\Microsoft\\Windows Defender\\Platform\\*\\MsMpEng.exe")

框架: MITRE ATT&CKTM