P与D的逻辑区别
防护(Prevention, P)与检测(Detection, D)的技术架构和功能职责存在显著差异,这两个概念虽然在实践中经常被混用,但它们的主要区别在于是否具备实时的检测和阻断能力。
检测(Detection, D)在网络安全策略中常以入侵检测系统(Intrusion Detection System, IDS)的形态出现。IDS主要作为旁路监测系统,它通过分析网络流量的镜像副本进行威胁识别,无需直接插入网络通信链路中。其主要职能是提高网络流量中潜在安全威胁的可见性,而不直接参与流量的管理或阻断。
相比之下,防护(Prevention, P)策略通常通过入侵防御系统(Intrusion Prevention System, IPS)实施,要求该设备直接部署在网络通信链路中。IPS具有即时检测并阻断恶意流量的能力,它不仅分析流经设备的流量,还实时采取措施以阻止潜在的安全威胁。
尽管IDS本身不直接阻断流量,但可以通过与网络中的网关、防火墙及其他安全设备联动,间接实现阻断功能。
在终端安全领域,防护(Prevention, P)代表着一系列实时检测与阻断恶意行为的能力,如文件扫描、内存监控、URL检测和主动防御技术等。这些实时防御机制通常基于复杂的检测时机策略,例如在文件创建、进程启动或特定系统调用(Hook点)时触发。
相较之下,现代流行的EDR的检测(Detection, D)重点在于提供对潜在攻击行为的洞察,它侧重于安全事件数据的收集、分析,对收集到的数据进行上下文关联的准实时分析,作为实时防护的补充。
安全检测的"记忆"逻辑
实时分析与状态跟踪是识别和响应安全事件的关键组成部分。
以Suricata为例,它为流量检测引入了“Flow”的概念,为传输层会话构建了一个连续的上下文框架。这一机制允许Suricata不仅识别独立的网络数据包,而且还能够理解数据包之间的动态关系以及连续的数据流模式。通过准确地定义流的连接状态,Suricata能够深入到传输层的报文有效载荷和应用层的协议数据,执行深度分析与检测。
然而,传统的检测方法仅能对单个网络请求或响应进行分析,如在一个Flow(TCP会话)中可能包含多次HTTP请求与响应交互。这种方法的局限性在于,传统检测缺乏“记忆性”,它不能跨请求或响应进行连续的状态跟踪。为了克服这一限制,Suricata引入了Flowbits的状态机功能,它允许在多个检测规则间保持状态信息的连续性。通过使用Flowbits标记,当一条规则与第一个数据包相匹配时,Suricata能够在随后的数据包匹配过程中识别出第一个数据包的状态,从而实现跨多个数据包的复杂检测逻辑。此外,Suricata还提供了更高级的功能,如xbits,以支持更复杂的跨流状态机检测策略。
另一个例子以Sysmon为例,该工具专注于收集与分析围绕进程活动的安全日志。为了有效跟踪和分析进程行为,Sysmon为每个进程的实时生命周期状态生成了一个唯一的标识符(GUID),这使得安全分析人员能够对不同进程离散的恶意行为进行检测,也能针对被标识的进程行为进行更详尽的审查,进一步通过使用GUID作为关联因子,还能够汇总并关联多个进程(进程树)的行为。当然面对更复杂的检测,包括远程过程调用(RPC)和远程进程访问等跨进程行为模式,那就需要更多带“记忆”的复杂安全数据作为支撑。
本文补上一些上篇未提到的内容,希望大家能有更多启发。
在现代操作系统中,系统调用是应用程序与内核之间进行交互的基础。通过监视这些调用,安全工具可以揭示应用程序的行为模式,从而检测潜在的恶意活动。
然而,鉴于系统调用的数量庞大且频繁,必须精心选择需要监控的调用集合,以平衡性能开销和安全监控的需要,因此现代核心检测技术仍然是前置的实时检测和扩展检测,并不是将日志无差别的接入云端做离线分析。
以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的一系列工作流。
声明:本文来自赛博攻防悟道,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。