多次登录失败后成功登录编辑

识别来自同一源地址的多次登录失败,随后成功登录。攻击者通常会使用常见或已知密码对多个用户进行暴力登录尝试,以试图访问帐户。

规则类型: eql

规则索引:

  • winlogbeat-*
  • logs-system.security*
  • logs-windows.forwarded*

严重性: 中等

风险评分: 47

运行频率: 5m

从以下时间开始搜索索引: now-9m (日期数学格式,另请参见 附加回溯时间)

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

参考:

标签:

  • 域:端点
  • 操作系统:Windows
  • 用例:威胁检测
  • 策略:凭据访问
  • 资源:调查指南

版本: 10

规则作者:

  • Elastic

规则许可证: Elastic 许可证 v2

调查指南编辑

分类和分析

调查登录失败后紧跟着登录成功

在系统或环境中事先不知道合法凭据的攻击者可能会猜测密码以尝试访问帐户。如果不知道某个帐户的密码,攻击者可能会选择使用重复或迭代机制系统地猜测密码。更多详细信息请参见此处

此规则可识别来自单个地址的潜在密码猜测/暴力破解活动,然后是成功的登录,表明攻击者可能成功入侵了该帐户。

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

可能的调查步骤

  • 调查登录失败原因代码和目标用户名。
  • 如果该帐户很关键或对域具有管理权限,请优先进行调查。
  • 调查失败的网络登录尝试的源 IP 地址。
  • 识别这些尝试是来自互联网还是内部。
  • 调查在过去 48 小时内与所涉及用户和源主机关联的其他警报。
  • 识别源计算机和目标计算机及其在 IT 环境中的角色。
  • 检查所涉及的凭据是否用于自动化或计划任务。
  • 如果此活动可疑,请联系帐户所有者并确认他们是否知情。
  • 检查源主机以获取表明入侵的派生工件
  • 观察并收集警报源主机中以下活动的详细信息
  • 尝试联系外部域和地址。
  • 检查 DNS 缓存是否有可疑或异常的条目。
  • !{osquery{"label":"Osquery - 检索 DNS 缓存","query":"SELECT * FROM dns_cache"}}
  • 检查主机服务是否有可疑或异常的条目。
  • !{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"}}
  • 调查潜在的受损帐户。分析师可以通过搜索登录事件(例如,4624)来执行此操作,该事件针对的是此活动源自的主机。

误报分析

  • 身份验证错误配置或过时的凭据。
  • 服务帐户密码已过期。
  • 域信任关系问题。
  • 基础设施或可用性问题。

相关规则

  • 来自同一源地址的多次登录失败 - 48b6edfc-079d-4907-b43c-baffa243270d

响应和补救

  • 根据分类结果启动事件响应流程。
  • 隔离源主机以防止进一步的受损后行为。
  • 如果资产通过 RDP 或其他可用的远程服务暴露在互联网上,请采取必要的措施来限制对该资产的访问。如果不可行,请通过防火墙将访问限制为仅需要的 IP 地址。此外,确保系统使用可靠的身份验证机制并定期修补。
  • 调查攻击者受损或使用的系统上的凭据泄露,以确保识别出所有受损帐户。重置这些帐户和其他可能受损的凭据(如电子邮件、业务系统和 Web 服务)的密码。
  • 运行完整的反恶意软件扫描。这可能会揭示系统中留下的其他工件、持久性机制和恶意软件组件。
  • 确定攻击者滥用的初始向量,并采取措施防止通过同一向量重新感染。
  • 使用事件响应数据,更新日志记录和审计策略以提高平均检测时间 (MTTD) 和平均响应时间 (MTTR)。

设置编辑

设置

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

规则查询编辑

sequence by winlog.computer_name, source.ip with maxspan=5s
  [authentication where event.action == "logon-failed" and
    /* event 4625 need to be logged */
    winlog.logon.type : "Network" and user.id != null and
    source.ip != null and source.ip != "127.0.0.1" and source.ip != "::1" and
    not winlog.event_data.TargetUserSid : "S-1-0-0" and not user.id : "S-1-0-0" and
    not user.name : ("ANONYMOUS LOGON", "-", "*$") and not user.domain == "NT AUTHORITY" and

    /* noisy failure status codes often associated to authentication misconfiguration */
    not winlog.event_data.Status : ("0xC000015B", "0XC000005E", "0XC0000133", "0XC0000192")] with runs=5
  [authentication where event.action == "logged-in" and
    /* event 4624 need to be logged */
    winlog.logon.type : "Network" and
    source.ip != null and source.ip != "127.0.0.1" and source.ip != "::1" and
    not user.name : ("ANONYMOUS LOGON", "-", "*$") and not user.domain == "NT AUTHORITY"]

框架: MITRE ATT&CKTM