用于安全监视的审核日志架构

重要

本文已过时,将来可能不会更新。 安全监视日志目前记录在其他安全监视事件中。

诊断日志中提供了这些功能的监视工具的输出。

要访问日志:

  1. 以管理员身份查看诊断日志
  2. 根据以下部分定期查看新行的日志。

文件完整性监视的架构

有关审核日志的总体架构,请参阅诊断日志示例架构

审核对文件完整性监视很重要的日志字段:

  • serviceName:始终为 capsule8-alerts-dataplane

  • timestamp:工具创建此事件的时间。

  • workspaceId:与此事件关联的工作区。

  • requestId:原始事件的唯一 UUID。

  • requestParams:此请求参数 JSON 对象始终只有一个instanceId字段,即发出此审核日志条目的instance-id(主机的 ID)。

  • response:JSON 对象。

    • 这始终有一个statusCode属性设置为 200。

    • 包含事件原始 JSON 值的result字段。 JSON 可能因触发 JSON 的检测而异。 有关完整的架构参考,请参阅以下有关警报 JSON 架构的第三方文档文章。 JSON 值编码为单个字符串对象而不是嵌套的 JSON 值,因此需要转义的引号,如下所示:

      "response": {
        "statusCode": 200,
        "result": "{\"actionName\": \"Wget Program Blacklist\"}"
      }
      
  • accountId:此工作区的 Databricks 帐户 ID。

  • auditLevel:始终为 WORKSPACE_LEVEL

  • actionName:操作名称。 以下值之一:

    • Heartbeat:用于确认监视器已打开的常规事件。 目前每 10 分钟运行一次,但未来可能会更改。
    • Memory Marked Executable:内存通常标记为可执行文件,以便在应用程序被攻击时允许执行恶意代码。 当程序将堆或堆栈内存权限设置为可执行文件时发出警报。 这可能会导致某些应用程序服务器出现误报。
    • File Integrity Monitor:监视重要系统文件的完整性。 有关对这些文件进行任何未经授权的更改的警报。 Databricks 在映像上定义特定的系统路径集,这组路径可能会随时间而更改。
    • Systemd Unit File Modified:对系统单元的更改可能导致放松或禁用安全控制,或者安装恶意服务。 每当systemd单元文件被非systemctl的程序修改时发出警报。
    • Repeated Program Crashes:重复的程序崩溃可能表明攻击者正在尝试攻击内存损坏漏洞,或者受影响的应用程序中存在稳定性问题。 当单个程序超过 5 个实例通过分段错误崩溃时发出警报。
    • Userfaultfd Usage:某些 Linux 功能几乎只在攻击内核漏洞时使用,通常目的是特权提升。 当二进制文件执行userfaultfd系统调用时发出警报。
    • New File Executed in Container:由于容器通常是静态工作负载,此警报可能表明攻击者已入侵容器,并正在尝试安装和运行后门程序。 当在 30 分钟内创建或修改的文件之后在容器内执行时发出警报。
    • Suspicious Interactive Shell:交互式 shell 在新式生产基础结构中很少出现。 使用通常用于反向 shell 的参数启动交互式 shell 时发出警报。
    • User Command Logging Evasion:逃避命令日志记录是攻击者的常见做法,但也可能表明合法用户正在执行未经授权的操作或试图逃避策略。 检测到对用户命令历史记录日志记录的更改时发出警报,表明用户正在尝试逃避命令日志记录。
    • BPF Program Executed:检测一些类型的内核后门程序。 加载新的伯克利包过滤器 (BPF) 程序可能表明攻击者正在加载基于 BPF 的 rootkit,从而获得持久性并避免检测。 当进程加载新的特权 BPF 程序时发出警报(如果该进程已是正在进行的事件的一部分)。
    • Kernel Module Loaded:攻击者通常会加载恶意内核模块 (rootkit),从而逃避检测并在被入侵的节点上保持持久性。 如果程序已是正在进行的事件的一部分,则当加载内核模块时发出警报。
    • Suspicious Program Name Executed-Space After File:攻击者可能会创建或重命名恶意二进制文件,从而在名称末尾包含空格以模拟合法的系统程序或服务。 在程序名称后面使用空格执行程序时发出警报。
    • Illegal Elevation Of Privileges:内核特权提升攻击通常使无特权用户无需通过特权更改的标准入口即可获得根特权。 当程序尝试通过异常方式提升特权时发出警报。 这会在具有大量工作负载的节点上发出误报警报。
    • Kernel Exploit:常规程序无法访问内部内核函数,如果调用,则强烈表明已执行内核攻击,并且攻击者已完全控制节点。 当内核函数意外返回到用户空间时发出警报。
    • Processor-Level Protections Disabled:SMEP 和 SMAP 是处理器级保护,会增加内核攻击成功的难度,禁用这些限制是内核攻击中常见的早期步骤。 当程序篡改内核 SMEP/SMAP 配置时发出警报。
    • Container Escape via Kernel Exploitation:当程序使用容器转义攻击中常用的内核函数时发出警报,表明攻击者正在将特权从容器访问提升到节点访问。
    • Privileged Container Launched:特权容器可以直接访问主机资源,从而在遭到入侵时产生更大的影响。 启动特权容器时发出警报,前提是该容器不是已知的特权映像(例如 kube-proxy)。 这可能会针对合法特权容器发出不需要的警报。
    • Userland Container Escape:许多容器转义会强制主机执行容器内二进制文件,导致攻击者获得对受影响节点的完全控制。 从容器外部执行容器创建的文件时发出警报。
    • AppArmor Disabled In Kernel:某些 AppArmor 属性的修改只能在内核中发生,表明 AppArmor 已被内核攻击或 rootkit 禁用。 从传感器启动时检测到的 AppArmor 配置更改 AppArmor 状态时发出警报。
    • AppArmor Profile Modified:攻击者可能会尝试禁用 AppArmor 配置文件的强制执行,作为逃避检测的一部分。 当执行用于修改 AppArmor 配置文件的命令时发出警报,前提是用户未在 SSH 会话中执行该命令。
    • Boot Files Modified:如果受信任的源(例如,包管理器或配置管理工具 )未执行,修改启动文件可能表明攻击者正在修改内核或其选项以获取对主机的永久访问权限。 对/boot中的文件进行更改时发出警报,表明已安装新的内核或启动配置。
    • Log Files Deleted:日志管理工具未执行的日志删除可能表明攻击者正在尝试删除入侵指标。 有关删除系统日志文件的警报。
    • New File Executed:从系统更新程序以外的源新建的文件可能是后门程序、内核攻击或攻击链的一部分。 然后,执行在 30 分钟内创建或修改的文件(系统更新程序创建的文件除外)时发出警报。
    • Root Certificate Store Modified:修改根证书存储可能表明已安装恶意证书颁发机构,从而允许拦截网络流量或绕过代码签名验证。 当系统 CA 证书存储发生更改时发出警报。
    • Setuid/Setgid Bit Set On File:设置setuid/setgid位可用于为节点上的特权提升提供永久性方法。 在使用系统调用chmod系列的文件上设置setuidsetgid位时发出警报。
    • Hidden File Created:攻击者通常会创建隐藏文件,以掩盖被入侵主机上的工具和有效负载。 当与正在进行的事件关联的进程创建隐藏文件时发出警报。
    • Modification Of Common System Utilities:每当运行这些实用工具时,攻击者都可能会修改系统实用工具以执行恶意有效负载。 当未经授权的进程修改公共系统实用工具时发出警报。
    • Network Service Scanner Executed:攻击者或恶意用户可能会使用这些程序调查连接的网络,以查找要入侵的其他节点。 执行常见网络扫描程序工具时发出警报。
    • Network Service Created:攻击者可能会启动新的网络服务,从而在入侵后轻松访问主机。 当程序启动新的网络服务时发出警报(如果该程序已是正在进行的事件的一部分)。
    • Network Sniffing Program Executed:攻击者或恶意用户可能会执行网络探查命令以捕获凭据、个人身份信息 (PII) 或其他敏感信息。 当执行允许网络捕获的程序时发出警报。
    • Remote File Copy Detected:使用文件传输工具可能表明攻击者正在尝试将工具集移动到其他主机或将数据泄露到远程系统。 当执行与远程文件复制关联的程序时发出警报(如果该程序已是正在进行的事件的一部分)。
    • Unusual Outbound Connection Detected:命令和控制通道和加密币矿工通常会在异常端口上新建出站网络连接。 当程序在不常见的端口上启动新连接时发出警报(如果该程序已是正在进行的事件的一部分)。
    • Data Archived Via Program:获取对系统的访问权限后,攻击者可能会创建文件压缩存档以减小数据大小用于泄漏。 执行数据压缩程序时发出警报(如果该程序已是正在进行的事件的一部分)。
    • Process Injection:使用进程注入技术通常表明用户正在调试程序,但也可能表明攻击者正在从其他进程中读取机密或将代码注入其他进程。 当程序使用ptrace(调试)机制与其他进程交互时发出警报。
    • Account Enumeration Via Program:攻击者通常会使用帐户枚举程序以确定其访问级别,并查看其他用户当前是否已登录到节点。 当执行与帐户枚举关联的程序时发出警报(如果该程序已是正在进行的事件的一部分)。
    • File and Directory Discovery Via Program:浏览文件系统是攻击者在攻击后常见的行为,以查找所需的凭据和数据。 当执行与文件和目录枚举关联的程序时发出警报(如果该程序已是正在进行的事件的一部分)。
    • Network Configuration Enumeration Via Program:攻击者可以询问本地网络并路由信息,从而在横向移动前确定相邻主机和网络。 当执行与网络配置枚举关联的程序时发出警报(如果该程序已是正在进行的事件的一部分)。
    • Process Enumeration Via Program:攻击者通常会列出正在运行的程序,从而确定节点的用途以及是否有任何安全或监视工具。 当执行与进程枚举关联的程序时发出警报(如果该程序已是正在进行的事件的一部分)。
    • System Information Enumeration Via Program:攻击者通常执行系统枚举命令以确定 Linux 内核和发行版本和功能,通常用于确定节点是否受特定漏洞的影响。 当执行与系统信息枚举关联的程序时发出警报(如果该程序已是正在进行的事件的一部分)。
    • Scheduled Tasks Modified Via Program:修改计划任务是在被入侵的节点上建立持久性的常用方法。 使用crontabatbatch命令修改计划的任务配置时发出警报。
    • Systemctl Usage Detected:对系统单元的更改可能导致放松或禁用安全控制,或者安装恶意服务。 当systemctl命令用于修改系统单元时发出警报。
    • User Execution Of su Command:显式升级到根用户会降低将特权活动关联到特定用户的能力。 执行su命令时发出警报。
    • User Execution Of sudo Command:执行sudo命令时发出警报。
    • User Command History Cleared:删除历史记录文件并不常见,通常由隐藏活动的攻击者或打算逃避审核控制的合法用户执行。 删除命令行历史记录文件时发出警报。
    • New System User Added:攻击者可能会向主机新增用户,从而提供可靠的访问方法。 向本地帐户管理文件/etc/passwd添加新用户实体时发出警报(如果系统更新程序未添加该实体)。
    • Password Database Modification:攻击者可以直接修改与标识相关的文件,从而将新用户添加到系统。 当与用户密码相关的文件由与更新现有用户信息无关的程序修改时发出警报。
    • SSH Authorized Keys Modification:添加新的 SSH 公钥是获取对被攻击主机的持久访问权限的常用方法。 如果程序已是正在进行的事件的一部分,则在观察到尝试写入用户的 SSH authorized_keys 文件时发出警报。
    • User Account Created Via CLI:在被攻击节点上建立持久性时,攻击者通常会执行添加新用户的步骤。 当标识管理程序由包管理器以外的程序执行时发出警报。
    • User Configuration Changes:用户配置文件和配置文件通常作为持久性方法进行修改,以便每当用户登录时执行程序。 当 .bash_profile 和 bashrc(以及相关文件)由系统更新工具以外的程序修改时发出警报。

