当前位置: 首页 > 科技观察

异常检测及开源工具

时间:2023-03-15 22:31:55 科技观察

背景互联网的不断发展促进了人类的发展和社会的进步。在人们享受着互联网带来的便利的同时,各种安全事件也日益突出,安全越来越受到个人、企业和社会的青睐。注意力。异常检测作为网络安全检测手段之一,能够有效检测网络行为异常,提高网络安全检测效率,受到了各类安全从业者的关注。然而,异常检测工具的建设往往需要大量的资金投入,比如大量人员的参与,聘请软件需求工程师、安全工程师、产品开发工程师、测试工程师等人员。这对于一般的企业科研机构来说是不能接受的。因此,为了减少这方面的资金投入,很多安全从业者会选择使用一些开源软件来代替。事实上,安全从业者长期以来一直认为开源软件是他们工具包的重要组成部分,无论是用于学习、科学实验还是在生产基础上的部署。下面我们为大家整理推荐22款开源软件和数据集,你应该知道并且值得使用的开源异常检测工具集。什么是异常检测异常检测(也称为异常值检测、异常检测、离群值检测)是一种重要的数据挖掘方法,可以发现与“主要数据分布”不同的异常值[1],具有非常广泛的商业应用和学术研究价值。例如,从信用卡交易中发现欺诈案例,从正常的网络数据流中发现入侵。同时可用于机器学习任务中的预处理,防止因少量异常点的存在而导致训练或预测失败??。图1异常检测什么是离群值离群值是一个数据点,其值与其他值有显着差异。以时间序列为例,时间序列中时间超过序列正常范围的异常值,与数据点之间的时间关系无关。换句话说,即使所有数据点都被认为与时间无关[2],异常值也会脱颖而出,如下图所示。图2Outliers然而,并非所有超出范围的值都是异常值。在某些情况下,一个时间点是否正常取决于它的值是否与其“最近的过去”一致。如果价值的突然增加或减少是暂时的,则称为尖峰;如果变化是永久性的,则称为电平偏移[3]。请注意,尽管峰值看起来与离群值相似,但峰值与离群值不同,峰值与时间无关,而离群值与时间相关。如果不分时间顺序检查所有数据点,峰值可能是正常的(见下图)。图3峰值我们可以并排滑动两个时间窗口并跟踪它们的均值或中值之间的差异。这种随时间的变化是一个新的时间序列,可以用离群值检测器进行检查。当左右窗口的统计数据有明显差异时,说明在这个时间点附近发生了突然的变化。时间窗口的长度控制用于检测变化的时间尺度:对于峰值,左侧的窗口比右侧的窗口长,以捕获最近的代表性信息;另一方面,对于电平转换,两个窗口都应该足够长以捕获稳态。图4水平转移异常检测开源工具,用于更好地分析异常检测。我们整理了以下6个与异常检测相关的开源工具。1、Arundo的开源ADTK[8]ADTK是一个用于无监督、基于规则的时间序列异常检测的Python包。这个包提供了一组API,具有统一的通用检测器、转换器和聚合器,以及将它们连接到模型中的管道类。它还提供了一些用于处理和可视化时间序列和异常事件的功能。图5ADTK报文检测结果组件特点:算法丰富:包括多种时序异常检测算法;标准接口:支持标准化对外服务接口,方便第三方系统调用下载地址:https://github.com/arundo/adtk2,LoudML[14]LoudML是一个开源的时间序列推理引擎,构建于其之上的张量流。该工具有助于预测数据、检测异常值并使用先验知识来自动执行异常检测过程。图6LoudML管理接口工具特点:内置HTTPAPI,方便与其他应用系统集成;可通过机器学习引擎处理来自不同数据源的异常数据;支持ElasticSearch、InfluxDB、MongoDB、OpenTSDB等数据库;支持JSON配置安装和管理;近乎实时的数据处理和馈送到推理引擎以返回结果。下载地址:https://github.com/regel/loudml3,Linkedin开源luminol[15]Luminol是一个用于时间序列数据分析的轻量级python库。它支持的两个主要功能是异常检测和关联。它可用于计算异常的可能原因。给定一个时间序列,检测数据是否包含任何异常,并返回异常发生的时间窗口、异常达到严重程度时的时间戳,以及表示异常与时间序列中其他异常相比有多严重的分数.给定两个时间序列,帮助找到它们的相关系数。图7LuminolAPI调用工具的特点:可以建立异常检测和分析的逻辑流程。例如,假设网络延迟存在一个峰值:异常检测可以在网络延迟时间序列中找到峰值,得到峰值的异常周期,然后关联其他系统指标(如GC、IO、CPU、等)在同一时间范围内获取相关指标的排序列表中,候选根本原因很可能在最前面。下载地址:https://github.com/linkedin/luminol4,PyOD[16]PyOD是一个用于检测数据异常值的库,它可以访问20多种不同的算法来检测异常值,并且可以兼容Python2和Python3.图8PyOD异常检测库工具的特点:包括经典的LOF/LOCI/ABOD等近20种常见的异常检测算法和对抗生成模型(GAN)、集成异常检测(outlierensemble)等最新的深度学习算法;支持不同版本的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提供了在数据库中执行机器学习算法的能力,而无需将数据移出数据库服务器。它还提供了大量基于统计和深度学习的异常检测算法。图9PyOdds异常检测库组件特点:全栈服务,支持从轻量级SQL数据库到后端机器学习算法的运维,实现更快的吞吐量;先进的异常检测方法,包括统计、机器学习、具有统一API和详细文档的深度学习模型;强大的数据分析机制,支持静态和时序数据分析和灵活的时间片(滑动窗口)切分;automaticmachinelearning,首次尝试将自动机器学习与异常检测相结合,属于将自动机器学习的概念扩展到现实世界数据挖掘任务的尝试之一。下载地址:https://github.com/datamllab/pyodds6,Twitter的开源AnomalyDetection[4]AnomalyDetection是一个R语言包,Twitter通常在重大新闻和体育赛事时用AnomalyDetection扫描入站流量,发现那些使用Zombie账号的是发送大量垃圾(营销)信息的机器人。图10AnomalyDetection入站流量异常检测下载地址:https://github.com/twitter/AnomalyDetection其他开源工具包如下表所示:开源异常检测(入侵检测)数据集为了更好的研究异常检测,数据集合是必不可少的,我们整理了以下9个异常值检测(入侵检测)相关的数据集:参考文献[1]V.Chandola,A.Banerjee,andV.Kumar,"Outlierdetection:Asurvey,"ACMComputingSurveys,2007.[2]D.霍金斯,异常值的识别。ChapmanandHall,伦敦,1980年。[3]A.Javaid、Q.Niyaz、W.Sun和M.Alam,“网络入侵检测系统的深度学习方法”,第9届EAI仿生信息和通信技术国际会议(前身为BIONETICS)论文集,第21-26页,ICST(计算机科学、社会信息学和电信工程研究所),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/万平[1]0]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]httpshttps://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和A.A.Ghorbani,“开发一种系统的方法来生成用于入侵检测的基准数据集”,计算机与安全,卷。31,没有。3,第357–374页,2012.[29]Y.Yu、J.Long和Z.Cai,“通过堆叠扩张卷积自动编码器进行网络入侵检测”,安全和通信网络,卷。2017,2017.[30]A.Adam、E.Rivlin、I.Shimshoni和D.Reinitz,“使用多个固定位置监视器进行稳健的实时异常事件检测”,IEEE交易模式分析和机器智能,卷。30,没有。3,pp.555–560,2008.[31]C.Yin、Y.Zhu、J.Fei和X.He,“一种使用递归神经网络进行入侵检测的深度学习方法”,IEEEAccess,卷。5,pp.21954–21961,2017.[32]T.A.Tang、L.Mhamdi、D.McLernon、S.A.R.Zaidi和M.Ghogho,“软件定义网络中网络入侵检测的深度学习方法”,无线网络和移动通信(WINCOM),2016年国际会议,第258–263,IEEE,2016.[33]M.Yousefi-Azar,V.Varadharajan、L.Hamey和U.Tupakula,“基于自动编码器的网络安全应用特征学习”,神经网络(IJCNN),2017年国际联合会议,第3854–3861页,IEEE,2017年。[34]S.Mohammadi和A.Namadchian,“一种使用模因分类器的异常基础ID的新深度学习方法。”国际计算机、通信与控制杂志,卷。12,没有。5,2017.[35]M.Lopez-Martin、B.Carro、A.Sanchez-Esguevillas和J.Lloret,“用于预测和特征恢复的条件变分自动编码器应用于物联网入侵检测”,传感器,卷。17,没有。第9页1967,2017.[36]J.Stolfo、W.Fan、W.Lee、A.Prodromidis和P.K.Chan,“基于成本的数据挖掘建模和评估及其在欺诈和入侵检测中的应用”,Salvatore的JAM项目结果,第1页–15,2000.[37]K.Alrawashdeh和C.Purdy,“迈向基于深度学习的在线异常入侵检测系统”,机器学习与应用(ICMLA),2016年第15届IEEE国际会议,第195-200页,IEEE,2016年。[38]N.T.Van、T.N.Thinh和L.T.Sach,“使用深度学习的基于异常的网络入侵检测系统”,系统科学与工程(ICSSE),2017年国际会议,第210-214页,IEEE,2017年。[39]R.Fontugne、P.Borgnat、P.Abry和K.Fukuda,“Mawilab:结合不同的异常检测器以进行自动异常标记和性能基准测试”,第6届国际会议论文集,第12页。8,美国计算机学会,2010.[40]C.G.Cordero、S.Hauke、M.Mühlh?user和M.Fischer,“使用复制神经网络分析基于流的异常入侵检测”,隐私、安全和信任(PST),2016年第14届年会,第317-324,IEEE,2016.[41]“Jamk应用科学大学,现实的全球网络环境(rgce)”,2009年