如何准备/构造异常检测功能(网络安全数据)


9

我的目标是使用群集/异常检测(用于入侵检测)分析网络日志(例如Apache,syslog,Active Directory安全审核等)。

从日志中,我有很多文本字段,例如IP地址,用户名,主机名,目标端口,源端口等等(总共15-20个字段)。我不知道日志中是否存在一些攻击,并且想突出显示最可疑的事件(异常值)。

通常,异常检测将概率/频率较低的点标记为异常。但是,一半的日志记录包含字段的唯一组合。因此,数据集中的一半记录将具有最低的频率。

如果我使用基于聚类的异常检测(例如,找到聚类,然后选择远离所有聚类中心的点),则需要找到不同点之间的距离。由于我有15-20个字段,因此它将是一个多维空间,其中维是用户名,端口,IP地址等。但是,马氏距离只能应用于正态分布的要素。这意味着无法找到数据点之间的距离并构造聚类...

例如,假设我在20条记录的数据集中有用户Alice,Bob,Carol,Dave,Eve和Frank。它们在数据库中可能具有以下发生次数:2,5,2,5,1,5。如果我只是将用户名映射到数字,例如

Alice --> 1
Bob --> 2
Carol --> 3
Dave --> 4
Eve --> 5
Frank --> 6

然后,我的用户名概率分布将如下所示:

p(1)= 0.1,p(2)= 0.25,p(3)= 0.1,p(4)= 0.25,p(5)= 0.05,p(6)= 0.25

当然,这不是正态分布,也没有太大意义,因为我可以以任何不同的方式映射用户名...

因此,用户名,操作,端口号,IP地址等字段到数字的简单映射不会带来任何影响。

因此,我想问一下,通常如何处理文本字段/构造特征以使无监督的异常/异常检测成为可能?

编辑:数据结构。

我在数据库表中大约有100列,其中包含来自Active Directory事件的信息。从这100列中,我选择最重要的(从我的角度来看):SubjectUser,TargetUser,SourceIPaddress,SourceHostName,SourcePort,计算机,DestinationIPaddress,DestinationHostName,DestinationPort,操作,状态,FilePath,EventID,WeekDay,DayTime。

事件是Active Directory事件,其中EventID定义了记录的内容(例如,创建Kerberos票证,用户登录,用户注销等)。

数据样本如下所示:

+ ------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -+
| ID | SubjectUser | TargetUser | SourceIPaddress | SourceHostName | SourcePort |计算机| DestinationIPaddress | DestinationHostName | DestinationPort | Action |状态| FilePath | EventID | WeekDay | DayTime |
+ ------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -+
| 171390673 |?|?|?|?|?| domaincontroller1.domain.com | 1.1.1.1 | domaincontroller1.domain.com |?| /身份验证/验证| /成功|?| 4624 | 1 | 61293 |
+ ------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -+
| 173348232 |?|?|?|?|?| domaincontroller2.domain.com | 2.2.2.2 | domaincontroller2.domain.com |?| /身份验证/验证| /成功|?| 4624 | 1 | 61293 |
+ ------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -+
| 180176916 |?|?|?|?|?| domaincontroller2.domain.com | 2.2.2.2 | domaincontroller2.domain.com |?| /身份验证/验证| /成功|?| 4624 | 1 | 61293 |
+ ------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -+
| 144144725 |?| John.Doe | 3.3.3.3 | domaincontroller3.domain.com | 2407 | domaincontroller3.domain.com | 3.3.3.4 | domaincontroller3.domain.com |?| /身份验证/验证| /成功|?| 4624 | 3 | 12345 |
+ ------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -+

总共我有1.5亿个事件。不同的事件具有不同的字段,并且并非所有事件都与用户登录/注销有关。


“但是,马氏距离只能应用于正态分布的要素。” 实际上,是椭圆形的。您可以发布数据集的前几行(或一些伪造的数字,但具有与真实事物相同的功能)吗?
user603 2015年

我假设椭圆形表示两个正态分布特征的乘积,均值和标准差不同,但仍呈正态分布。
Andrey Sapegin

不,椭圆形的形状类似于2D足球,3D足球以及通常在D维空间中的D维足球的阴影。
user603 2015年