下面是示例文件完整性监视审核日志条目:

{
  "version": "2.0",
  "timestamp": 1625959170109,
  "workspaceId": "2417130538620110",
  "serviceName": "capsule8-alerts-dataplane",
  "actionName": "Wget Program Blacklist",
  "requestId": "318a87db-4cfe-4532-9110-09edc262275e",
  "requestParams": {
    "instanceId": "i-0a3c9d63bb295eb4f"
  },
  "response": {
    "statusCode": 200,
    "result": "<original-alert-json>"
  },
  "accountId": "82d65820-b5e4-4ab0-96e6-0cba825a5687",
  "auditLevel": "WORKSPACE_LEVEL"
}

防病毒监视的架构

有关审核日志的总体架构,请参阅诊断日志示例架构

审核对防病毒监视很重要的日志字段:

  • serviceName:始终为 clamAVScanService-dataplane
  • actionName:始终为 clamAVScanAction
  • timestamp:工具生成此日志行的时间。
  • workspaceId:与此日志关联的工作区 ID。
  • requestId:原始扫描事件的唯一 UUID。
  • requestParams:此请求参数 JSON 对象始终只有一个instanceId字段,即发出此审核日志条目的instance-id(主机的 ID)。
  • response:这是响应 JSON 对象,其statusCode始终为 200,且result字段包含一行原始扫描结果。 每个扫描结果通常由多个审核日志记录表示,每个审核日志记录对应原始扫描输出的每一行。 有关此文件中可能出现的内容的详细信息,请参阅以下 第三方文档
  • accountId:与此日志关联的 Databricks 帐户 ID。
  • auditLevel:始终为 WORKSPACE_LEVEL

