一、 前情提要
在前三篇文章(https://mp.weixin.qq.com/s/izwotbdfcxybZ02gIw-nFg、https://mp.weixin.qq.com/s/Hvf5hFB4GiydD_635dF3LA、https://mp.weixin.qq.com/s/NjdVeTWLoqJGIWY_ftG79w)中,我们详细探讨了目前企业安全运营工作中遇到的海量告警筛选(告警疲劳)问题,并分析了其症结所在,认为“攻击意图”是决定告警实际危害程度的关键因素,并提出了一套完整的特征提取、标注、建模、验证方法。
本文会详细整理并介绍其中的实现细节,适合想要自己动手尝试的读者参考。
二、 取得原始数据
一般来说,我们需要从各种检测/防护系统上收集原始告警数据,在此过程中主要注意以下几点:
1、现有实验表明,监督学习方法比无监督、半监督方法在实战中的表现更好,但模型迁移能力较差。同时由于攻击样本稀缺,模型迁移能力更加受限,因此务必在真实环境中采集数据。
2、此外,告警载荷(或请求&响应报文等)与攻击意图关联最大,是最为必要的。但一些其它字段(如源地址、目的地址等)对分析过程也有帮助,无需刻意丢弃处理。
3、告警筛选模型的训练过程中,最大的困难就是正负样本不均衡。由于攻击手法和业务本身的多样性,常规正则化方法效果有限。最好在有较多攻击发生的时间段(比如红蓝对抗时期)采集数据,保障攻击样本的充足。
(部分原始告警数据)
三、 取得标注样本
关于标注样本的获取方法,在前一篇文章中已经进行了较为详细的讨论(https://mp.weixin.qq.com/s/NjdVeTWLoqJGIWY_ftG79w)。本文在此补充一些细节要点:
1、将已知扫描器、已知蠕虫等活动的相关告警作为标注样本时,务必注意去重和下采样,训练中此类标注占比不宜超过20%。以现有实验情况看来,自动化攻击本身可能具有一定特点,如果此类标注样本占比过多,模型可以泛化并识别出其它类似的自动化攻击,却不易识别出同种漏洞的手动攻击和深入利用。这显然不是我们想要的结果。
2、在人工标注前的采样过程中,异常检测采样的效率要高于聚类采样。也就是说,对特殊样本进行标注的训练效果好于对典型样本的标注。从这个角度看来,正常业务与异常业务之间的界限可能往往是比较明确的,而异常业务内部的区分(是由于攻击导致的,还是非恶意的业务波动)则比较复杂。
(告警特征向量的降维分布,色彩代表异常检测结果,越红越异常)
四、 编写特征提取器
特征提取的效果是监督学习模型性能的决定性因素之一,也是模型构建过程中人力资源投入最大的环节。
针对告警数据而言,特征提取过程需要确保:
- 对于相似行为产生的告警,它们的特征值也是相似的,特征提取器需要排除告警信息中的无关干扰;
- 对于不同行为产生的告警,它们的特征值也是不同的,特征提取器需要找出告警信息中的关键内容;
这也是为什么,我们要使用专家编写正则式的方法来提取特征。告警载荷的特征提取器面对的是一个个内容分布非常广泛的二进制序列,对于缺少专家知识的无监督方法(例如,以字节为单位执行doc2vec等序列嵌入方法)而言,想要从中区分出有价值和无价值的信息片段,是非常困难的。
特征提取性能的另一个关键是,对于告警载荷中各种编码块/协议字段的识别和解析能力。和正则表达式的编写过程一样,都需要安全攻防领域的专家进行大量优化调整后,才能达到较为理想的水平。
此处给出一组经过验证、与攻击意图关联较强的特征列表,供读者参考:
特征种类 | 特征模式 |
网络类 | 源IP、非源非目的外网IP、非源非目的内网IP、网络操作命令和函数
注:现有实验表明,目的IP在告警载荷中的出现次数,似乎用处不大 |
文件类 | 低危害的系统文件路径、高危害的系统文件路径、其他可执行文件路径、其他文件路径、列出文件操作、读文件操作、写文件操作、执行文件操作、其它文件操作、PE/ELF/脚本代码内容 |
数据库类 | 连接字符串、数据库连接操作、数据库危险操作、低危害的数据库系统表和字段、高危害的数据库系统表和字段
注:SQL关键字本身似乎用处不大 |
操作系统类 | 读取操作系统敏感信息操作、修改操作系统敏感信息操作、危险的操作系统命令 |
脚本类 | 常量表达式、脚本动态执行函数、脚本输入输出函数 |
HTTP字段 | 脚本类URL后缀、静态文件URL后缀、201/202响应码、40X响应码、50X响应码
注:请求方法和其它响应码似乎用处不大 |
Windows注册表 | 注册表路径、注册表操作命令和函数 |
五、 模型构建
鉴于真实环境中攻击样本的稀缺,我们选用支持向量机回归(SVR)分别对所标注意图的试探性和利用性标注进行训练。SVR在小样本学习任务中表现出色。
SVR模型中主要需要调整的参数就是高斯核参数Gamma。由于SVR训练速度很快,一般来说直接进行交叉验证和网格搜索即可完成参数优化。
关于具体代码的编写,网上相关资料很多,本文在此不赘述。
六、 上线运行
真实环境中,攻击行为也好,业务活动也好,都并非一成不变。我们需要建立一套完整的反馈机制,使得值守工作中所研判的告警还能源源不断地补充到标注样本集中,从而适应不断变化的信息系统环境。
为此,我们最终设计并实现了一个威胁推荐系统,并将其融入到企业AISecOps流程中。目前,该威胁推荐系统已经在多个红蓝对抗现场中投入使用。
下为被推荐系统判断为“关键告警”的部分案例,可见包含很多手工/高针对性攻击,是重点防守监控对象:
而被推荐系统判断为“低价值告警”的案例中,可见以低水平漏洞扫描和蠕虫活动为主,实际危害程度普遍不高(尽管其中不乏IDS高风险规则告警):
其中,攻击意图评估模型作为推荐系统中的一个子模块,为最终的告警推荐提供依据。但威胁推荐系统中涉及其它内容较多,本文不详细探讨,如有兴趣还请继续关注公众号“绿盟科技研究通讯”。
本系列文章【攻击意图评估】至此完结。
如果您发现文中描述有不当之处,还请留言指出。在此致以真诚的感谢~
评论