攻击链(Kill Chain)模型描述了攻击从开始到完成的各个阶段。在日志分析中,我们通过收集多个来源的日志(网络、主机、应用等)来识别攻击者在每个阶段留下的痕迹,从而重构攻击过程。
攻击链模型有很多,比如洛克希德-马丁公司的Cyber Kill Chain,包括:侦察、武器化、交付、利用、安装、命令与控制、行动。还有MITRE ATT&CK框架,它更详细地描述了攻击者在入侵后所采用的技术和战术。
在日志研判中,构建攻击链通常包括以下步骤:
-
数据收集:从各种安全设备(防火墙、IDS/IPS、EDR、WAF等)和系统(操作系统、应用程序、数据库)收集日志。
-
数据归一化与关联:将不同来源的日志转换为统一格式,并基于时间、源IP、目标IP、用户等关键字段进行关联。
-
攻击阶段识别:利用规则、机器学习或威胁情报,识别出与攻击链各阶段对应的安全事件。
-
攻击链重构:将识别出的事件按照时间顺序和攻击逻辑进行排列,形成攻击链。
-
影响评估与响应:根据攻击链确定攻击的进展和影响,并采取相应的响应措施。
下面我们详细说明每一步的技术细节。
一、数据收集
-
来源:网络设备(路由器、交换机、防火墙)、安全设备(IDS/IPS、WAF、防病毒)、主机(系统日志、审计日志)、应用(Web服务器、数据库)、云平台等。
-
技术:通常使用日志收集代理(如Fluentd、Logstash)或Syslog服务器,将日志集中到安全信息与事件管理(SIEM)系统中。
二、数据归一化与关联
-
归一化:将不同格式的日志解析成统一的字段,例如将时间戳转换为标准格式,提取源IP、目标IP、端口、协议、用户、事件类型等。
-
关联:通过关联规则或算法,将不同日志中属于同一事件序列的记录关联起来。例如,同一个源IP在短时间内先后触发了防火墙的拦截日志和IDS的警报日志,那么这些日志可能属于同一次攻击尝试。
三、攻击阶段识别
-
使用规则:例如,使用SIEM中的关联规则来检测攻击链的各个阶段。例如:
-
侦察:端口扫描(多个目标端口被同一个IP扫描)
-
武器化与交付:恶意软件下载(从已知恶意的IP或域名下载文件)
-
利用:检测到漏洞利用尝试(如SQL注入、缓冲区溢出)
-
安装:在主机上检测到新的可疑进程或文件
-
命令与控制:检测到主机与已知C2服务器的通信
-
行动:数据外传(大量数据被发送到外部IP)
-
-
使用威胁情报:通过IP、域名、文件哈希等与威胁情报库匹配,识别已知的恶意活动。
-
使用机器学习:通过异常检测算法发现异常行为(如用户行为异常、网络流量异常),这些异常可能对应攻击链的某个阶段。
四、攻击链重构
-
将识别出的事件按照时间线排列,并根据攻击链模型(如Cyber Kill Chain或ATT&CK)进行映射。例如,先有侦察,然后有利用,再有安装等。
-
由于攻击可能不是线性的,而且可能有多个攻击向量,因此需要分析人员或智能算法来判断这些事件是否属于同一次攻击,并重构出攻击链。
五、影响评估与响应
-
根据攻击链的阶段,判断攻击是否成功,以及造成的影响。例如,如果攻击链进行到了"行动"阶段,说明数据可能已经泄露。
-
响应:根据攻击链的阶段和影响,采取相应的措施,如阻断IP、隔离主机、清除恶意软件等。
现代SIEM系统(如Splunk、IBM QRadar、ArcSight)以及新一代的SOAR(安全编排、自动化与响应)平台都提供了攻击链分析的功能。它们通过内置的规则和机器学习模型,自动关联事件,并生成攻击链的可视化。
在大模型时代,我们可以利用自然语言处理技术来自动分析日志中的文本描述,提取关键信息,并辅助进行攻击链的构建。例如,大模型可以理解日志中的语义,识别出日志中描述的活动属于攻击链的哪个阶段,并自动生成攻击链报告。
举例说明:
假设我们有以下日志事件:
事件1: [防火墙] 源IP 1.2.3.4 对目标IP 10.0.0.1 的端口22进行了连接尝试,被拒绝。
事件2: [防火墙] 源IP 1.2.3.4 对目标IP 10.0.0.1 的端口80进行了连接尝试,被拒绝。
事件3: [Web服务器] 检测到来自IP 1.2.3.4 的SQL注入攻击。
事件4: [数据库] 来自应用服务器10.0.0.2 的异常查询,执行了多条SELECT语句,试图读取用户表。
事件5: [网络流量] 从10.0.0.2 到外部IP 5.6.7.8 的大量数据传出。
通过分析,我们可以构建如下攻击链:
-
侦察:事件1和2表明攻击者1.2.3.4在进行端口扫描,寻找可用的服务。
-
武器化与交付:事件3表明攻击者向Web服务器发送了恶意负载(SQL注入),这是武器化并交付攻击。
-
利用:事件3中的SQL注入成功利用漏洞,攻击者获取了数据库的访问权限。
-
安装:在这个例子中,可能没有明显的安装阶段,因为SQL注入直接利用了应用层的漏洞,没有在目标系统上安装恶意软件。
-
命令与控制:事件4中,攻击者通过应用服务器(10.0.0.2)向数据库发送查询,这可以视为攻击者在执行命令。
-
行动:事件5表明攻击者从内部服务器10.0.0.2向外传输数据,可能是在泄露数据。
通过这样的攻击链重构,我们可以清晰地看到攻击的全过程,并针对每个阶段采取相应的响应措施。
在实现上,我们可以使用图数据库(如Neo4j)来存储和查询事件之间的关系,从而更高效地重构攻击链。每个事件作为节点,事件之间的关系作为边,通过图算法来发现攻击路径。