New

The executive guide to generative AI

Read more

通过 Linux 二进制文件绕过 Linux 受限 Shell

编辑

通过 Linux 二进制文件绕过 Linux 受限 Shell

编辑

识别通过生成交互式系统 shell 来滥用 Linux 二进制文件,从而绕过受限 shell 或环境的行为。从二进制文件生成 shell 的活动对于用户或系统管理员来说不是常见的行为,可能表明有人试图逃避检测、增强能力或提高攻击者的稳定性。

规则类型: eql

规则索引:

  • logs-endpoint.events.*

严重性: 中

风险评分: 47

运行频率: 5 分钟

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

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

参考:

标签:

  • 域: 端点
  • 操作系统: Linux
  • 用例: 威胁检测
  • 策略: 执行
  • 数据源: Elastic Endgame
  • 数据源: Elastic Defend

版本: 113

规则作者:

  • Elastic

规则许可: Elastic License v2

调查指南

编辑

分类和分析

调查通过 Linux 实用程序进行的 Shell 规避

此规则的检测警报表明,Linux 实用程序已被滥用,通过生成交互式系统 shell 来绕过受限 shell 或环境。以下是一些可能的调查途径:- 通过“分析视图”检查主机和用户的入口点。- 识别会话入口领导者和会话用户 - 通过“会话视图”检查导致滥用的会话内容。- 检查会话中的命令执行模式,这可能导致可疑活动 - 检查在生成的 shell 中执行的命令。- 从执行的命令中识别对系统的迫在眉睫的威胁 - 采取必要的事件响应措施,以控制通过此执行造成的任何恶意行为。

相关规则

  • 恶意生成的 shell 可以执行任何可能的 MITRE ATT&CK 向量,主要是为了损害防御能力。
  • 因此,建议在您的环境中相应地启用防御规避和权限提升规则

响应和补救

根据分类结果启动事件响应过程。

  • 如果分类显示来自恶意生成的 shell 的可疑网络活动,
  • 隔离相关主机以防止进一步的入侵后行为。
  • 如果分类通过恶意生成的 shell 识别出恶意软件执行,
  • 在环境中搜索其他受感染的主机。
  • 实施临时网络规则、程序和分段以遏制恶意软件。
  • 停止可疑进程。
  • 立即阻止已识别的入侵指标 (IoC)。
  • 检查受影响的系统是否存在其他恶意软件后门,例如反向 shell、反向代理或攻击者可能用来重新感染系统的投放器。
  • 如果分类显示损害防御的防御规避,
  • 隔离相关主机以防止进一步的入侵后行为。
  • 识别主机上禁用的安全防护组件,并采取必要步骤重新启用它们。
  • 如果任何工具被禁用/卸载或配置被篡改,请努力重新启用它们。
  • 如果分类显示添加了持久性机制漏洞(例如自动启动脚本),
  • 隔离进一步登录到可以初始化自动启动脚本的系统。
  • 识别自动启动脚本,并禁用并从系统中删除它们
  • 如果分类显示通过远程复制进行的数据爬取或数据导出,
  • 调查在数据爬取期间受损/使用/被攻击者解码的系统上的凭据泄露
  • 为所有暴露的凭据启动受损凭据停用和凭据轮换过程。
  • 调查在数据爬取期间是否访问了任何 IPR 数据,并采取适当的措施。
  • 确定攻击者滥用的初始向量,并采取措施防止通过相同向量重新感染。
  • 使用事件响应数据,更新日志记录和审计策略,以提高检测的平均时间 (MTTD) 和响应的平均时间 (MTTR)。

设置

编辑

设置

此规则需要来自 Elastic Defend 的数据。

Elastic Defend 集成设置

Elastic Defend 使用 Fleet 集成到 Elastic Agent 中。配置后,该集成允许 Elastic Agent 监视主机上的事件并将数据发送到 Elastic Security 应用程序。

先决条件

  • Elastic Defend 需要 Fleet。
  • 要配置 Fleet Server,请参阅文档

应执行以下步骤,以便在 Linux 系统上添加 Elastic Defend 集成

  • 转到 Kibana 主页,然后单击“添加集成”。
  • 在查询栏中,搜索“Elastic Defend”,然后选择集成以查看有关它的更多详细信息。
  • 单击“添加 Elastic Defend”。
  • 配置集成名称,并可选择添加描述。
  • 选择您要保护的环境类型,即“传统端点”或“云工作负载”。
  • 选择配置预设。每个预设都带有 Elastic Agent 的不同默认设置,您可以通过配置 Elastic Defend 集成策略稍后进一步自定义这些设置。帮助指南
  • 我们建议选择“完整 EDR(端点检测和响应)”作为配置设置,它提供“所有事件;所有预防措施”
  • 在“新代理策略名称”中输入代理策略的名称。如果已经存在其他代理策略,则可以单击“现有主机”选项卡并选择现有策略。有关 Elastic Agent 配置设置的更多详细信息,请参阅帮助指南
  • 单击“保存并继续”。
  • 要完成集成,请选择“将 Elastic Agent 添加到您的主机”,然后继续下一部分以在您的主机上安装 Elastic Agent。有关 Elastic Defend 的更多详细信息,请参阅帮助指南

