背 景
互联网的不断发展促进了人类的发展和社会的进步,人们在享受互联网带来便利的同时,各类安全事件凸显,安全也越来越受到个人、企业以及社会的重视。异常检测作为网络安全检测手段之一,可以有效检测网络行为中的异常情况,提升网络安全检测效率,已经受到各类安全从业人员的关注。然而构建异常检测工具往往需要大量资金的投入,例如需要大量人员参与,聘请软件需求工程师、安全工程师,产品研发工程师,测试工程等人员。这对于一般企业科研机构而言是很难接受的。因此,为了减少在这方面的资金投入,许多安全从业人员都会选择使用一些开源软件来替代。事实上,无论是学习,科学实验,还是在生产基础上进行部署,安全从业人员长期以来都将开源软件视为其工具包的重要组成部分。 下文我们为大家整理推荐22款开源软件和数据集,你应该了解和值得使用的开源异常检测工具集。
异常检测是什么?
异常检测(也称为outlier detection、anomaly detection,离群值检测)是一种重要的数据挖掘方法“主要数据分布”不同的异常值[1]具有非常广泛的商业应用和学术研究价值。例如,从信用卡交易中发现欺诈案例,从正常的网络数据流中发现入侵,可用于机器学习任务中的预处理,防止少量异常点引起的培训或预测失败。
图1 异常检测
异常点是什么?
异常点是指其值与其他值明显不同的数据点。以时间序列为例,时间序列中的异常点超过了正常范围,而不考虑数据点之间的时间关系。换句话说,即使所有数据点都被视为时间无关的[2] ,异常点也会突出,如下图所示。
图2 异常点
然而,并非所有超出范围的值都是异常点。在某些情况下,一个时间点是否正常取决于它的值和它“最近的过去”一致性。如果价值突然增加或减少是暂时的,则称为峰值;如果这种变化是永久性的,则称为水平转移[3]。请注意,虽然峰值看起来与离群值相似,但峰值不能等同于离群值。峰值不是时间依赖性的,而是时间依赖性的。如果在不考虑时间顺序的情况下检查所有数据点,峰值值可能是正常的(见下图)。
图3 峰值
我们可以并排滑动两个时间窗口,并跟踪它们的平均值或中值之间的差异。这种随时间变化的差异是一个新的时间序列,可以用离群值检测器进行检测。当左右窗口的统计数据有显著差异时,表明此时点附近发生了突然变化。时间窗口的长度控制用于检测变化的时间尺度:对于峰值,左窗口比右窗口长,以捕获过去的代表性信息;另一方面,两个窗口都应该足够长,以捕获稳定状态。
图4 水平转移
开源工具异常检测
为了更好地分析异常检测。我们整理了以下六种与异常检测相关的开源工具。
1、Arundo开源的ADTK[8]
ADTK非监督和规则的时间序列
列异常检测Python该软件包提供了一组统一的通用检测器、转换器和聚合物API,并将其连接到模型中的管道类别。它还提供了一些功能来处理和可视化时间序列和异常事件。
图5 ADTK包检测结果
组件的特点:
算法丰富:包括多种时间序列异常检测算法;
标准接口:支持标准化的外部服务接口,方便第三方系统调用
下载地址:https://github.com/arundo/adtk
2、LoudML[14]
Loud ML它是建立在一起的TensorFlow之上的开源时间序列推理引擎。该工具有助于预测数据、检测异常值,并使用先验的知识使异常检测过程自动化。
图6 Loud ML管理界面
工具特点:
- 内置HTTP API,与其他应用系统集成方便;
- 不同数据源的异常数据可以通过机器学习引擎处理;
- 支持ElasticSearch、InfluxDB、MongoDB、OpenTSDB等数据库;
- 支持JSON安装管理配置;
- 几乎实时的数据处理,并为推理引擎提供返回结果。
下载地址:https://github.com/regel/loudml
3、Linkedin开源的luminol[15]
Luminol时间序列数据分析是一析python库。它支持的两个主要功能是异常检测和关联。它可以用来计算异常的可能原因。给定一个时间序列,检测数据是否包含任何异常,并返回异常发生的时间窗口、异常达到其严重程度的时间戳,以及指示该异常与时间序列中的其他异常相比有多严重的分数。给定两个时间序列,帮助求出它们的相关系数。
图7 Luminol API调用方式
工具的特点:可以建立一个异常检测分析的逻辑流程。例如,假设网络延迟出现峰值:异常检测可以发现网络延迟时间序列中的峰值,并获取峰值的异常周期,之后与同一时间范围内的其他系统指标(如GC、IO、CPU等)相关指标的排名列表,根源候选项很可能位于前列。
下载地址:https://github.com/linkedin/luminol
4、PyOD[16]
PyOD它用于检测数据中的异常值。它可以访问20多种不同的算法来检测异常值,并且可以与Python 2和Python 3兼容。
图8 PyOD异常检测库
工具特点:
- 包括近20种常见的异常检测算法,如经典LOF/LOCI/ABOD以及对抗生成模型的最新深度学习(GAN)集成异常检测(outlier ensemble);
- 支持不同版本Python:包括2.7和3.5 ;支持多种操作系统:windows,macOS和Linux;
- 简单易用,一致API,异常检测只需几行代码即可完成,便于大量算法的评估;
- 使用即时编译器(JIT)和并行化(parallelization)优化,加快算法运行和扩展(scalability),大量数据可以处理;
下载地址:
https://pyod.readthedocs.io/en/latest/
5、PyOdds[17]
PyODDS端到端异常检测Python组件。PyODDS无论是数据科学还是机器学习背景,提供异常检测算法,满足不同领域的用户需求。PyODDS无需将数据移出数据库服务器,就能在数据库中执行机器学习算法。它还提供了大量基于统计和深度学习的异常检测算法。
图9 PyOdds异常检测库
组件的特点:
- 全栈服务支持基于轻量级的全栈服务SQL从数据库到后端机器学习算法的操作和维护,使吞吐量更快;
- 先进的异常检测方法包括统计、机器学习、深度学习模型和统一API和详细的文档;
- 强大的数据分析机制支持静态和时间序列数据分析和灵活的时间片(滑动窗口)分割;
- 自动机器学习首次将自动机器学习与异常检测相结合,是将自动机器学习概念扩展到现实世界数据挖掘任务的尝试之一。
下载地址:
https://github.com/datamllab/pyodds
6、Twitter开源的AnomalyDetection[4]
AnomalyDetection是一个R语言程序包,Twitter它通常用于重大新闻和体育赛事AnomalyDetection扫描入口流量,发现机器人使用僵尸账户发送大量垃圾(营销)信息。
图10 AnomalyDetection 入站流量异常检测
下载地址:
https://github.com/twitter/AnomalyDetection
其他开源工具包如下表所示:
数据集开源异常检测(入侵检测)
为了更好地研究异常检测,数据集是必不可少的。我们整理了以下9个异常检测(入侵检测)相关数据集:
参考文献
[1] V. Chandola,A. Banerjee,and V. Kumar,“Outlier detection: A survey,” ACM Computing Surveys,2007.
[2] D. Hawkins,Identification of Outliers. Chapman and Hall,London, 1980.
[3] A. Javaid,Q. Niyaz,W. Sun,and M. Alam,“A deep learning approach for network intrusion detection system,” in Proceedings of the 9th EAI International Conference on Bio-inspired Information and Com-munications Technologies (formerly BIONETICS),pp. 21–26,ICST(Institute for Computer Sciences, Social-Informatics and Telecommunications Engineering),2016.
[4]https://github.com/twitter/AnomalyDetection
[5]https://github.com/pridiltal/oddstream
[6]https://github.com/earthgecko/skyline
[7]https://github.com/hastic
[8]https://github.com/arundo/adtk
[9]https://github.com/tsurubee/banpei
[10]https://github.com/smirmik/CAD
[11]https://github.com/MentatInnovations/datastream.io
[12]https://github.com/KDD-OpenSource/DeepADoTS
[13]https://github.com/NetManAIOps/donut
[14]https://github.com/regel/loudml
[15]https://github.com/linkedin/luminol
[16]https://pyod.readthedocs.io/en/latest/
[17]https://github.com/datamllab/pyodds
[18]https://github.com/selimfirat/pysad
[19]https://github.com/kLabUM/rrcf
[20]https://github.com/khundman/telemanom
[21]https://github.com/ExpediaDotCom/adaptive-alerting
[22]https://github.com/yahoo/egads
[23]https://github.com/netflix/surus
[24]https://github.com/lytics/anomalyzer
[25]https://github.com/facesea/banshee
[26]https://github.com/Stream-AD/MIDAS
[27]https://github.com/pridiltal/oddstream
[28] A. Shiravi,H. Shiravi,M. Tavallaee,and A. A. Ghorbani,“Toward developing a systematic approach to generate benchmark datasets for intrusion detection,” computers & security,vol. 31,no. 3,pp. 357–374,2012.
[29] Y. Yu,J. Long,and Z. Cai,“Network intrusion detection through stacking dilated convolutional autoencoders,” Security and Communication Networks,vol. 2017,2017.
[30] A. Adam,E. Rivlin,I. Shimshoni,and D. Reinitz,“Robust real-time unusual event detection using multiple fixed-location monitors,” IEEE transactions on pattern analysisand machine intelligence,vol. 30,no. 3,pp. 555–560,2008.
[31] C. Yin,Y. Zhu,J. Fei,and X. He,“A deep learning approach for intrusion detection using recurrent neural networks,” IEEE Access,vol. 5,pp. 21954–21961,2017.
[32] T. A. Tang,L. Mhamdi,D. McLernon,S. A. R. Zaidi,and M. Ghogho,“Deep learning approach for network intrusion detection in software defined networking,” in Wireless Networks and Mobile Communications (WINCOM),2016 International Conference on,pp. 258–263,IEEE,2016.
[33] M. Yousefi-Azar,V. Varadharajan,L. Hamey,and U. Tupakula, “Autoencoder-based feature learning for cyber security applications,” in Neural Networks (IJCNN),2017 International Joint Conference on,pp. 3854–3861,IEEE, 2017.
[34] S. Mohammadi and A. Namadchian,“A new deep learning approach for anomaly base ids using memetic classifier.,” International Journal of Computers, Communications & Control,vol. 12,no. 5,2017.
[35] M. Lopez-Martin,B. Carro,A. Sanchez-Esguevillas,and J. Lloret, “Conditional variational autoencoder for prediction and feature recovery applied to intrusion detection in iot,” Sensors,vol. 17,no. 9,p. 1967,2017.
[36] J. Stolfo,W. Fan,W. Lee,A. Prodromidis,and P. K. Chan,“Cost-based modeling and evaluation for data mining with application to fraud and intrusion detection,” Results from the JAM Project by Salvatore,pp. 1–15,2000.
[37] K. Alrawashdeh and C. Purdy,“Toward an online anomaly intrusion detection system based on deep learning,” in Machine Learning and Applications (ICMLA),2016 15th IEEE International Conference on,pp. 195–200,IEEE, 2016.
[38] N. T. Van,T. N. Thinh,and L. T. Sach,“An anomaly-based network intrusion detection system using deep learning,” in System Science and Engineering (ICSSE),2017 International Conference on,pp. 210–214,IEEE, 2017.
[39] R. Fontugne,P. Borgnat,P. Abry,and K. Fukuda,“Mawilab: combining diverse anomaly detectors for automated anomaly labeling and performance benchmarking,” in Proceedings of the 6th International COnference,p. 8,ACM, 2010.
[40] C. G. Cordero,S. Hauke,M. Mühlhäuser,and M. Fischer,“Analyzing flow-based anomaly intrusion detection using replicator neural networks,” in Privacy,Security and Trust (PST),2016 14th Annual Conference on,pp. 317–324, IEEE,2016.
[41] “Jamk university of applied sciences,realistic global cyber environment (rgce),” 2009