A Comprehensive Approach to Intrusion Detection Alert Correlation
背景知识和启发
- 如何把各个方面连为一个整体
- 不同的攻击表现
- 网络数据包
- 系统调用
- 审计记录
- 应用程序日志
- 不同类型的入侵检测
- 主机 vs 网络
- IT环境(例如,Windows vs Linux)
- 抽象级别(例如,内核级别与应用级别)
- 不同的攻击表现
本文目标和贡献
- 聚合多个IDS的输出
- 滤除不相关的警报
- 提供简明的网络安全活动视图
数据
数据集 | 报警器 | 持续时间 | 警报数量 |
---|---|---|---|
IT/LL 1999 | USTAT,Snort | 2 周 | 41760 |
MIT/LL 2000 | USTAT,Snort | 3 小时 | 36635 |
CTV | Snort,EBayes-TCP,U-STAT,WinSTAT,Tripwire | 2 天 | 215190 |
Defcon | Snort | 2 天 | 6378096 |
罗马空军研究实验室 | Snort,未公开的 NIDS | 4 月 | 5299390 |
蜜罐 | Snort | 10 天 | 260120 |
寻宝 | Snort,LinSTAT | 4 小时 | 2811169 |
- 两个现有的数据集
- DARPA
- MIT Lincoln Laboratory 1999
- MIT Lincoln Laboratory 2000
- Defcon 9
- 缺点
- 为评估 IDS 而建立,不包含报警器警报
- 非真实环境,非实时
- 缺乏网络环境健康检测信息
- 难以确定攻击造成的实际影响
- 不包括异常流量和非异常行为
- DARPA
- 三个额外的数据集
- 两个蜜罐系统
- RedHat 7.2 Linux
- Microsoft Windows 2000 Server
- 网络寻宝竞赛
- 罗马空军研究实验室网络
- 没有成功的攻击
- 两个蜜罐系统
- 人工保证关联过程的正确性
特征
体系架构
- 可选
- 并行
- 反馈作为输入
组件
- 正规化
- 将警报转换为通用格式
- 来自不同报警器的警报被编码为不同的格式
- 预处理
- 为所有已经格式化的警报添加有意义的属性值,以此增强警报
- 开始时间
- 结束时间
- 攻击来源
- 攻击目标
- 为所有已经格式化的警报添加有意义的属性值,以此增强警报
- 聚合
- 结合来自不同的 IDS,但代表相同攻击的警报
- 验证
- 保证警报与单一攻击向对应
- 减少失败攻击的影响
- 线程重建
- 单一攻击者对单一目标发起一系列的攻击,把这些攻击造成的警报结合起来
- 会话重建
- 把基于网络的警报和基于主机的警报加以关联
- 焦点识别
- 识别出许多攻击的来源或目标的主机
- DoS
- 端口扫描
- 识别出许多攻击的来源或目标的主机
- 多步关联
- 识别常见攻击模式
- 网络中不同位的单一攻击组成的序列
- 跳岛攻击
- 网络中不同位的单一攻击组成的序列
- 识别常见攻击模式
- 影响分析
- 确定攻击对特定的目标网络造成的影响
- 优先级
- 为警报分配优先级
报警过程
元警报(Meta-Alert)
- 定义
- 融合而来的高级警报
- 从原始警报派生出属性值
- 例子
- 一系列单个网络探测数据包引发的警报,组合成“端口扫描”警报
- 目标属性,端口扫描的所有主机
- 表示方法
- 叶节点为 IDS 警报的树
- 广度优先搜索(BFS)完成合并
攻击场景实例
攻击 ID | 名称 | 报警器 | 起止时间 | 来源 | 目标 | 标签 |
---|---|---|---|---|---|---|
1 | IIS Exploit | N1 | 12.0/12.0 | 80.0.0.1 | 10.0.0.1, port:80 | ... |
2 | Scanning | N2 | 10.1/14.8 | 31.3.3.7 | 10.0.0.1 | ... |
3 | Portsacn | N1 | 10.0/15.0 | 31.3.3.7 | 10.0.0.1 | ... |
4 | Apache Exploit | N1 | 22.0/22.0 | 31.3.3.7 | 10.0.0.1, port:80 | ... |
5 | Bad Request | A | 22.1/22.1 | localhost, Apache | ... | |
6 | Local Exploit | H | 24.6/24.6 | linuxconf | ... | |
7 | Local Exploit | H | 24.7/24.7 | linuxconf | ... |
- 被攻击的网络
- Linux 主机上易受攻击的 Apache Web 服务器 (IP: 10.0.0.1)
- 基于主机的 IDS(H)
- 基于应用程序的 IDS(A):监视 Apache Web 日志是否存在恶意活动
- 两种不同的基于网络的 IDS(N1 和 N2)
- 攻击过程
- 首先,攻击者(IP:31.3.3.7)扫描主机端口
- 发现易受攻击的 Apache 服务器(警报2,3)
- 扫描过程中,蠕虫(IP:80.0.0.1)尝试 exploit Microsoft IIS 并失败(警报1)
- 扫描后,攻击者利用 Apache 缓冲区溢出漏洞(警报4,5)
- 获取 Apache 用户的交互 shell
- 针对 linuxconf 发起本地攻击,攻击者成为 root用户(警报6,7)
- 首先,攻击者(IP:31.3.3.7)扫描主机端口
- 期望的关联结果
- 对受害主机的多步攻击组成的单一元警报
- 步骤1:初始扫描(警报2,3)
- 步骤2:针对 Web 服务器的远程攻击(警报4,5)
- 步骤3:提权(警报6,7)
- 警报1为无关紧要的警报,应该丢弃
警报标准化
攻击 ID | 名称 | 报警器 | 起止时间 | 来源 | 目标 | 标签 |
---|---|---|---|---|---|---|
2 | Portsacn | N2 | 10.1/14.8 | 31.3.3.7 | 10.0.0.1 | ... |
- 目标:统一不同类型传感器警报格式
- 只有一种类型的传感器不需要标准化
- 入侵检测消息交换格式(Intrusion Detection Message Exchange Format,IDMEF)
- 由 Internet Engineering Task Force 提出
- 由不同的 IDS 包装模块实现
警报属性 | 描述 |
---|---|
alertid | 识别警报的唯一ID |
analyzertime | IDS发送警报的时间 |
attackernodes | 发起攻击的节点集合 |
attackgraph | 显示复杂攻击进度的图表 |
consequence | 受本次攻击影响的系统集 |
createtime | IDS生成警报的时间 |
detecttime | IDS检测到攻击的时间 |
end_time | 攻击结束的时间 |
name The | 攻击名 |
priority | 攻击的重要程度 |
receivedtime | 关联器收到警报的时间 |
reference | 对其他警报的引用 |
sensomode | 生成警报的IDS运行的节点 |
start_time | 攻击开始的时间 |
type | 攻击类型(Reconnaissance,Breakin,Escalation,DoS) |
verified | 攻击是否成功(真,假,未知) |
victimnodes | 攻击受害者的节点 |
victimprocess | 被攻击的进程的完整路径 |
victimservice | 受到攻击的服务的端口号和协议 |
警报预处理
攻击 ID | 名称 | 报警器 | 起止时间 | 来源 | 目标 | 标签 |
---|---|---|---|---|---|---|
5 | Bad Request | A | 22.1/22.1 | 10.0.0.1 | 10.0.0.1 |
... |
6 | Local Exploit | H | 24.6/24.6 | 10.0.0.1 | 10.0.0.1, linuxconf | ... |
7 | Local Exploit | H | 24.7/24.7 | 10.0.0.1 | 10.0.0.1, linuxconf | ... |
- 一些必要的字段被省略
- 起止时间
- 攻击来源/目标
- 附加信息
- 目标:尽可能准确地提供缺少的警报属性
- 使用多种启发式
警报融合
攻击 ID | 名称 | 报警器 | 起止时间 | 来源 | 目标 | 标签 |
---|---|---|---|---|---|---|
2 | Scanning | N2 | 10.1/14.8 | 31.3.3.7 | 10.0.0.1 | correlated |
3 | Portsacn | N1 | 10.0/15.0 | 31.3.3.7 | 10.0.0.1 | correlated |
8 | Meta-Alert | {N1, N2} | 10.8/14.8 | 31.3.3.7 | 10.0.0.7 | {2, 3} |
- 目标:组合不同的 IDS 对同一攻击独立检测出的警报
- 不能合并同一传感器产生的警报
- 融合:警报与其包含的信息之间的时间差异
- 维持警报的滑动时间窗口
- 窗口小会导致相关警报逃避融合
- 时间窗口内的警报存储为时间序列
- 更新警报时,与序列中已经存在的警报相比较
- 如果所有重叠属性相同,并且新警报由不同的传感器产生,则匹配成功
- 匹配成功后,合并警报; 生成的元警报会替换队列中被匹配上的警报
- 新时间戳:较早的起止时间
- 维持警报的滑动时间窗口
警报验证
攻击 ID | 名称 | 报警器 | 起止时间 | 来源 | 目标 | 标签 |
---|---|---|---|---|---|---|
1 | IIS Exploit | N1 | 12.0/12.0 | 80.0.0.1 | 10.0.0.1, port:80 | nonrelevant |
- 三种警报
- 真实警报
- 无关的真实警报
- 失败的攻击
- 假警报
- 目标:用预计的攻击“结果”来扩展入侵检测签名
- 实时验证
- 攻击留下的可见和可验证的痕迹
- 例如:临时文件,传出连接
- 被动技术
- 依赖于先验信息
- 攻击目标是否
- 存在
- 在运行
- 可到达
- 按照入侵者的预期重新组装数据包
- 攻击目标是否
- 优点
- 不干扰正常操作
- 缺点
- 知识库/先验信息更新不及时
- 受信息类型的限制
- 依赖于先验信息
- 主动技术
- 寻找攻击成功的证据
- 建立的网络连接
- 打开的未知端口(后门)
- 漏洞扫描程序
- 优点
- 信息是最新的
- 缺点
- 在网络上可见
- 消耗网络资源
- 导致崩溃
- 发出假警报
- 优点
- 远程登录
- 优点
- 收集高质量的数据
- 缺点
- 要配置目标机器
- 优点
- 寻找攻击成功的证据
攻击线程重建
攻击 ID | 名称 | 报警器 | 起止时间 | 来源 | 目标 | 标签 |
---|---|---|---|---|---|---|
4 | Apache Exploit | N1 | 22.0/22.0 | 31.3.3.7 | 10.0.0.1 port:80 | correlated |
6 | Local Exploit | H | 24.6/24.6 | 10.0.0.1 | 10.0.0.1, linuxconf | correlated |
7 | Local Exploit | H | 24.7/24.7 | 10.0.0.1 | 10.0.0.1, linuxconf | correlated |
8 | Meta-Alert | {N1, N2} | 10.8/14.8 | 31.3.3.7 | 10.0.0.7 | {2, 3}, correlated |
9 | Meta-Alert | {N1, N2} | 10.8/22.0 | 31.3.3.7 | 10.0.0.7, port:80 | {4, 8} |
10 | Meta-Alert | H | 24.6/24.7 | 10.0.0.1 | 10.0.0.1, linuxconf | {6, 7} |
- 目标:把由单个攻击者对单个目标发动攻击而引发的一系列警报组合到一起
- 合并时间邻近,源和目标等效的警报
- 设定时间窗口:120s
- 减少暴力攻击造成的大量警报
攻击会话重建
攻击 ID | 名称 | 报警器 | 起止时间 | 来源 | 目标 | 标签 |
---|---|---|---|---|---|---|
5 | Bad Request | A | 22.1/22.1 | 10.0.0.1 | 10.0.0.1, Apache | correlated |
9 | Meta-Alert | {N1, N2} | 10.8/22.0 | 31.3.3.7 | 10.0.0.7, port:80 | {4, 8}, correlated |
11 | Meta-Alert | {N1, N2, A} | 10.0/22.1 | {31.3.3.7, 10.0.0.1} | 10.0.0.1, port:80, Apache | {5, 9} |
- 目标:将基于网络的警报关联到相关的基于主机的警报
- 警报之间的大致的空间和时间对应关系
- 基于主机的攻击略晚于基于网络的攻击
- 简单但不精确
- 先验信息
- 另一次攻击的准备或先决条件
- 相关信息手动编入知识库
- 具有扩展超时模型的滑动时间窗口
- 新相关的警报到达,延长超时
- 基于主机的攻击略晚于基于网络的攻击
攻击焦点识别
- 目标:确定可能是大量攻击的来源或目标的主机
- DDoS:多对一
- 端口扫描:一对多
多步关联
攻击 ID | 名称 | 报警器 | 起止时间 | 来源 | 目标 | 标签 |
---|---|---|---|---|---|---|
10 | Meta-Alert | H | 24.6/24.7 | 10.0.0.1 | 10.0.0.1, linuxconf | {6, 7} correlated |
11 | Meta-Alert | {N1, N2, A} | 10.0/22.1 | {31.3.3.7, 10.0.0.1} | 10.0.0.1, port:80, Apache | {5, 9} correlated |
12 | Meta-Alert | {N1, N2, H, A} | 10.0/24.7 | {31.3.3.7, 10.0.0.1} | 10.0.0.1, port:80, Apache, linuxconf | {10, 11} |
- 目标:确定由多次单独攻击组成的高级攻击模式
- 示例
- 扫描受害主机
- 入侵主机上的用户账户
- 提权到 root 用户
影响分析
- 目标:确定攻击对受保护的网络的正常运行的影响
- 心跳监视器
警报优先级
- 警报分类
- 舍弃不重要或无关的警报
优先级 | 攻击 ID | 描述 | 目标 | 来源 |
---|---|---|---|---|
High | 12 | Multistep Attack Scenario | {11, 10} | |
Low | 2-11 | ... | correlated | ... |
Low | 1 | IIS Exploit | nonrelevant | ... |
参考资料
- A Comprehensive Approach to Intrusion Detection Alert Correlation, Valeur et al, 2004
- Lecture 20