下面是示例防病毒审核日志条目,该条目在response.result字段中显示了扫描开始:

{
  "version": "2.0",
  "timestamp": 1625959170109,
  "workspaceId": "2417130538620110",
  "serviceName": "clamAVScanService-dataplane",
  "actionName": "clamAVScanAction",
  "requestId": "318a87db-4cfe-4532-9110-09edc262275e",
  "requestParams": {
    "instanceId": "i-0a3c9d63bb295eb4f"
  },
  "response": {
    "statusCode": 200,
    "result": "begin daily clamav scan : Mon Oct 25 06:25:01 UTC 2021\\n"
  },
  "accountId": "82d65820-b5e4-4ab0-96e6-0cba825a5687",
  "auditLevel": "WORKSPACE_LEVEL"
}

示例防病毒日志文件:

----------- SCAN SUMMARY -----------
Known viruses: 8556227
Engine version: 0.103.2
Scanned directories: 6
Scanned files: 446
Infected files: 0
Data scanned: 74.50 MB
Data read: 164.43 MB (ratio 0.45:1)
Time: 37.874 sec (0 m 37 s)
Start Date: 2021:07:27 21:47:36
End Date:   2021:07:27 21:48:14

系统日志的架构

有关审核日志的总体架构,请参阅诊断日志示例架构