出于好奇。您能否共享一些数据/您正在使用哪个数据集?它是公共/学术研究集吗?
sabalaba

不幸的是,这不是公共数据集,我无法共享它。但是,应该有一个著名的KDDCup 1999数据集或Honeynet的Scan34数据集(old.honeynet.org/scans/scan34)。这两个数据集都具有用于分析的日志(而非网络流量)(Apache,Snort,syslog等)。在我拥有的数据集中,大多数日志是Active Directory日志。我不确定是否有任何公共AD / Windows事件可用于分析(由于缺乏真实的数据,我之前使用了一个自生成的数据集)。另外,我拥有的数据集非常大(150个Mio记录)。
Andrey Sapegin 2015年

Answers:


2

我绝对不是异常检测专家。但是,这是一个有趣的领域,这是我的两分钱。首先,请注意您的注释:“马哈拉诺比斯距离只能应用于正态分布的要素”。我遇到了一些研究,认为在非正常数据的情况下仍然可以使用该指标。自己看看本文这份技术报告

我还希望您可以使用各种方法和方法在IT网络安全上下文中找到以下有关非监督异常检测(AD)的有用资源本文介绍了非监督AD 的几何框架本文采用基于密度和基于网格的聚类方法;此演示幻灯片,其中提到了如何使用AD 的自组织映射

最后,我建议您看一下我的以下答案,我认为它们与该主题相关,因此可能会有所帮助:有关聚类方法的答案,有关基于非距离聚类的答案以及有关以下方面的软件选项的答案广告


1
谢谢您的链接,它们非常有用。(1)您提到的第一篇论文非常有趣。似乎可以将分布转换为正态以在以后应用马氏距离。我将尝试进入。(2)您是否知道还有其他方法(例如,相似度度量,例如近距离)对距离无效?(3)但是,您提到的演示幻灯片只针对网络流量数据包,而不是日志。
Andrey Sapegin

1
关于其他方法,我考虑了以下2个方面:(1)如果使用高政治模型,则一类SVM可以找出特征之间的相关性;(2)将威胁日志行作为句子,并使用近亲相似度对其进行分组/聚类。我已经尝试实现第一个,但是它已经在1个CPU上运行了一个多星期(我首先在数据的前半部分训练模型,然后将其应用于第二个数据,然后反之亦然)。第二种方法意味着高维空间(例如,用户名的每个不同值都将是一个功能)。
Andrey Sapegin 2015年

1
@AndreySapegin:如果您当前的尝试结果还不够好,您可以尝试其他方法,这些方法已在我参考的论文中提到。那是主意。还有一件事-尝试使用GraphLab开源ML软件(其中一些现在更名为Dato):dato.com/products/create/open_source.html。GraphLab软件不仅具有高性能,而且具有非常强的可扩展性,不仅可以跨越处理器内核,而且可以跨越处理器甚至机器。
Aleksandr Blekh

1
@AndreySapegin:我的大学同事的一篇论文刚刚出现在我的ResearchGate流中。我认为这可能对您有很大帮助(使用ANN方法通过很酷的Encog ML库(他是其创建者和主要贡献者)来检测入侵-Encog也可以通过多核和GPU进行扩展)。这是论文:researchgate.net/profile/Jeff_Heaton/publication/…。这是有关Encog的信息:heatonresearch.com/encog
Aleksandr Blekh

1
对于授予我悬赏奖的人:我感谢您的慷慨捐助,并感谢我为提供高质量答案所做的努力。
Aleksandr Blekh

3

首先,我认为您可能需要辞职。

我在这个问题上遇到的一个严格限制是,您应该准备好拥有相当高的误报率。据我所知,作为网络异常一部分的记录的基本速率非常低(需要引用)。为了争辩,我们将其称为1000:1赔率。然后,即使您观察到一种模式,如果记录是入侵的,发生的可能性也要高出它的合法性,贝叶斯法则说,流量仍然是合法的,后验几率为10:1。

