启动或运行键注册表修改

编辑

识别运行键或启动键注册表修改。为了在重启和其他系统中断后继续存在,攻击者会修改注册表中的运行键,或利用启动文件夹项作为一种持久性机制。

规则类型: eql

规则索引:

  • logs-endpoint.events.registry-*

严重性: 低

风险评分: 21

每隔: 5 分钟

搜索索引自: now-9m (日期数学格式,另见 额外回溯时间)

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

参考资料:

标签:

  • 领域:端点
  • 操作系统:Windows
  • 用例:威胁检测
  • 战术:持久性
  • 资源:调查指南
  • 数据源:Elastic Endgame
  • 数据源:Elastic Defend

版本: 113

规则作者:

  • Elastic

规则许可证: Elastic License v2

调查指南

编辑

分类和分析

调查启动或运行键注册表修改

攻击者可以通过引用带有注册表运行键的程序来实现持久性。向注册表中的运行键添加条目将导致在用户登录时执行引用的程序。这些程序将在用户的上下文中执行,并具有帐户的权限。此规则通过监控一系列注册表运行键来查找此行为。

注意: 此调查指南使用 Elastic Stack 8.5.0 版中引入的 Osquery Markdown 插件。较旧的 Elastic Stack 版本将在此指南中显示未渲染的 Markdown。

可能的调查步骤

  • 调查未知进程的进程执行链(父进程树)。检查其可执行文件是否存在、它们是否位于预期位置以及它们是否使用有效的数字签名进行签名。
  • 调查过去 48 小时内与用户/主机关联的其他警报。
  • 验证活动是否与计划的补丁、更新、网络管理员活动或合法软件安装无关。
  • 通过查找主机间的类似事件来评估此行为在环境中的普遍性。
  • 检查主机中指示可疑活动的衍生工件
  • 使用私有沙箱分析系统分析进程可执行文件。
  • 观察和收集有关沙箱和警报主题主机中以下活动的信息
  • 尝试联系外部域和地址。
  • 使用 Elastic Defend 网络事件,通过按进程的 process.entity_id 过滤来确定受影响进程联系的域和地址。
  • 检查 DNS 缓存中是否存在可疑或异常条目。
  • !{osquery{"label":"Osquery - 获取 DNS 缓存","query":"SELECT * FROM dns_cache"}}
  • 使用 Elastic Defend 注册表事件检查进程树中相关进程访问、修改或创建的注册表键。
  • 检查主机服务中是否存在可疑或异常条目。
  • !{osquery{"label":"Osquery - 获取所有服务","query":"SELECT description, display_name, name, path, pid, service_type, start_type, status, user_account FROM services"}}
  • !{osquery{"label":"Osquery - 获取在用户帐户上运行的服务","query":"SELECT description, display_name, name, path, pid, service_type, start_type, status, user_account FROM services WHERE\nNOT (user_account LIKE %LocalSystem OR user_account LIKE %LocalService OR user_account LIKE %NetworkService OR\nuser_account == null)\n"}}
  • !{osquery{"label":"Osquery - 获取带有 VirusTotal 链接的未签名可执行服务","query":"SELECT concat(https://www.virustotal.com/gui/file/, sha1) AS VtLink, name, description, start_type, status, pid,\nservices.path FROM services JOIN authenticode ON services.path = authenticode.path OR services.module_path =\nauthenticode.path JOIN hash ON services.path = hash.path WHERE authenticode.result != trusted\n"}}
  • 使用 PowerShell Get-FileHash cmdlet 获取文件的 SHA-256 哈希值,并在 VirusTotal、Hybrid-Analysis、CISCO Talos、Any.run 等资源中搜索哈希的存在性和信誉。
  • 调查可能受感染的帐户。分析人员可以通过搜索注册表修改后对目标主机的登录事件(例如,4624)来做到这一点。

误报分析

  • 很有可能将良性合法程序添加到注册表运行键中。此活动可能是基于新的软件安装、补丁或任何类型的网络管理员相关活动。在进行进一步调查之前,请验证此活动是否为良性。

相关规则

  • 可疑启动 Shell 文件夹修改 - c8b150f0-0164-475b-a75e-74b47800a9ff
  • 启动目录中的持久脚本 - f7c4dc5a-a58d-491d-9f14-9b66507121c0
  • 通过未签名进程实现启动文件夹持久性 - 2fba96c0-ade5-4bce-b92f-a5df2509da3f
  • 可疑进程的启动持久性 - 440e2db4-bc7f-4c96-a068-65b78da59bde

响应和补救

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

规则查询

