BotFinder: Finding Bots in Network Traffic Without Deep Packet Inspection
背景知识与启发
- 三个核心设计目标
- 能够检测单个机器人感染
- 只依靠高层次/网络流量提供的信息
- 对静默的机器人也适用
- 观测到的现象
- C&C 连接遵循一定的模式
- 僵尸机器人向 C&C 发送相似的数据
- 以相似的方式将信息上传到 C&C
- 与 C&C 的通信时间模式有规律可循
- 在可控的环境中运行僵尸程序,即可学习到僵尸程序的活动模式
论文目标与贡献
- 观测不同僵尸网络家族的 C&C 流量呈现出的规律
- 使用机器学习的方法,自动生成僵尸检测模型
- BotFinder 原型机
数据来源
- 2011年6月的30天之内,在 Anubis 上采集到的活跃的恶意软件样本
- 每个僵尸家族平均32个样本
BotFinder

符号定义
- τ, trace ,两个网络端点间数据流动的时间序列
- M,模型
- τM, 模型 M , trace τ, 的分数
- qcluster, 质量评级
输入数据处理
流量重组
Trace 提取

- ∣τ∣min,最少通信次数 (经验值 10 到 50)
- 宿主与 C&C 服务器之间的多次通信组成了命令与控制通信
- 通过两种方法,过滤流量,并识别相关的流量 trace
统计特征分析
- 一个 trace 中两个子序列的启动时间的平均时间间隔
- Botmaster 必须确保所有的机器人在他的控制之下
- 通信不遵循 push 模式
- 通信有固定的时间间隔,并且呈现出宽松的周期性
- 平均通信持续时间
- 传送到源的平均字节数
- 传送到目的的平均字节数
- 对数据流起始时间做快速傅立叶变换(FFT)
模型创建(训练)
- 为每个特征分别聚类
- 丢弃小且多样性高的集合(聚类评级较低)
- CLUES 算法
- 聚类质量评级
- 大且数值相近的集群更好
- qcluster=exp(−βAvgSD)
- β=2.5 (经验值)
恶意软件检测
- 将 trace 的每个特征与相应模型的集群进行匹配
- τ 命中上了 M 的一个特征
- 把 qcluster⋅exp(−βAvgtraceSDtrace) 加到 τM
- β=2.5 (经验值)
- 为每个模型维护一个 τM
- 把最高的 τM 与阈值 a 进行比较
- 允许设定命中特征数量的最小值, h
僵尸机器人演化
僵尸网络的策略
- 行为更加随机
- 当僵尸网络的行为 100% 随机时,BotFinder 的检测率保持在 60%
- 时间间隔更长
- C&C 服务器频繁变化
- BotFinder 无法构建 ∣τ∣min=50 的 trace
- 没有观测到如此高的 C&C 服务器变化 (IP flux)
- 可以在步骤 4 之前添加一步预处理
- 合并两个子 traces :τA 和 τB
- 两个影响因素
- τAB 的标准差要比二者中最小的还小
- τAB 的 qcluster 要高于阈值
- P2P 僵尸网络
- 僵尸网路模拟正常通信
僵尸网络的成本
- C&C 和宿主需要更新僵尸网络通信拓扑信息
- 增加僵尸网络运营商的成本,降低僵尸网络的稳定性和性能
BotFinder 检测失败的可能原因
- 僵尸网络通信明显随机化
- 大幅增加通信间隔,导致 BotFinder 必须捕捉长时间的 trace
- 通信源和目的加入多变的的通信开销
- 非常频繁地更换 C&C 服务器
- 每次 C&C 服务器更改后使用完全不同的通信模式
参考资料
- BotFinder: Finding Bots in Network Traffic Without Deep Packet Inspection
- CS 259D Lecture 2