审核对系统日志很重要的日志字段:

  • serviceName:始终为 syslog
  • actionName:始终为 processEvent
  • timestamp:系统日志生成此日志行的时间。
  • workspaceId:与此日志关联的工作区 ID。
  • requestId:原始系统日志事件的唯一 UUID。
  • requestParams:此请求参数 JSON 对象具有以下键:
    • instanceId:发出此审核日志条目的 instance-id(主机的 ID)。
    • processName:生成此事件的内部进程的名称。 此字段适用于高级诊断,其内容可能会更改。
  • response:JSON 对象,其statusCode为 200,且result字段包含原始系统日志内容。
  • accountId:与此日志关联的 Databricks 帐户 ID。
  • auditLevel:始终为 WORKSPACE_LEVEL

系统日志的示例事件:

{
    "version":"2.0",
    "timestamp":1633220481000,
    "workspaceId":"2417130538620110",
    "sessionId":"2710",
    "serviceName":"syslog",
    "actionName":"processEvent",
    "requestId":"1054f4c8-741d-3d80-b168-ca2cb891aa7a",
    "requestParams":{
        "instanceId": "i-00edf5b73b4c68221",
        "processName": "<process-name>"
    },
    "response":{
        "statusCode":200,
        "result":"<syslog content>"
    },
    "accountId":"82d65820-b5e4-4ab0-96e6-0cba825a5687",
    "auditLevel":"WORKSPACE_LEVEL"
}

进程监视器的架构

有关审核日志的总体架构,请参阅诊断日志示例架构

审核对进程监视器日志很重要的日志字段:

  • serviceName:始终为 monit
  • actionName:以下情况之一:processNotRunning(监视器正在运行),processRestarting(监视器正在重启),processStarted(监视器已启动),或者processRunning(监视器正在运行)。
  • timestamp:监视日志生成此日志行的时间。
  • workspaceId:与此日志关联的工作区 ID。
  • requestId:原始系统日志事件的唯一 UUID。
  • requestParams:此请求参数 JSON 对象具有以下键:
    • instanceId:发出此审核日志条目的 instance-id(主机的 ID)。
    • processName:正在监视的内部进程的名称。 此字段适用于高级诊断,其内容可能会更改。
  • response:JSON 对象,其statusCode为 200。
  • accountId:与此日志关联的 Databricks 帐户 ID。
  • auditLevel:始终为 WORKSPACE_LEVEL

进程监视器日志的示例事件:

{
    "version":"2.0",
    "timestamp":1626857554000,
    "workspaceId":"2417130538620110",
    "serviceName":"monit",
    "actionName":"processRestarting",
    "requestId":"48bb4060-7685-3a19-9dbb-f83d2afaf346",
    "requestParams":{
        "instanceId":"i-0c48619b79d4056f2",
        "processName":"<process-name>"
    },
    "response":{
        "statusCode":200
    },
    "accountId":"82d65820-b5e4-4ab0-96e6-0cba825a5687",
    "auditLevel":"WORKSPACE_LEVEL"
}