另一个问题是,即使从原则上讲,某些入侵也很难被发现。例如,如果有人对我进行社会工程设计,以使他们获得我的计算机,然后他们登录到该服务并下载了我一直在处理的一个绝密文件,那么将很难找到。基本上,一个有足够决心的攻击者可以使他们的侵入行为几乎任意接近于系统的正常行为。

此外,您的对手是聪明的,而不是统计程序,因此,如果您开始检测某种模式并将其拒之门外,他们可能只是通过不再遵循该模式来做出响应。例如,这就是为什么您会看到很多垃圾邮件,所有字母之间都有空格(为您提供“ V I A G R A”或其他字样)。垃圾邮件过滤器发现字符串“ viagra”是垃圾邮件,因此攻击者刚刚开始执行其他操作。

因此,我认为值得认真思考一下您认为值得检测的哪种类型的委托。这里肯定有低挂的果实,所以不要让完美成为商品的敌人,而是尝试提出一种可以检测所有入侵的算法。


顺便说一句,让我们谈谈低落的果实。在这里,我认为将分析单位从单个记录转移到一记录可能会很有用。

例如,您说过所有记录中有一半具有唯一的字段组合。但是,例如,大概大多数源IP都出现在一个以上的记录中-正是请求中的其他字段正在改变并使组合唯一。如果按IP对请求进行分组,则可以提出以下问题:

  • 某些IP是否似乎以异常多的用户身份(或异常少的身份)进行身份验证?
  • 某些IP是否有异常大量的身份验证失败?
  • 某些IP是否具有异常的访问时间模式(例如,在其时区凌晨3点左右有很多活动,或者全天每1秒请求一次)?

您可以对其他分组执行类似的操作,例如用户名:

  • 当他们先前使用同一台计算机进行所有请求时,此用户是否从另一台计算机进行身份验证?
  • 该用户是否突然触摸了他们从未接触过的文件系统的一部分?

我不知道任何似乎特别适合于此的现成分类器,因为用户的潜在行为是如此多样,并且您可能对随时间变化的行为最感兴趣。这意味着您可能想要建立每个用户/ IP /将来可能做什么的某种模型,并标记与该模型的任何偏差。但是,如果您的用户具有不同的行为模式,那将是一个非常密集的过程!

由于这个困难,我认为现在进行上面概述的探索模式分析可能会更有效率。这很可能会告诉您最有趣的模式类型,然后您就可以开始使用特殊的统计算法来检测这些模式了。


2
谢谢您的回答,这是一个好点。据我了解,您提供的重点是比异常检测更简单的分析。从技术(工业)角度来看,您是正确的。但是,我正在做研究,并且想专注于机器学习分析。像您提供的基于查询的分析我们已经执行过(可能与您提供的查询不完全相同,但是相似)...这样做的另一个论据是,除了“正常”之外,许多企业目前还尝试进行异常检测(更简单,但仍可完成)查询和规​​则...
Andrey Sapegin

2

我认为,首先,您需要有一个数据集,该数据集可以记录一段时间没有攻击的数据。该数据集应捕获系统正常运行所固有的变化。我想强调一点,这不是关于具有注释的数据集。

接下来,我将尝试将所有(或子集)指标合并为一个。此新指标应反映“惊喜”的数量。例如,低值表示系统正常运行,高值峰值/平稳期表示有一些快速变化。在这里,我正在考虑CUSUM或Shewhart图表样式表。

您能否提供一些可用数据的示例?主要是字符串,数字,1/0指示器吗?


1

一种可能性是在没有攻击的情况下在给定一些背景数据的情况下学习特征之间的贝叶斯网络。学习贝叶斯网络很有用,因为它带出了特征之间的条件独立性。因此,您不必处理所有可能的功能组合。例如,如果特征A影响B和C,而特征B和C一起影响D,则您仅学习有关A如何影响B,如何影响C以及B和C如何共同影响D的模型。该模型所需的时间要少得多参数而不是整个概率分布,这是使用贝叶斯网络而不是仅存储整个联合概率分布的主要原因。要测试给定的贝叶斯网络异常,请使用学习的贝叶斯网络模型计算传入数据点的概率。如果概率很低,


问题在于,要获得数据样本而不进行攻击是极其复杂的。通常没有人知道数据集中是否存在一些攻击。
Andrey Sapegin