编辑
registry where host.os.type == "windows" and event.type == "change" and
 registry.data.strings != null and registry.hive : ("HKEY_USERS", "HKLM") and
 registry.path : (
     /* Machine Hive */
     "HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\\*",
     "HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce\\*",
     "HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\RunOnceEx\\*",
     "HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\Run\\*",
     "HKLM\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon\\Shell\\*",
     /* Users Hive */
     "HKEY_USERS\\*\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\\*",
     "HKEY_USERS\\*\\Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce\\*",
     "HKEY_USERS\\*\\Software\\Microsoft\\Windows\\CurrentVersion\\RunOnceEx\\*",
     "HKEY_USERS\\*\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\Run\\*",
     "HKEY_USERS\\*\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon\\Shell\\*"
     ) and
  /* add common legitimate changes without being too restrictive as this is one of the most abused AESPs */
  not registry.data.strings : "ctfmon.exe /n" and
  not (registry.value : "Application Restart #*" and process.name : "csrss.exe") and
  not user.id : ("S-1-5-18", "S-1-5-19", "S-1-5-20") and
  not registry.data.strings : ("?:\\Program Files\\*.exe", "?:\\Program Files (x86)\\*.exe") and
  not process.executable : ("?:\\Windows\\System32\\msiexec.exe", "?:\\Windows\\SysWOW64\\msiexec.exe") and
  not (
    /* Logitech G Hub */
    (
      process.code_signature.trusted == true and process.code_signature.subject_name == "Logitech Inc" and
      (
        process.name : "lghub_agent.exe" and registry.data.strings : (
          "\"?:\\Program Files\\LGHUB\\lghub.exe\" --background",
          "\"?:\\Program Files\\LGHUB\\system_tray\\lghub_system_tray.exe\" --minimized"
        )
      ) or
      (
        process.name : "LogiBolt.exe" and registry.data.strings : (
          "?:\\Program Files\\Logi\\LogiBolt\\LogiBolt.exe --startup",
          "?:\\Users\\*\\AppData\\Local\\Logi\\LogiBolt\\LogiBolt.exe --startup"
        )
      )
    ) or

    /* Google Drive File Stream, Chrome, and Google Update */
    (
      process.code_signature.trusted == true and process.code_signature.subject_name == "Google LLC" and
      (
        process.name : "GoogleDriveFS.exe" and registry.data.strings : (
        "\"?:\\Program Files\\Google\\Drive File Stream\\*\\GoogleDriveFS.exe\" --startup_mode"
        ) or

        process.name : "chrome.exe" and registry.data.strings : (
          "\"?:\\Program Files\\Google\\Chrome\\Application\\chrome.exe\" --no-startup-window /prefetch:5",
          "\"?:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe\" --no-startup-window /prefetch:5"
        ) or

        process.name : "GoogleUpdate.exe" and registry.data.strings : (
          "\"?:\\Users\\*\\AppData\\Local\\Google\\Update\\*\\GoogleUpdateCore.exe\""
        )
      )
    ) or

    /* MS Programs */
    (
      process.code_signature.trusted == true and process.code_signature.subject_name in ("Microsoft Windows", "Microsoft Corporation") and
      (
        process.name : "msedge.exe" and registry.data.strings : (
          "\"?:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe\" --no-startup-window --win-session-start /prefetch:5",
          "\"C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe\" --win-session-start",
          "\"C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe\" --no-startup-window --win-session-start"
        ) or

        process.name : ("Update.exe", "Teams.exe") and registry.data.strings : (
          "?:\\Users\\*\\AppData\\Local\\Microsoft\\Teams\\Update.exe --processStart \"Teams.exe\" --process-start-args \"--system-initiated\"",
          "?:\\ProgramData\\*\\Microsoft\\Teams\\Update.exe --processStart \"Teams.exe\" --process-start-args \"--system-initiated\""
        ) or

        process.name : "OneDriveStandaloneUpdater.exe" and registry.data.strings : (
          "?:\\Users\\*\\AppData\\Local\\Microsoft\\OneDrive\\*\\Microsoft.SharePoint.exe"
        ) or

        process.name : "OneDriveSetup.exe" and
          registry.data.strings : (
            "?:\\Windows\\system32\\cmd.exe /q /c * \"?:\\Users\\*\\AppData\\Local\\Microsoft\\OneDrive\\*\"",
            "?:\\Program Files (x86)\\Microsoft OneDrive\\OneDrive.exe /background*",
            "\"?:\\Program Files (x86)\\Microsoft OneDrive\\OneDrive.exe\" /background*",
            "?:\\Program Files\\Microsoft OneDrive\\OneDrive.exe /background *",
            "?:\\Users\\*\\AppData\\Local\\Microsoft\\OneDrive\\??.???.????.????\\Microsoft.SharePoint.exe"
          ) or

        process.name : "OneDrive.exe" and registry.data.strings : (
          "\"?:\\Program Files\\Microsoft OneDrive\\OneDrive.exe\" /background",
          "\"?:\\Program Files (x86)\\Microsoft OneDrive\\OneDrive.exe\" /background",
          "\"?:\\Users\\*\\AppData\\Local\\Microsoft\\OneDrive\\OneDrive.exe\" /background"
        ) or

        process.name : "Microsoft.SharePoint.exe" and registry.data.strings : (
          "?:\\Users\\*\\AppData\\Local\\Microsoft\\OneDrive\\??.???.????.????\\Microsoft.SharePoint.exe"
        ) or

        process.name : "MicrosoftEdgeUpdate.exe" and registry.data.strings : (
          "\"?:\\Users\\Expedient\\AppData\\Local\\Microsoft\\EdgeUpdate\\*\\MicrosoftEdgeUpdateCore.exe\""
        ) or

        process.executable : "?:\\Program Files (x86)\\Microsoft\\EdgeWebView\\Application\\*\\Installer\\setup.exe" and
        registry.data.strings : (
          "\"?:\\Program Files (x86)\\Microsoft\\EdgeWebView\\Application\\*\\Installer\\setup.exe\" --msedgewebview --delete-old-versions --system-level --verbose-logging --on-logon"
        )
      )
    ) or

    /* Slack */
    (
      process.code_signature.trusted == true and process.code_signature.subject_name in (
       "Slack Technologies, Inc.", "Slack Technologies, LLC"
      ) and process.name : "slack.exe" and registry.data.strings : (
        "\"?:\\Users\\*\\AppData\\Local\\slack\\slack.exe\" --process-start-args --startup",
        "\"?:\\ProgramData\\*\\slack\\slack.exe\" --process-start-args --startup",
        "\"?:\\Program Files\\Slack\\slack.exe\" --process-start-args --startup"
      )
    ) or

    /* Cisco */
    (
      process.code_signature.trusted == true and process.code_signature.subject_name in ("Cisco WebEx LLC", "Cisco Systems, Inc.") and
      (
        process.name : "WebexHost.exe" and registry.data.strings : (
          "\"?:\\Users\\*\\AppData\\Local\\WebEx\\WebexHost.exe\" /daemon /runFrom=autorun"
        )
      ) or
      (
        process.name : "CiscoJabber.exe" and registry.data.strings : (
          "\"?:\\Program Files (x86)\\Cisco Systems\\Cisco Jabber\\CiscoJabber.exe\" /min"
        )
      )
    ) or

    /* Loom */
    (
      process.code_signature.trusted == true and process.code_signature.subject_name == "Loom, Inc." and
      process.name : "Loom.exe" and registry.data.strings : (
        "?:\\Users\\*\\AppData\\Local\\Programs\\Loom\\Loom.exe --process-start-args \"--loomHidden\""
      )
    ) or

    /* Adobe */
    (
      process.code_signature.trusted == true and process.code_signature.subject_name == "Adobe Inc." and
      process.name : ("Acrobat.exe", "FlashUtil32_*_Plugin.exe") and registry.data.strings : (
        "\"?:\\Program Files\\Adobe\\Acrobat DC\\Acrobat\\AdobeCollabSync.exe\"",
        "\"?:\\Program Files (x86)\\Adobe\\Acrobat DC\\Acrobat\\AdobeCollabSync.exe\"",
        "?:\\WINDOWS\\SysWOW64\\Macromed\\Flash\\FlashUtil32_*_Plugin.exe -update plugin"
      )
    ) or

    /* CCleaner */
    (
      process.code_signature.trusted == true and process.code_signature.subject_name == "PIRIFORM SOFTWARE LIMITED" and
      process.name : ("CCleanerBrowser.exe", "CCleaner64.exe") and registry.data.strings : (
        "\"C:\\Program Files (x86)\\CCleaner Browser\\Application\\CCleanerBrowser.exe\" --check-run=src=logon --auto-launch-at-startup --profile-directory=\"Default\"",
        "\"C:\\Program Files\\CCleaner\\CCleaner64.exe\" /MONITOR"
      )
    ) or

    /* Opera */
    (
      process.code_signature.trusted == true and process.code_signature.subject_name == "Opera Norway AS" and
      process.name : "opera.exe" and registry.data.strings : (
        "?:\\Users\\*\\AppData\\Local\\Programs\\Opera\\launcher.exe",
        "?:\\Users\\*\\AppData\\Local\\Programs\\Opera GX\\launcher.exe"
      )
    ) or

    /* Avast */
    (
      process.code_signature.trusted == true and process.code_signature.subject_name == "Avast Software s.r.o." and
      process.name : "AvastBrowser.exe" and registry.data.strings : (
        "\"?:\\Users\\*\\AppData\\Local\\AVAST Software\\Browser\\Application\\AvastBrowser.exe\" --check-run=src=logon --auto-launch-at-startup*",
        "\"?:\\Program Files (x86)\\AVAST Software\\Browser\\Application\\AvastBrowser.exe\" --check-run=src=logon --auto-launch-at-startup*",
        ""
      )
    ) or

    /* Grammarly */
    (
      process.code_signature.trusted == true and process.code_signature.subject_name == "Grammarly, Inc." and
      process.name : "GrammarlyInstaller.exe" and registry.data.strings : (
        "?:\\Users\\*\\AppData\\Local\\Grammarly\\DesktopIntegrations\\Grammarly.Desktop.exe"
      )
    )
  )

框架: MITRE ATT&CKTM