2014年秋 斯坦福大学网络课程 Data Mining For Cyber Security CS259D 上来自google security Monitoring Tools组负责人Max Poletto 的现身说法PPT的笔记加个人批注
一、背景
1. 在google数据挖掘的常见安全应用场景
(1)账号劫持检测
(2)广告点击欺诈检测
(3)DoS检测
(4)入侵检测
2. 安全分析的主要工作
(1)监控:
主动、持续性的发现入侵、越权操作、脱裤等
(2)分析:
被动、事件驱动、以人为主导的产出威胁情报,事件调查
批注:根据介绍推测,google的安全工作同国内其他公司一样,都是以攻击事件来驱动的后发安全
二、监控
1. 监控流程图

a. 漏报花费-破坏造成的损失成本
b. 误报花费-安全分析人员时间花费成本
c. 报警信息信息要有效(批注:目前IDS/SIEM产品的最大问题是,产出大量报警信息导致无效运维,后文会展现什么是有效的数据展现,提前剧透一下,数据去噪后的多维度(时间维度+关系维度)图形化展示)
d. 分析能力受限于数据质量(批注:现实中,完美的数据是不可能的,很多情况下都在有限的数据下发挥作用,每缺一种数据,就需要一种甚至多种分析方法来弥补)

3.检测方法一异常检测
原则:对正常行为建模,查找异常点
优点:理论上绝对可以发现新的未知攻击
缺点:噪音太多 ,聚类的结果不可读
实际案例:账号异常检测
原理:对正常账号行为建模查找异常点
步骤:feature确认-正常行为建模-异常点查找
方法:


批注:个人经验,异常检测+攻击确认是必不可少的,无论是HTTP参数长度异常检测模型,webshell检测模型的实际经验都证明了这个结论
4. 检测方法二:基于规则(其实是策略)的检测,也就是专家系统
原则:基于专家领域知识直接设置规则(策略)
优点:可以直接将策略与预警对应起来
缺点:未知攻击不可感知,规则绕过问题
批注:其实规则(策略)绕过问题,个人觉得是对攻击行为的总结太过局限,比如说正则狗,我们可以抓住攻击行为的关键路径更加抽象一点来描述攻击行为
google自研系统:

1. 经验
我们要认清以下事实:
(1)完全自动化是不可能的(批注:现阶段我们必须承认这个事实)
(2)以人为本——必须以安全分析人员为主导
(3)在安全分析中应用数据挖掘的本质——更好的辅助安全分析人员的分析工作
批注:辅助包括数据的去噪与多维度(时间维度与关系维度)的可视化展现,可视化有两个方向,分析过程可视化与分析结果可视化,都是为了更好的理解),让安全人员可以聚焦到深度分析中,来找到攻击事件的成因。

(1)方法综述
攻击事件取证:graph traversal
去噪:graph summarization, cluster
恶意软件分类:classification
批注:将算法术语翻译成中文,就感觉像将shell翻译成壳一样的不自在
(2)案例1: 水坑攻击事件取证
经验:数据需要做去噪操作,全局的图计算花费大
(3)案例2:通过图转换 graph transform 来进行 log summarization
反例:
开源取证工具: https://github.com/log2timeline/plaso 基于时间线的单维度来展现事件

缺陷:结果太多,无法运维
改善版本:数据的多维度细粒度展现:时间维度+关系维度(批注:特别是关系维度,目前的产品几乎以时间维度为标配)
方法:将日志转换为图,定义等价条件(例如时间点转换为时间段;url转换为域名,子操作聚合成一类操作)采用图的最小化算法(graph automata minimizationhttps://en.wikipedia.org/wiki/DFA_minimization )来去噪,只提取最有意义的数据(批注:日志去噪技巧上,sumologic最新提出了logreduce的概念,采用聚类的方式来减少日志量)
对比结果如下


恶意软件分类:样本,indicators,所属家族
最终方案:
Web-scale annotation by input embedding
四、结论
1. 安全分析的应用领域很多——前景
2. 数据增长与未知攻击使得数据分析过程如果不自动化,将让安全分析人员陷入困局,而要保证高的检出率准确率的完全自动化是不现实的,所以采用交互式的分析过程(以安全专家为主,利用数据挖掘提供更好的分析工具)是目前唯一明朗的道路