本文补上一些上篇未提到的内容,希望大家能有更多启发。
在现代操作系统中,系统调用是应用程序与内核之间进行交互的基础。通过监视这些调用,安全工具可以揭示应用程序的行为模式,从而检测潜在的恶意活动。
然而,鉴于系统调用的数量庞大且频繁,必须精心选择需要监控的调用集合,以平衡性能开销和安全监控的需要,因此现代核心检测技术仍然是前置的实时检测和扩展检测,并不是将日志无差别的接入云端做离线分析。
以Falco核心的实时检测逻辑为例,它可以分解为以下关键组件和步骤:
基础 Syscalls 集合定义
首先,需要定义一组基础的 syscalls(系统调用),这些调用是检测链中监控事件所必需的。这些基础集合通过 base_syscalls 来配置,可以分为几类:
进程相关的 Syscalls:如 clone, clone3, fork, vfork, execve, execveat, 和 close。这些调用对于捕获进程的创建、执行、复制和结束非常关键,能够帮助检测系统中的恶意进程行为。
网络相关的 Syscalls:包括 socket, bind, 和 getsockopt。它们确保网络相关事件被适当记录,包括IP元组(如源IP和目的IP)和相关信息,这对于检测基于网络的攻击活动至关重要。
追踪进程信息的 Syscalls:如 setresuid, setsid, setuid, setgid, setpgid, setresgid, capset, chdir, chroot, prctl 和 fchdir。这些系统调用有助于追踪进程在与文件交互或建立网络连接时的正确用户ID(UID)、组ID(GID)、会话ID(SID)和进程组ID(PGID)等。
规则定义与触发
基于这些基础 syscalls 集合,安全团队可以定义一系列规则来监控特定的行为或模式,这些模式可能指向潜在的安全威胁或恶意活动。例如,一个简单的规则可能会监控非预期的网络连接尝试,或者异常的进程创建行为。
状态维护与上下文分析
Falco 利用 libsinsp 库能够在用户态实时同步和维护系统底层进程、文件和网络连接的状态信息,这种状态信息对于理解检测的上下文非常重要,它用于生成真正完整的安全事件。例如,了解一个可疑的网络连接是由哪个进程发起的,该进程的执行路径是什么,以及它的用户和组ID等。
**跨设备的扩展检测
**
此处就不展开了,这是下一代安全检测的核心架构,涉及复杂的分布式状态机和全局检测变量维护。
最终的事件检测与响应
最终生成的安全事件包含命中规则元数据和上下文状态信息,由人、程序或者AI来确定是否真正存在安全威胁,然后才触发警报或其他响应措施,如SOAR的一系列工作流。