导语:0x0一、前言 在上一篇ML&AI如何在云态势感知产品中落地中介绍了,为何咱们要预测未知恶意程序,传统的安全产品已经没法知足现有的安全态势。那么咱们要使用新的技术手段武装咱们的安全产品,经过大数据的手段更好的解决未知恶意程序php
0x0一、前言html
在上一篇ML&AI如何在云态势感知产品中落地中介绍了,为何咱们要预测未知恶意程序,传统的安全产品已经没法知足现有的安全态势。那么咱们要使用新的技术手段武装咱们的安全产品,经过大数据的手段更好的解决未知恶意程序给咱们带来的危害。前端
0x0二、落地技术架构web
1、如何检测算法
上篇文章讲了大体的落地方法,本文主要是给你们暴露更多的技术细节。shell
一、IDS Agent还原文件会计算一下MD5hash值与FIleHash缓存系统对比一下,若是有则直接报告为恶意软件,而且附上恶意软件家族分类,若是没有根据聚类算法分红不一样的未知分类,不存储该文件,更新缓存,把发生的时间和次数记录一下,为下一步流行度统计使用。缓存
二、若是没有这个文件,那么存储到对象存储(公有云IAAS组件,OSS)。存储完成后向下一个环节投递,发出kafka Topic消息给主程序。设计这个是由于在公有云环境下须要鉴定的文件是海量的,须要一套大数据流转系统缓存。安全
三、主程序使用多线程的方式启动多个处理单元。接收到kafka消息后,从消息中取出OSS的文件路径,而后下载文件到本地,而后调用动态沙箱的文件送检API接口传递到下一个环节。而后等待沙箱回调函数,有回调消息后,获取沙箱的report,而后把相关信息填充到kafka Topic中向下传递。固然中间能够加数据补齐的流程等。在这有两个分支服务器
分支一:把APICall信息传递给SparkMlib库作动态文件二分类器判断。这里主要是使用GBDT、XGBOOST (具体使用哪一个算法须要看准确率、召回率 、F1_score 最终的结果选定)网络
分支二:网络流量从沙箱镜像出来,而后向网络重放一下。经过异常流量检测引擎,这四个检测又是4个ML&AI判断模型。
恶意SSL流量检测
特征工程,有具体意义特征->CNN
·flowMetadata[上行字节数/下行字节数/上行报数/下行包数/持续时间]
·sequence of packet[长度序列/间隔时间序列]
·Byte distribution[字节分布几率]
·TLS header[TLS加密套件/TLS扩展/公钥长度]
前N个包payload 直接转化成图像CNN
合并两个检测结果判断恶意SSL流量
DNS异常域名检测
经过LSTM聚类的方法,找出高度关联的域名和独立点。孤立点设为可疑域名。
DGA域名检测
特征工程主要包含如下3点
·域名随机性(随机性和熵)
·域名长度较长
·n-gram(bigram(相邻双字) )
隐藏通信信道检测
使用随机森林算法
四、主程序同时须要作静态文件检测,根据不一样文件类型送入到不一样的类型静态文件分类器。
针对PE/ELF文件处理流程
须要经过yara文件简单判断一下是否加壳&加密。
未加壳&加密通过静态反编译服务中,计算出汇编序列,而后送入到静态PE/ELF分类器判断。
针对其它类型文件,须要不一样的ML学习模型判断。
好比说脚本文件powershell,调研通常都有不一样的操做码。这都须要深耕细做。
还有好比说webshell检测,也须要对不一样的webshell作不一样的处理。php马是一个很典型的例子,还有菜刀等。
五、检测结果都发往决策中心。根据多类决策树判断。得出最终结果发往恶意文件家族分类器。
恶意文件家族分类通常使用两种多分类器方法。
机器学习算法推荐使用k-means
深度学习方法建议使用卷积神经网络CNN算法
最后建议再过一遍聚类,找出孤立点。
六、造成恶意文件家族和未知恶意分类。最终存储到ElasticSearch方便提供给前端用户展现。
2、如何训练
经过上述全栈机器学习和深度学习算法的描述,全部模型加起来15+。那么这么多模型如何训练,如何更新是本次换“芯”最重要的部分。
一、那么针对机器学习部分,咱们须要保存所提交的样本,不管什么形式都经过流量的形式发送到kafka最终存储到HIVE重,而后导入到spark mlib中进行模型计算。固然,还有一些公网中加入的黑白样本,也是经过一样的形式进入到这个循环中。
二、那些针对深度学习的模型,须要咱们创建深度计算GPU服务集群,设备需求规格:24核128G内存/流量50Gbps(20% https流量) NVidia GeForceGTX1080 GPU https:7000QPS计算文本和图像加起来须要8台物理服务器。恶意软件病毒家族分类看规模大约8台能够知足目前带宽状况下的文件还原速度(25万个样本/day)。
三、在有限的资源下,大约1周更新一次全部模型。
0x0三、总结
经过以上描述,你们能够基本了解未知威胁检测的ML&AI的大体原理。剩下的就是如何代码实现其功能。固然算法调优也是一个漫长的过程。最终实现提高态势感知产品自动化程度,以及实现安全能力的智能化输出。