“会话视图”使用 Elastic Defend 集成收集的进程数据,但默认情况下并不总是收集此数据。“会话视图”适用于 8.3 及更高版本的企业订阅。

要确认已启用“会话视图”数据

  • 转到“管理 → 策略”,然后编辑一个或多个 Elastic Defend 集成策略。
  • 选择“策略设置”选项卡,然后向下滚动到靠近底部的“Linux 事件收集”部分。
  • 选中“进程事件”的框,然后打开“包括会话数据”切换开关。
  • 如果要将文件和网络警报包含在“会话视图”中,请选中“网络和文件事件”的框。
  • 如果要启用终端输出捕获,请打开“捕获终端输出”切换开关。有关启用此设置时收集的其他字段以及“会话视图”用于分析的更多信息,请参阅帮助指南

规则查询

编辑
process where host.os.type == "linux" and event.type == "start" and
(
  /* launching shell from capsh */
  (process.name == "capsh" and process.args == "--") or

  /* launching shells from unusual parents or parent+arg combos */
  (process.name in ("bash", "dash", "ash", "sh", "tcsh", "csh", "zsh", "ksh", "fish") and (
    (process.parent.name : "*awk" and process.parent.args : "BEGIN {system(*)}") or
    (process.parent.name == "git" and process.parent.args : ("*PAGER*", "!*sh", "exec *sh") or
     process.args : ("*PAGER*", "!*sh", "exec *sh") and not process.name == "ssh" ) or
    (process.parent.name : ("byebug", "ftp", "strace", "zip", "tar") and
    (
      process.parent.args : "BEGIN {system(*)}" or
      (process.parent.args : ("*PAGER*", "!*sh", "exec *sh") or process.args : ("*PAGER*", "!*sh", "exec *sh")) or
      (
        (process.parent.args : "exec=*sh" or (process.parent.args : "-I" and process.parent.args : "*sh")) or
        (process.args : "exec=*sh" or (process.args : "-I" and process.args : "*sh"))
        )
      )
    ) or

    /* shells specified in parent args */
    /* nice rule is broken in 8.2 */
    (process.parent.args : "*sh" and
      (
        (process.parent.name == "nice") or
        (process.parent.name == "cpulimit" and process.parent.args == "-f") or
        (process.parent.name == "find" and process.parent.args == "." and process.parent.args == "-exec" and
         process.parent.args == ";" and process.parent.args : "/bin/*sh") or
        (process.parent.name == "flock" and process.parent.args == "-u" and process.parent.args == "/")
      )
    )
  )) or

  /* shells specified in args */
  (process.args : "*sh" and (
    (process.parent.name == "crash" and process.parent.args == "-h") or
    (process.name == "sensible-pager" and process.parent.name in ("apt", "apt-get") and process.parent.args == "changelog")
    /* scope to include more sensible-pager invoked shells with different parent process to reduce noise and remove false positives */

  )) or
  (process.name == "busybox" and event.action == "exec" and process.args_count == 2 and process.args : "*sh" and not
   process.executable : "/var/lib/docker/overlay2/*/merged/bin/busybox" and not (process.parent.args == "init" and
   process.parent.args == "runc") and not process.parent.args in ("ls-remote", "push", "fetch") and not process.parent.name == "mkinitramfs") or
  (process.name == "env" and process.args_count == 2 and process.args : "*sh") or
  (process.parent.name in ("vi", "vim") and process.parent.args == "-c" and process.parent.args : ":!*sh") or
  (process.parent.name in ("c89", "c99", "gcc") and process.parent.args : "*sh,-s" and process.parent.args == "-wrapper") or
  (process.parent.name == "expect" and process.parent.args == "-c" and process.parent.args : "spawn *sh;interact") or
  (process.parent.name == "mysql" and process.parent.args == "-e" and process.parent.args : "\\!*sh") or
  (process.parent.name == "ssh" and process.parent.args == "-o" and process.parent.args : "ProxyCommand=;*sh 0<&2 1>&2")
)

框架: MITRE ATT&CKTM

Was this helpful?
Feedback