摘要
通过http流量对每个主机的每个应用程序都生成一组指纹,其中不包含任何的恶意软件流量。在测试模块中,提取最近X分钟在网络中看到的指纹集。接下来,检测模块通过不同的相似性检验来验证这些新提取的指纹是否异常。
我们介绍了DECANTeR,这是一个检测异常出站HTTP通信的系统,该系统可以被动地为受监视主机上运行的每个应用程序提取指纹。
我们系统的目标是检测主机网络流量中提取的未知指纹所指示的未知恶意软件和后门通信。我们使用来自国际组织的真实数据和由恶意流量组成的数据集评估原型。我们表明,我们的系统对441台受监视的主机实现了误报率0.9%,平均检测率97.7%,并且使用简单的回避技术(例如使用已知的浏览器用户代理值)无法被恶意软件回避。
1 介绍
当前的大多数网络安全设备都使用恶意软件特征来识别恶意通信。主要地,这是通过两种不同的方式实现的。基于签名的技术依赖于已知恶意软件样本的数据集,并且它们提取表征恶意软件的已知模式。这些技术也可以自动化,从恶意软件集群中生成签名[20-22]。与经典签名相比,差异在于,自动生成的签名对恶意软件变种更为健壮,因为它们对一组或多组恶意软件共享的某些流量特征进行编码。该技术之所以有效,是因为许多恶意软件共享相同的代码。第二类技术是基于异常的检测。主要目标是基于一组表征特定威胁的功能(例如僵尸网络[4、10、11]或Web攻击[16])创建网络流量模型。大多数相关工作属于异常检测的子类别,我们将其称为特定于威胁的异常检测,因为所有这些工作要么创建使用恶意数据训练的模型,要么着重于通过特定模式识别的特定威胁。
现有问题:
1:基于一组恶意软件生成的分类器或签名无法识别与该组没有通用性的新的未知恶意软件。
2.由于缺乏清晰的模式,因此很难建模某些威胁,例如数据泄露或通用后门。例如,数据渗漏可以是数小时内以小块形式进行的数据库混淆传输,也可以是单个请求中的加密密钥对。
为了解决这些问题,研究人员提出了一种基于异常的检测方法,该方法只能从每台特定机器的良性网络数据中生成模型[5,24]。我们将此类别称为特定于主机的异常检测,它不同于用于分析机器内部状态的技术中通常使用的术语“基于主机”。
不幸的是,现有方法在现实情况下无法提供强大的检测性能,因为它们很容易逃避,或者它们不适应随时间变化的主机行为,或者会触发过多的误报(FP)。
贡献:
在这项工作中,我们提出了DECANTeR,该系统使用被动应用程序指纹技术仅对良性流量建模,因此不依赖任何恶意样本。对于每个受监视的主机,DECANTeR会为从主机进行通信的每个应用程序被动生成指纹。指纹由描述应用程序网络行为的不同HTTP请求功能组成。我们的解决方案使用一种混合方法,因为指纹的特征集可以动态地适应应用程序的类型,并且特征的内容代表从流量中提取的静态模式。直觉是主机以一组已安装的应用程序为特征。因此,如果恶意软件在主机上运行,它可能会生成新的指纹,这些指纹显示出与代表主机应用程序不同的模式。
我们选择专注于HTTP流量,因为它是恶意软件常用的协议[28,34]。我们将在第2节中更详细地讨论这一选择。这项工作的新颖之处在于,通过从主机的网络流量中识别主机的不同的基于HTTP的应用程序来被动地模仿良性行为,并使用这些模型在主机通信中来识别异常行为。总而言之,我们做出了以下贡献:
•我们提出了DECANTeR,一种用于检测出站异常HTTP连接的解决方案,该解决方案基于被动应用指纹技术。我们的方法会自动从网络流量中生成指纹,从而识别受监控主机的异常通信。我们还将讨论DECANTeR如何随着时间的推移适应主机的行为变化。
2 系统和威胁模型(system and threat model)
我们主要关注HTTP流量的原因有两个:
1)大多数恶意软件都使用HTTP [28,34],以与其C&C服务器通信或泄露数据,因为它可以伪装在良性流量中并避免检测;
2)许多企业防火墙实施严格的过滤规则,以阻止非Web流量,这迫使恶意软件避免使用自定义协议并使用HTTP或HTTPS。
此外,许多企业在其网络中部署了TLS中间人(TLS-MITM)代理[8]。这使我们的方法也适用于基于HTTPS的恶意软件,尽管由于安全和隐私问题,它不是最佳解决方案。具有证书固定功能的基于HTTPS的恶意软件会在无法检测到中间人的诱惑时决定不进行通信,因此无法在具有类似设置的企业网络中运行。最后,由于大量数据与大量的良性HTTP数据融合在一起,因此HTTP也被用作数据泄露的协议。这使得对于基于签名的方法,数据泄漏的检测极具挑战性,特别是如果恶意软件混淆了数据,实际上基于HTTP的数据泄漏仍然被认为是一个开放的问题。我们假设恶意软件可以使用压缩,编码或加密的任何组合来转换数据以隐藏内容。
3 our approach
我们的工作直觉如下:特定主机生成的所有流量都是由安装在主机上的一组应用程序A = {a1,..an}产生的网络活动的结果。每个ai都具有特定的网络特性,则可以为每个ai创造一个指纹Fai, 主机H被定义为所有应用程序指纹的集合,即H=U Fai(从1到n的指纹的集合).恶意软件也有它特定的指纹,因此,当恶意软件感染了主机的时候,他们的指纹是不一样的。可以用指纹来区分恶意流量。
尽管直觉似乎很简单,但仍有一些挑战需要解决。传统的指纹识别解决方案从脱机且通常是完整的数据集创建指纹,其中根据不同的输入动态分析应用程序,以触发嵌入其中的所有可能的行为[30]。在我们的设置中,这需要对所有现有HTTP客户端(不仅是浏览器)进行先验分析,这是不现实的。因此,一项挑战是从实时流量中生成应用程序的指纹,该指纹很可能是不完整的(由于捕获时间有限)和异构的(由于同一应用程序随时间变化的消息不同)。其次,系统应提供一种更新机制,以防由于主机上安装了新软件而导致创建新指纹。在这项工作中,我们应对两个挑战。
3.1 系统构造:
http data ----训练阶段【打标签,生成指纹】---测试阶段【打标签,生成指纹,检测】。
训练阶段:对http流量根据User-Agent标头字段将其聚类,【良性应用程序通常使用User-Agent来被Web服务器识别,因此几乎可以保证所有这些请求都是由同一应用程序生成的,因此,这是在流量分析期间进行聚合的一种非常有效的方式。】然后分析每个群集,并根据其应用程序类型【浏览器,后台】为它分配一个标签,根据应用程序及其http请求创建指纹。结果是生成每个受监控的主机的一组指纹,且训练时主机均不存在恶意行为。
该模块运行特定的超时时间,我们称为聚合时间t。在测试模式下,t是X分钟的固定时间窗口,而在训练模式下,t与训练周期的长度匹配。当t结束时,每个标记的簇将传递到下一个模块。
测试阶段:打标签和生成指纹行同训练阶段,标签和指纹生成模块提取最近X分钟在网络中看到的指纹集。接下来,检测模块通过不同的相似性检验函数来验证这些新提取的指纹是否异常。
3.2 系统细节
1.标记:
对http流量根据User-Agent标头字段将其聚类,分析每个群集,并根据其应用程序类型【浏览器,后台】为它分配一个标签。
2.应用程序的类型:
后台 background: background类型代表流量内容和目的地不受用户输入直接影响的那些应用程序(例如,抗病毒更新查询)。这些应用程序具有可预测的行为,并在其通信中显示出固定的模式。他们经常使用HTTP标头具有相同的结构,通信通常使用相同的域集,并且请求的大小和内容相当相似。
浏览器 browser:浏览器类型表示Web浏览器,它们生成HTTP流量,其内容是不可预测的且是动态的,因为它直接取决于用户操作和特定的访问网站,尤其是考虑到动态Web内容的广泛使用。
3.标记的方法:创建了引用者图的一种新方法 : Referrer Graph【具体我没看】
标记方法的目的是区分后台和浏览器这两个应用程序集群。我们通过利用浏览器流量的动态行为来实现这一目标。例如,当用户访问网站时,浏览器会生成对网页(通常为HTML)的请求。下载HTML页面后,浏览器会生成其他HTTP请求,以检索其他信息,例如图像,脚本,CSS等。需要此信息才能正确呈现网页。此行为是浏览器特有的,并且在后台应用程序中不存在,因此可以将其与这两种应用程序类型区分开。
DECANTeR中的一个核心组件是Referrer Graph,它试图通过利用浏览器生成的下载网站资源的请求来抽象化浏览器动态特性,以区分后台和浏览器这两个应用程序。
4.指纹的生成过程:
该模块将来自标记模块的已标记簇作为输入,并针对每个簇通过提取一组特定的特征来生成指纹,这些特征随簇标签而变化。
我们要创建依赖于应用程序网络流量的多个特征的指纹。因此,即使恶意软件正确猜出了User-Agent,我们仍然可以将恶意指纹识别为异常,因为其他功能可能与实际应用程序指纹不匹配。
我们选取的特征如下:
1)主机:存储在HTTP字段“主机”中的一组域。更具体地说,我们仅考虑顶级和第二级域。直觉:我们发现许多通常作为后台服务运行的应用程序大多与同一组域通信。
(2)恒定报头字段:簇请求中始终存在的报头字段集。直觉:许多应用程序(尤其是非浏览器应用程序)针对它们生成的每个请求系统地使用一组固定的标头字段,这使其具有独特的特征。该功能不是新功能,但以前它是用来对恶意通信建模的,[18]而我们却是用它来对良性软件通信进行建模的。
(3)平均大小:HTTP请求的平均大小,由所有HTTP请求的大小(包括标头和正文大小)计算得出。直觉:尽管内容可能因请求而异,但某些应用程序通常会生成大小非常相似的请求,尤其是系统生成的请求。
(4)用户代理:请求字段用户代理的字符串。直觉:对于每个良性应用程序,此值通常是唯一的。
(5)语言:Accept中存在的一组Accept -Language HTTP字段。直觉:Web浏览器使用此字段在HTTP中宣传他们喜欢的自然语言响应。该字段不仅描述了浏览器,还有用户设置。
(6)外发信息:总数的近似值属于集群的所有请求传输的信息量。此功能仅在测试阶段使用。直觉:我们想跟踪集群中的请求已传输了多少信息。
已经表明,依赖单个功能的方法,例如User-Agent字符串,是无效的[15]。因此,我们要创建依赖于应用程序网络流量的多个特征的指纹。因此,即使恶意软件正确猜出了User-Agent,我们仍然可以将恶意指纹识别为异常,因为其他功能可能与实际应用程序指纹不匹配。
5. 检测
检测模块将一组应用指纹Ftest = {Fa1,..Fan}作为输入,将每个指纹Fai与在训练模式Ftrain = {Fb1,...Fbz}期间生成的指纹进行比较。通过计算特定于应用程序类型的特定相似性函数来完成比较。如果Fai与Ftrain中的任何指纹都不相似,则DECANTeR会将Fai视为新的应用程序。找到新的应用程序后,DECANTeR会验证新的指纹是否为软件更新(请参阅第3.2.4节)。如果Fai不是更新,则如果满足以下两个条件之一,则会发出警报:1. Fai的传出信息量在阈值σ之上;2. Fai中的user-agent和浏览器的user-agent字符串相似。
使用检测检查1)和2)的原因如下:对于1),我们想知道计算机上的新应用程序是否正在通过Internet传输过多的数据。这可能表明主机上安装了恶意软件,开始窃取数据。 2)我们要确定那些试图模仿浏览器的应用程序。该检查基于常见的恶意软件行为,该行为试图使用已知浏览器的用户代理字符串隐藏自身[23,34]。因此,应将新的浏览器外观指纹视为异常。
6.指纹更新
7.后台相似性功能
指纹由一组特征代表。让我们将Fa和Fb分别视为在Ftest和Ftrain中生成的两个后台应用程序指纹。 Fa和Fb具有相同的标签。后台相似性函数可验证Fa和Fb是否代表同一应用程序的流量。该函数定义为
其中Si是用来检查第i个特征是否相似的函数,只有当S back (Fa,Fb)大于等于a的时候Fa,Fb才相似。
8.浏览器相似性功能
浏览器相似功能。 浏览器相似性函数易于计算,因为只有两个功能需要评估: sbrow(Fa,Fb)= s4(Fa4,Fb4)+ s5(Fa5,Fb5) 其中s4与背景设置相同。 如果两个指纹的语言匹配,则功能s5分配1点,否则分配0。 当且仅当sbrow(Fa,Fb)=β时,指纹Fa和Fb才被认为是相似的,其中β是眉毛的相似阈值。对于浏览器,两个功能应完全匹配,因此β=2。较低的β将导致更宽松的检查,允许使用其中之一 这两个功能不匹配,这将导致攻击者更容易逃避。
4 实验
5 评估
6 讨论
6.1 指纹技术
6.2 被动应用程序指纹
DECANTeR可被认为是将基于主机的基于异常的检测付诸实践的重要步骤。结果显示出相对于现有技术的巨大改进,并且他们表明该方法是可行的。在当前阶段,我们认为DECANTeR的最佳用途是监视主机的子集,尤其是那些已知存储敏感数据或执行敏感活动的主机(例如,董事会成员工作站,管理员)。
6.3 用户案例:数据泄漏
我们相信DECANTeR非常适合检测数据泄漏,因为检测是独立于通信内容(即有效负载)进行的,而通信的内容通常被攻击者(例如,使用隐写术[36])混淆为主要机制,以避免通过网络进行检测。
从网络角度来看,无法确定特定通信是否被混淆时是否包含敏感数据。这是当前解决方案[2、12、14、25-27]失败的主要原因,因为当它们通过网络传输时,它们试图识别并停止敏感数据,但是数据已经被混淆并且无法识别。尝试检测异常的加密出站通信的方法[1、13]也失败了,因为它们依赖于加密或压缩的高熵值。但是,当恶意软件在加密后使用编码时,熵会急剧下降,并且不会检测到渗透。量化泄漏信息量的方法似乎更合适[6]。 DECANTeR将泄漏量化方法与应用程序指纹相结合,以检测新的软件泄漏数据。通过检测96.8%的信息窃取者样本,这种组合已显示出良好的性能,而当前最新的主机特定方法仅达到40%。
7相关工作
在本节中,我们讨论有关特定威胁和特定主机方法的相关工作。
Threat-Specific Approaches : 特定于威胁的方法。
1. 从恶意软件群集自动生成签名:研究人员提出了几种根据网络功能对恶意软件样本进行群集的方法,并从这些群集中生成签名[18,20-22]。 Rafique和Caballero提出了FIRMA [22],该工具可根据相似的协议(例如HTTP,SMTP和IRC)功能将恶意软件样本聚合到各个家族中,并为每个家族生成一组网络签名。 Perdisci等。 [20,21]提出了一种根据URL相似性将恶意软件聚类的技术,并从URL中提取子令牌,这些子令牌用于识别网络上的恶意通信。 Nelms等。 [18]提出了一种基于自适应模板的技术,该模板是根据对已知僵尸网络流量的观察而创建的,可用于检测实时网络中的僵尸程序,甚至识别它们属于哪个家族。 Zand等。 [33]提出了一种通过识别和排名恶意流量中最相关和最频繁的字符串来生成签名的方法。 Zarras等。 [34]提出了BOTHOUND,一种提取良性和恶意软件的所有标头链(即HTTP请求中的标头字段集)的系统,如果恶意请求的标头链与已知的良性软件不同,或者如果它们的标头链不同,则可以识别恶意请求。匹配,但其HTTP模板与现有的恶意模板匹配。 DECANTeR与这些技术不同,因为DECANTeR不会从已知的恶意软件样本集中创建签名。
2. 基于异常的特定威胁检测:几项研究研究了基于异常的技术来识别网络中的僵尸网络流量[4,10,11]。这些技术利用了僵尸网络显示的特定网络模式,并使用恶意样本来训练其检测模型。例如,同一僵尸网络感染的网络中的多个主机具有通用的通信模式。 Bartos等。 [3]建立了一个识别恶意行为的分类器,并对其进行了优化,使其对于恶意软件行为的改变是不变的。但是,这种方法在分类器训练期间也需要恶意软件。许多其他研究提出了基于异常的检测技术,该技术分析了可以代表特定威胁行为的不同特征。它适用于Web攻击[16],分布式拒绝服务[9],加密数据渗透[13]等环境。尽管我们也使用基于异常的检测方法,但我们既不使用特定功能来检测特定威胁,也不使用已知恶意样本来训练我们的模型。 DECANTeR专注于仅对良性行为建模,并通过观察异常来识别恶意流量。
Host-Specific Approaches: 特定于主机的方法。
此类别包含的方法仅对主机生成的正常网络行为建模,而无需了解威胁或已知恶意软件样本的其他信息。在[35]中,Zhang等。提出了一种基于用户意图的方法来检测隐形恶意软件的通信。提出的方法监视网络和主机活动,并创建一个触发关系图(TRG),该图将一组HTTP请求绑定到触发它们的用户操作。这种方法可以检测到恶意软件,因为其HTTP流量与用户活动无关。但是,它使用基于主机的信息(例如,进程ID),这在我们的系统模型之外。 WebTap [5]是一种根据不同功能(例如,标题信息,带宽,请求大小和请求规则性)创建用户浏览行为的统计模型的工具。 WebTap使用此信息来识别未知的HTTP通信并检测秘密通信。但是,它的误报率很高,为12%,因为该工具仅对浏览器流量进行建模,因此背景流量被视为异常。这使WebTap不切实际。 Schwenk和Rieck提出了DUMONT [24],该系统可检测HTTP上的秘密通信。通用方法类似于WebTap,但是它们使用一类SVM分类器来构建用户的HTTP流量模型。 DUMONT仅使用HTTP标头的几种数字功能,其最终目标是为每次使用描述“平均” HTTP请求。检测性能比WebTap差(平均检测率89.3%),但是DUMONT产生的误报数量要少得多,并且遭受的回避尝试也较少。 DECANTeR与WebTap和DUMONT有所不同,因为它使用一种新技术来建模良性流量:被动应用程序指纹识别。此外,与WebTap和DUMONT相比,DECANTER提供了一些机制来使指纹适应主机行为的变化。
8结论
在这项工作中,我们展示了如何对基于HTTP的应用程序进行指纹识别并用于检测异常通信。 在培训阶段可以使用这种技术而无需使用恶意数据,因此可以避免来自特定恶意软件样本的任何可能的偏差。 而且,所提出的技术独立于其有效载荷来检测异常通信,从而成为用于数据泄露和未知恶意软件的有前途的解决方案。 这将我们的工作与大多数现有解决方案区分开来,后者通常对网络流量进行建模以检测特定的攻击或恶意软件行为(从已知恶意软件的群集中提取),或尝试识别网络有效负载内的敏感数据。 我们已经在称为DECANTeR的系统中实施了该技术,并且我们对其进行了评估,与其他最新解决方案相比,它具有更好的检测性能。