0

我认为本·库恩的回应是务实而有见地的。

现在我自己的背景包括文本分类,专家系统,聚类和安全性。在此背景下,我认为我可能有一些添加到会话中。但是本·库恩(Ben Kuhn)先前的声明强调,简单的方法可能会产生许多误报。IT员工面临许多误报时,通常会“调出”,因为他们根本没有时间一直追逐误报。

那么该怎么办?

当然,在其中包含攻击的日志可能会有所帮助,但是除非公司以某种方式共享攻击数据,否则我们将面临22个陷阱。尽管一些硅谷初创企业可能正在追求这种威胁共享,但我们还能做什么?

一种可能的方法是创建网络的仿真,然后找到一种对仿真产生攻击的方法。也就是说,假设我们创建了一个模拟,在该模拟中,黑帽(也已被模拟)比白帽事先不为人所知。给定这些攻击后,我们便可以尝试创建应该发现这些攻击的算法。如果黑帽的运作独立于白帽,那么我们将进行一场真正的战斗。如果攻击者闯入系统或未被发现,那么白帽一定程度上已经失效。

当黑帽团队的安全分析人员因其成功(马裤或未发现的攻击)而获得奖励时,甚至可能具有激励机制。类似地,包括白帽的组由于停止马裤和/或检测攻击而受到奖励。

这种安排没有完美的选择。显然,真正的黑帽可能会超过“友好”黑帽团队的才能。但是,作为一个拥有大量数据分析的人,在我看来,如果不更好地了解黑帽,很难量化白帽的成功。底线是这个。如果我们不知道真正的黑帽在做什么,那么下一件最好的事情就是友好的黑帽。

我也有一个不寻常的想法。假设除了友好的黑帽和白帽外,还有一支灰帽队。戴顶灰色帽子意味着什么?这个想法很简单。允许使用灰色的帽子查看友好的黑色帽子和白色的帽子在做什么。但为什么?

假设友好的黑帽使用方法A,B和C发起攻击,而白帽则从未发现这三种方法中的任何一种。好吧,灰色帽子有权查看友好的黑色帽子和白色帽子在做什么,并且他们尝试考虑可以使用什么原理来发现这些未被发现的攻击。如果灰帽子找到了这样的原则,则灰帽子团队便可以与白帽子团队共享这些原则,而无需详细描述确切的攻击。

希望是灰帽子团队提供的这些“提示”使白帽子团队朝着正确的方向前进,而又不会透露太多。

回顾一下,如果我的回答确实与特定技术无关,我深表歉意。显然,我的回答与特定技术无关。但是以我的经验来看,由于数据不足,机器学习中的许多问题(包括安全性问题)通常会失败。这种使用白帽,灰帽和黑帽的方法可能有助于生成数据,使安全公司(或IT员工)不仅可以量化其防御的有效性,而且可以提供推动白帽团队发展的组织结构逐步改善其防御和监视。

我真的不知道我建议的方法是否新颖。我从未听说过灰帽子,但实际上,我认为灰帽子的作用对于推动白人团队前进而不至于透露太多可能至关重要。


注意:我在这里使用的“灰色帽子”一词不是标准的。参见http://www.howtogeek.com/157460/hacker-hat-c​​olors-explained-black-hats-white-hats-and-gray-hats/。因此,应该改用其他术语,也许是“条纹帽子”。

但是想法仍然保持不变:条纹帽子可以帮助在友好的黑帽和防御者(白帽)的工作之间进行调解,以便某些想法和提示可以明智地与白帽共享。


1
看来您可能不小心创建了另一个帐户- 有关如何合并它们的信息,请参见此处。这样您就可以编辑自己的帖子。
银鱼

0

自从我发布了原始问题以来,我已经对该主题进行了很多研究,现在可以提供我的结果作为答案。

首先,在我们的实验室中,我们开发了利用异常检测算法的SIEM系统。该系统和算法的描述可在我的论文中找到。该系统旨在对大型网络中的安全事件进行复杂分析

除此之外,我在关于交叉验证的类似问题的回答中还写了一个简短的摘要,介绍如何处理此类数据。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.