多次登录失败后成功登录

编辑

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

规则类型: eql

规则索引:

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

严重性: 中

风险评分: 47

运行频率: 5 分钟

搜索索引时间范围: now-9m (日期数学格式,另请参阅 额外的回溯时间)

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

参考资料:

标签:

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

版本: 111

规则作者:

  • Elastic

规则许可证: Elastic License v2

调查指南

编辑

分类和分析

调查多次登录失败后成功登录

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

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

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

可能的调查步骤

  • 调查登录失败原因代码和目标用户名。
  • 如果该帐户至关重要或对域具有管理权限,请优先进行调查。
  • 调查失败的网络登录尝试的源 IP 地址。
  • 确定这些尝试是来自 Internet 还是内部网络。
  • 调查过去 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 或其他可用的远程服务暴露在 Internet 上,请采取必要措施来限制对资产的访问。如果不可能,请通过防火墙将访问限制为仅所需的 IP 地址。此外,请确保系统使用强大的身份验证机制并定期修补。
  • 调查受攻击者入侵或使用的系统上的凭据暴露情况,以确保识别所有受损帐户。重置这些帐户以及其他可能受损的凭据(如电子邮件、业务系统和 Web 服务)的密码。
  • 运行全面的反恶意软件扫描。这可能会揭示系统中遗留的其他工件、持久性机制和恶意软件组件。
  • 确定攻击者滥用的初始向量,并采取措施防止通过相同向量再次感染。
  • 使用事件响应数据,更新日志记录和审核策略,以提高平均检测时间 (MTTD) 和平均响应时间 (MTTR)。

设置

编辑

设置

如果在版本 <8.2 的非 elastic-agent 索引(例如 beats)上启用 EQL 规则,则事件将不定义 event.ingested,并且 EQL 规则的默认回退直到版本 8.2 才添加。因此,要使此规则有效工作,用户需要添加自定义摄取管道以将 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