原文标题:Analysis of high volumes of network traffic for Advanced Persistent Threat detection
原文作者:Mirco Marchetti, Fabio Pierazzi∗, Michele Colajanni, Alessandro Guido Department of Engineering “Enzo Ferrari”, University of Modena and Reggio Emilia, Italy
原文来源:Computer Networks 2016
原文链接:https://fabio.pierazzi.com/papers/pierazzi_apt.pdf
1 摘要
本文提出的方法可以通过分析大量的网络流量,揭示与APT的数据窃取或其它可疑行为相关的弱信号。最终的结果是呈现一个对网络内部主机的排名,从而安全分析人员可以将注意力放在少数几个可以主机上。
2 简介
2.1 研究现状
传统的安全方案是基于模式匹配 的,但这种方法只能检测已知攻击,但对于经常利用未知漏洞、标准协议和加密通信的APT来说难以奏效。
现存的流量分析技术 只能够检测普通的攻击(如DDos),但是由于APT攻击者会模拟正常行为、仅入侵有限数量的主机,所以能够避免被检测到。
在大型的网络系统中,其产生的报警数量是非常庞大的,而且基于主机的日志(如系统调用)的收集和分析也会非常昂贵,因此本文着眼于网络流量进行分析
2.2 研究目标
注意,本文的研究目标不在于非常明确的值除哪台主机被攻击了。而是在一个具有上千台主机的环境中,能够挖掘出少数几台具有可疑行为的主机。
2.3 方法和贡献
本文提出的框架能过够收集并分析大量的流量,检测与数据窃取相对应的APT活动的关键阶段。通过检查每个主机的过去,并将其与其他主机进行比较,来评估每个主机的可以移动和位置。 最终输出是主机的排名列表,安全分析人员可以将其注意力集中在top-k可疑主机上。
效率提升 :通过分析网络流(network flow)而不是原始的流量数据
可扩展性 :由于不需要监视数据载荷(payload),该方法甚至能工作在加密的通信中
主要贡献如下:
描述了真实大型网络环境中的网络统计数据,并定义了一个模型,旨在检测APT相关活动,并特别关注数据窃取;
定义了一系列算法,通过评估多维特征空间中主机随时间的移动和位置,对疑似APT的活动进行打分
设计并实施了一个prototype,将其应用于一个包含10K台主机的环境中
3 相关工作
我们的方法是,将基于与已知APT知识的启发式 方法,和能够捕获可疑网络活动的行为统计模型 相结合。
基于现在的研究情况,我们可以从下面三个方面来考虑。
3.1 APT检测
分析APT案例、提出形式化描述(7-phase、攻击金字塔)、基于图分析、异常检测系统、数据窃取检测
3.2 僵尸网络检测
对僵尸网络的检测是分析大量具有相似行为的主机,而APT受害网络中可能仅包含少数受害主机,所以不能用检测僵尸网络的聚类分析方法来检测APT受害网络。
另外,二者的感染策略也是不同的。
3.3 内部威胁
内部威胁与APT攻击也有相似之处,但不同在于内部威胁在进行数据窃取时,可能不需要通过网络,因此检测内部威胁多集中于主机日志或者蜜罐策略上。而本文提出的框架,可以轻松集成到内部威胁检测系统中。
4 APT生命周期
下面我们分析APT的各个攻击阶段,阐述其为什么能够用网络流量来分析:
reconnaissance phase:寻找网络的可能入口点,会进行扫描操作
compromise phase:在目标系统在安装恶意软件RAT:Remote Access Trojan、 Remote Administration Tool
maintaining access phase:RAT联接C&C服务器来接受攻击者的指令。值得注意的是,这个阶段的网络连接是由受害者主机发起的,而不是攻击者。这样做的目的,一是骗过防火墙;二是攻击者因此会减少被检测到的机会,这是因为从外部网络下载内容会被高度怀疑。
lateral movement phase:攻击者想要获得其它主机的访问权限。如RAT可能会进行内部的扫描,或者试图与组织内部的其它主机建立新的连接。
data exfiltration phase:被窃取的数据被发送到攻击者控制的远程服务器。这个过程有可能是一次性迅速(burst)完成的,也有可能是慢速(low-and-slow)的。
5 APT检测的挑战
不平衡的数据(Imbalanced data):在巨大量的数据中,APT只占很少一部分,因此使得攻击难以检测
Base-rate问题:APT相关的事件非常少,而且时间跨度很长,因此会带来恒奥的误报率。
缺乏公开数据
加密和标准协议(例如HTTPS)的使用会阻碍常用的网络安全解决方案,例如基于签名的入侵检测系统。
下图是10k个主机环境中的网络统计情况:
(a)和(b)分别是对同一分布的不同描述,从图(a)中可以看出该分布属于重尾分布 。该图表示从内部主机向外部IP地址建立连接的数量,事件跨度是一天。如在图(a)中,第一个直方图表示有大约2M个IP地址仅仅被连接了一次,第二个直方图表示有大约220K个IP地址仅仅被连接了3次。因此我们可以得出结论 :大多数外部主机仅被连接一次或几次 。
出现这种现象的原因与云计算 的广泛应用有关。即使是在很短的时间内,与外部地址连接的总数也相当高,但是大部分的外部地址仅仅被连接了很少几次。这样的结果是不希望看到的,这样的连接情况会连接多个不同的云计算提供商。
针对该问题前人的一些方法:
为所有的云计算提供商设置白名单;但这样攻击者很容易创建一个云账号来作为C&C服务器或者数据窃取点
基于阈值:效果不佳,因为无法为这种重尾分布设置合适的阈值
聚类:这会将数据聚成两类,一类是头一类是尾
箱线图规则(boxplot):这对于离群值检测无效,因为基础分布不是高斯分布
于是,本文提出的方法将单个主机的行为建模,将其作为多重特征空间中的特征点;然后比较主机的统计信息,包括它们的过去以及所有其他内部主机的统计信息;然后为每个内部主机分配一个分数。
6 框架概览
本文所提方法的特点如下:
基于流量信息,这些数据通过网络探针可以很容易地获得
提取并分析流量记录,这使得存储和计算消耗都有所降低
通过下面两方面来识别执行可疑活动的主机:
提出了一些特征,用于识别可能与数据窃取有关的主句
所提出的“排名”的方法,不依赖于深度包检测,因此可以运行在加密的流量上
本文所提出的系统架构如下图所示,其工作过程包括5个阶段:
(1)流量收集和存储 :不使用原始的流量数据(raw traffic data),而是使用流量记录(flow record);每条记录包含从IP头部中提取的数据,包括:源、目的地址和端口号,协议类型。这样做对系统性能有很多好处:
之前我们说,假设所有与外部的连接都是由内而外发起的,所以我们仅仅考虑出站流量,即从内部发往外部的流量。而从外部发往内部的可以用传统的IDS来检测
(2)特征提取 :提取与数据窃取相关的特征,特征在每台主机上每隔时间T计算一次。特征提取工作由专用服务器完成。
(3)特征归一化 :将不同的特征归一化,因为每个特征都有不同的重尾分布,因此处于比较目的,必须将其归一化。这一步的实现由参考文献[45]中的归一化度量完成,这种方法专用于归一化具有不同特征的重尾分布。
(4)可疑分数计算 :对于每台主机,每个时间
t
i
t_{i}
t i ,该阶段涉及与特征空间中主机行为有关的统计信息的计算,为此我们考虑三个点:
当前时间
t
i
t_{i}
t i 时,主机的特征值
历史窗口W下(
t
i
−
1
−
W
t_{i-1-W}
t i − 1 − W 到
t
i
−
1
t_{i-1}
t i − 1 ),同一主机的标签值的质心 (centroid)
时间
t
i
t_{i}
t i 时,所偶有主机的特征值的质心
历史窗口表示主机过去的行为。考虑了最近过去(recent past )的运动方向,因此沿罕见方向的运动被认为是可疑的。
(5)排名 :可疑程度通过以下方式的线性组合进行评估:
内部主机相对于特征空间质心的归一化距离
运动幅度的增长百分比
相对于所观察的网络环境中所有内部主机的运动而言,运动方向的不可能度。
我们注意到,第2、3、4个阶段可以在每台主机上独立并行执行 。
7 特征提取和归一化
7.1 特征提取
定义:
H
I
H_{I}
H I 和
H
E
H_{E}
H E 分别表示内部和外部主机的集合
对于每个内部主机
h
∈
H
I
h \in H_{I}
h ∈ H I ,特征向量
x
t
(
h
)
\mathbf{x}_{t}(h)
x t ( h ) 由下面的元组定义:
x
t
(
h
)
=
(
x
t
1
(
h
)
,
x
t
2
(
h
)
,
…
,
x
t
N
(
h
)
)
\mathbf{x}_{t}(h)=\left(x_{t}^{1}(h), x_{t}^{2}(h), \ldots,x_{t}^{N}(h)\right)
x t ( h ) = ( x t 1 ( h ) , x t 2 ( h ) , … , x t N ( h ) ) ,其中
x
t
i
(
h
)
x_{t}^{i}(h)
x t i ( h ) 对应时间
t
t
t 时,内部主机
h
h
h 特征向量的第
i
i
i 个组成部分的值;另外
x
t
i
(
h
)
x_{t}^{i}(h)
x t i ( h ) 每隔一个取样周期
T
T
T 计算一次,据此来建立一个时间序列。
我们将时间粒度
T
T
T 设置为1天,原因如下:
APT攻击时间跨度较长,设置太细的时间粒度的话,会产生很多噪声
每天产生一次排序列表,有助于分析人员进行分析
下面,我们定义了一系列的特征:
numbytes :由内部主机上传到外部地址兆字节(megabytes)数 。用来监视上传字节的偏移(deviations of uploaded bytes),因为这有可能跟数据窃取有关。例如,如果主机的upload字节数增加了十倍,则它可能参与了APT相关的活动。
numflows :内部主机发起的连接到外部主机的flow数量。用来监视由内部主机发起的数据传送。由内部主机发起数据泄露有如下两个原因:(i)向外的连接大多数防火墙都不会拦截;(ii)外部主机发起的连接会很容易被传统的IDS蓝饥饿
numdst :内部主机发起的连接中,外部IP地址的数量。用来检测那些包含许多变化的目的IP的异常行为,这些连接同样是由内部主机发起的。例如。进行通信的外部IP数量稳定,但是upload字节数或者连接数却急剧上升,这就很有可能发生了与数据窃取相关的APT活动。
我们意识到,正常情况下,numflows和numdst几乎是同步增减的。虽然在机器学习中,建议我们尽量选取不相关的特征来获取更多信息,但是我们的问题并不是一个分类问题,因此我们选择两个相关的特征,来捕获那些违反了numflows和numdst之前预期关系的主机。
下图是本文所用数据的特征分布情况:
下图是特征空间的3D表示,
通过监视主机的移动和他们与过去、与特征空间质心之间的举例,来检测异常主机。
7.2 特征归一化(Normalization)
为了公平地比较内部主机的移动和位置,必须对其分布进行归一化。
一种方法是range归一化,即将数据映射为0到1之间的数。但是对于重尾分布来说,这种方法会导致大部分数据都接近于0。
为了解决这个问题,本问提出了双边四分位数加权中位数 (two-sided quartile weighted median ,QWM )指标:
Q
W
M
(
D
)
=
Q
75
(
D
)
+
2
⋅
Q
50
(
D
)
+
Q
25
(
D
)
4
Q W M(D)=\frac{Q_{75}(D)+2 \cdot Q_{50}(D)+Q_{25}(D)}{4}
Q W M ( D ) = 4 Q 7 5 ( D ) + 2 ⋅ Q 5 0 ( D ) + Q 2 5 ( D )
其中,
Q
k
(
D
)
Q_{k}(D)
Q k ( D ) 表示数据集
D
D
D 中的
k
k
k 分位点。该度量既考虑了中位数(
Q
50
Q_{50}
Q 5 0 ),又考虑了由第一和第三四分位数表示的数据方差。这使得QWM具有鲁棒性,并独立于数据分布,同时也适用于归一化后的重尾分布。
对于 t 时刻主机 h 的特征向量
x
t
\mathbf{x}_{t}
x t ,将其归一化之后用
x
‾
t
\overline{\mathbf{x}}_{t}
x t 表示。归一化操作为对其每个组成部分
x
t
i
,
i
∈
{
1
,
2
,
…
,
N
}
x_{t}^{i}, \quad i \in\{1,2, \ldots, N\}
x t i , i ∈ { 1 , 2 , … , N } 做如下操作:
x
ˉ
t
i
=
x
t
i
Q
W
M
(
x
t
i
)
\bar{x}_{t}^{i}=\frac{x_{t}^{i}}{Q W M\left(\mathbf{x}_{t}^{i}\right)}
x ˉ t i = Q W M ( x t i ) x t i
下图使用箱线图(boxplot)分别展示了QWM归一化前后的数据情况,其中numbytes的计量单位是MB,其余的都是纯数字:
8 计算可疑分数(s1、s2、s3)
每台内部主机 h 在时间 t 时刻的归一化特征向量为(
x
t
\mathbf{x}_{t}
x t 就可以表示在3D特征空间中的一个点):
x
t
=
(
x
t
1
,
x
t
2
,
x
t
3
)
\mathbf{x}_{t}=\left(x_{t}^{1}, x_{t}^{2}, x_{t}^{3}\right)
x t = ( x t 1 , x t 2 , x t 3 )
其中
χ
t
i
\chi_{t}^{i}
χ t i 表示numbytes(
χ
t
1
\chi_{t}^{1}
χ t 1 ),numdst(
χ
t
2
\chi_{t}^{2}
χ t 2 ),numflows(
χ
t
3
\chi_{t}^{3}
χ t 3 )。
在每个时刻 t 我们为每台主机计算下面的三个可疑分数:
s
t
1
s_{t}^{1}
s t 1 :距特征空间质心的距离
s
t
2
s_{t}^{2}
s t 2 :特征空间中的移动幅度
s
t
3
s_{t}^{3}
s t 3 :特征空间中运动方向的可能性
(注意三个特征向量和三个分数之间并不是一一对应)下面分别进行讨论。
8.1 距特征空间质心的距离(固定时刻t)
首先计算分数
s
t
1
s_{t}^{1}
s t 1 ,通过该分数可以确定一台主机在时刻t,是否位于多位特征空间的异常区域内。
令
X
t
{X}_{t}
X t 为时间 t 时,所有内部主机在特征空间中位置的集合(注意这里用大X表示):
X
t
=
{
x
t
(
h
)
:
h
∈
H
I
}
\mathbf{X}_{t}=\left\{\mathbf{x}_{t}(h): h \in H_{I}\right\}
X t = { x t ( h ) : h ∈ H I }
下面定义 t 时刻特征空间的质心
c
(
X
t
)
\mathbf{c}\left(\mathbf{X}_{t}\right)
c ( X t ) :
c
(
X
t
)
=
(
∑
h
x
t
1
(
h
)
∣
X
t
∣
,
∑
h
x
t
2
(
h
)
∣
X
t
∣
,
∑
h
x
t
3
(
h
)
∣
X
t
∣
)
,
h
∈
H
I
\mathbf{c}\left(\mathbf{X}_{t}\right)=\left(\frac{\sum_{h} x_{t}^{1}(h)}{\left|\mathbf{X}_{t}\right|}, \frac{\sum_{h} x_{t}^{2}(h)}{\left|\mathbf{X}_{t}\right|}, \frac{\sum_{h} x_{t}^{3}(h)}{\left|\mathbf{X}_{t}\right|}\right), h \in H_{I}
c ( X t ) = ( ∣ X t ∣ ∑ h x t 1 ( h ) , ∣ X t ∣ ∑ h x t 2 ( h ) , ∣ X t ∣ ∑ h x t 3 ( h ) ) , h ∈ H I
其中
x
t
i
(
h
)
x_{t}^{i}(h)
x t i ( h ) 表示主机h特征向量
x
t
\mathbf{x}_{t}
x t 的第 i 个特征;
∣
X
t
∣
\left|\mathbf{X}_{t}\right|
∣ X t ∣ 表示
X
t
\mathbf{X}_{t}
X t 的
C
a
r
d
i
n
a
l
i
t
y
Cardinality
C a r d i n a l i t y (集合中元素的个数)。
因此,质心centroid也是一个特征向量 ,他表示所有主机特征向量的分量的平均值 。
最后,我们为每个内部主机h计算特征向量
x
t
\mathbf{x}_{t}
x t 与特征空间质心
c
(
X
t
)
\mathbf{c}\left(\mathbf{X}_{t}\right)
c ( X t ) 之间的欧式距离,从而得出
s
t
1
s_{t}^{1}
s t 1 分数:
s
t
1
=
d
t
(
x
t
(
h
)
,
c
(
X
t
)
)
=
∑
i
=
1
3
(
x
t
i
(
h
)
−
c
i
(
X
t
)
)
2
s_{t}^{1}=d_{t}\left(\mathbf{x}_{t}(h), \mathbf{c}\left(\mathbf{X}_{t}\right)\right)=\sqrt{\sum_{i=1}^{3}\left(x_{t}^{i}(h)-c^{i}\left(\mathbf{X}_{t}\right)\right)^{2}}
s t 1 = d t ( x t ( h ) , c ( X t ) ) = ∑ i = 1 3 ( x t i ( h ) − c i ( X t ) ) 2
8.2 特征空间中的移动幅度(引入时间维度)
下面我们需要确定一种距离度量 (其实s1分数也是一种距离度量),该距离度量用于测量内部主机在特征空间中移动的可疑性。
x
t
\mathbf{x}_{t}
x t 从 t-1 时刻到 t 时刻的移动,可以在欧氏空间中用距离向量来表示:
x
t
−
x
t
−
1
=
(
x
t
1
−
x
t
−
1
1
,
x
t
2
−
x
t
−
1
2
,
x
t
3
−
x
t
−
1
3
)
\mathbf{x}_{t}-\mathbf{x}_{t-1}=\left(x_{t}^{1}-x_{t-1}^{1}, x_{t}^{2}-x_{t-1}^{2}, x_{t}^{3}-x_{t-1}^{3}\right)
x t − x t − 1 = ( x t 1 − x t − 1 1 , x t 2 − x t − 1 2 , x t 3 − x t − 1 3 )
但这种定义方法的缺点是:假设主机A通常的数据上传量是10GB,与标准值仅仅相差1G;而主机B 通常数据上传量是几MB,而某时刻突然变为了100MB,这样主机A的距离向量显然要大于主机B。但是主机A的数据上传量几乎没有增加,而主机B的数据上传量增加了几十倍,显然B更有可能跟数据窃取有关。这种问题是由数量级偏差造成的。
此外仅仅将其与 t-1 时刻相比较也是不合适的。因此设置一个时间窗口 是合适的选择,它可以反映主机不断发展的行为基线(evolving behavioral baseline)。
定义
β
t
−
1
(
W
)
\beta_{t-1}(W)
β t − 1 ( W ) 为特征向量集合
{
x
t
−
1
,
…
,
x
t
−
1
−
w
}
\left\{\mathbf{x}_{t-1}, \ldots, \mathbf{x}_{t-1-w}\right\}
{ x t − 1 , … , x t − 1 − w } 的质心,
W
W
W 是时间窗口的大小,
β
t
−
1
(
W
)
\beta_{t-1}(W)
β t − 1 ( W ) 定义如下:
β
t
−
1
(
W
)
=
(
Q
50
(
∪
j
x
j
1
)
,
Q
50
(
∪
j
x
j
2
)
,
Q
50
(
∪
j
x
j
3
)
)
\beta_{t-1}(W)=\left(Q_{50}\left(\cup_{j} x_{j}^{1}\right), Q_{50}\left(\cup_{j} x_{j}^{2}\right), Q_{50}\left(\cup_{j} x_{j}^{3}\right)\right)
β t − 1 ( W ) = ( Q 5 0 ( ∪ j x j 1 ) , Q 5 0 ( ∪ j x j 2 ) , Q 5 0 ( ∪ j x j 3 ) )
其中
j
∈
{
t
−
W
−
1
,
…
,
t
−
1
}
j \in\{t-W-1, \ldots, t-1\}
j ∈ { t − W − 1 , … , t − 1 } ,并且
β
t
−
1
(
W
)
\beta_{t-1}(W)
β t − 1 ( W ) 中的每个特征,对应特征空间
x
t
\mathbf{x}_{t}
x t 的每一个特征
χ
t
i
\chi_{t}^{i}
χ t i 在时间窗口W内的平均值。
下面定义移动向量
m
t
\mathbf{m}_{t}
m t ,表示特征点
x
t
\mathbf{x}_{t}
x t 和质心
β
t
−
1
(
W
)
\beta_{t-1}(W)
β t − 1 ( W ) 的相对不同:
m
t
=
x
t
−
β
t
−
1
(
W
)
β
t
−
1
(
W
)
=
(
x
t
1
−
β
t
−
1
1
(
W
)
β
t
−
1
1
(
W
)
,
x
t
2
−
β
t
−
1
2
(
W
)
β
t
−
1
2
(
W
)
,
x
t
3
−
β
t
−
1
3
(
W
)
β
t
−
1
3
(
W
)
)
\begin{aligned} \mathbf{m}_{t} &=\frac{\mathbf{x}_{t}-\beta_{t-1}(W)}{\beta_{t-1}(W)} \\ &=\left(\frac{x_{t}^{1}-\beta_{t-1}^{1}(W)}{\beta_{t-1}^{1}(W)}, \frac{x_{t}^{2}-\beta_{t-1}^{2}(W)}{\beta_{t-1}^{2}(W)}, \frac{x_{t}^{3}-\beta_{t-1}^{3}(W)}{\beta_{t-1}^{3}(W)}\right) \end{aligned}
m t = β t − 1 ( W ) x t − β t − 1 ( W ) = ( β t − 1 1 ( W ) x t 1 − β t − 1 1 ( W ) , β t − 1 2 ( W ) x t 2 − β t − 1 2 ( W ) , β t − 1 3 ( W ) x t 3 − β t − 1 3 ( W ) )
m
t
\mathbf{m}_{t}
m t 的定义,可以用来表述一个主机从它原先的位置偏离了多少。
最后,用
m
t
\mathbf{m}_{t}
m t 的模(magnitude)来表示
s
t
2
s_{t}^{2}
s t 2 :
s
t
2
=
∥
m
t
∥
=
∑
i
=
1
3
(
x
t
i
−
β
t
−
1
i
(
W
)
β
t
−
1
i
(
W
)
)
2
s_{t}^{2}=\left\|\mathbf{m}_{t}\right\|=\sqrt{\sum_{i=1}^{3}\left(\frac{x_{t}^{i}-\beta_{t-1}^{i}(W)}{\beta_{t-1}^{i}(W)}\right)^{2}}
s t 2 = ∥ m t ∥ = ∑ i = 1 3 ( β t − 1 i ( W ) x t i − β t − 1 i ( W ) ) 2
该分数可以来表示主机相对于其最近的历史情况,其位置改变了多少。
8.3 特征空间中运动方向的可能性
该分数的设计考虑了移动向量的方向,即
m
t
\mathbf{m}_{t}
m t 的三个坐标是如何协同变化的,不常规的方向应当被视作可疑行为。
用单位向量 (Unit vector)
m
^
t
\hat{\mathbf{m}}_{t}
m ^ t 来表示
m
t
\mathbf{m}_{t}
m t 的方向:
m
^
t
=
m
t
∥
m
t
∥
=
(
u
t
,
v
t
,
w
t
)
\hat{\mathbf{m}}_{t}=\frac{\mathbf{m}_{t}}{\left\|\mathbf{m}_{t}\right\|}=\left(u_{t}, v_{t}, w_{t}\right)
m ^ t = ∥ m t ∥ m t = ( u t , v t , w t )
下图展示了1000台主机的
m
^
t
\hat{\mathbf{m}}_{t}
m ^ t 单位向量:
我们注意到,其分布是不均匀的,一些区域的分布密度要远高于其它区域,这意味着朝着某些方向的运动要比其它方向更为常见。
为了更方便地理解其分布,我们使用球面坐标(spherical coordinates):
ρ
=
u
t
2
+
v
t
2
+
w
t
2
\rho=\sqrt{u_{t}^{2}+v_{t}^{2}+w_{t}^{2}}
ρ = u t 2 + v t 2 + w t 2
φ
=
arccos
(
w
t
u
t
2
+
v
t
2
+
w
t
2
)
\varphi=\arccos \left(\frac{w_{t}}{\sqrt{u_{t}^{2}+v_{t}^{2}+w_{t}^{2}}}\right)
φ = arccos ( u t 2 + v t 2 + w t 2
w t )
θ
=
arctan
(
v
t
u
t
)
\theta=\arctan \left(\frac{v_{t}}{u_{t}}\right)
θ = arctan ( u t v t )
其中,
ρ
≥
0
\rho\geq0
ρ ≥ 0 表示向量的长度(magnitude),
0
∘
≤
φ
≤
18
0
∘
0^{\circ} \leq \varphi \leq 180^{\circ}
0 ∘ ≤ φ ≤ 1 8 0 ∘ ,
−
18
0
∘
≤
θ
≤
18
0
∘
-180^{\circ} \leq \theta \leq 180^{\circ}
− 1 8 0 ∘ ≤ θ ≤ 1 8 0 ∘ 。因此所有的单位向量都有
ρ
=
1
\rho=1
ρ = 1 ,只剩下了两个变量。
下图展示了在特定的
(
φ
,
θ
)
(\varphi,\theta)
( φ , θ ) 下,内部主机数量的直方图:
显然,大多数内部主机仅沿可能方向的一小部分移动。 因此,朝着不太常见方向的运动代表着可疑行为。特别是,我们可以观察到两个具有相当高密度的空间区域。
为了更好地理解上述直方图,我们将其表示为2D投影图:
接下来定义分数
s
t
3
s_{t}^{3}
s t 3 :
s
t
3
=
1
−
Pr
(
m
^
t
)
s_{t}^{3}=1-\operatorname{Pr}\left(\hat{\mathbf{m}}_{t}\right)
s t 3 = 1 − P r ( m ^ t )
其中
Pr
(
m
^
t
)
\operatorname{Pr}\left(\hat{\mathbf{m}}_{t}\right)
P r ( m ^ t ) 表示特征空间中特定方向的可能。
1
−
Pr
(
m
^
t
)
1-\operatorname{Pr}\left(\hat{\mathbf{m}}_{t}\right)
1 − P r ( m ^ t ) 为其对立事件,称之为在特征空间中向某个方向移动的不可能性(unlikelihood)。因此该分数越高,主机的移动方向就越可疑。
8.4 计算最终分数
最终分数
S
t
S_{t}
S t 是三个分数的线性组合:
S
t
=
∑
j
=
1
3
(
δ
t
j
⋅
s
t
j
)
S_{t}=\sum_{j=1}^{3}\left(\delta_{t}^{j} \cdot s_{t}^{j}\right)
S t = ∑ j = 1 3 ( δ t j ⋅ s t j )
其中$\delta_{t}^{j}
是
和
对
应
分
数
相
关
的
归
一
化
权
重
。
因
为
三
个
分
数
有
不
一
样
的
界
限
、
规
模
和
分
布
,
因
此
我
们
使
用
Q
W
M
定
义
是和对应分数相关的归一化权重。因为三个分数有不一样的界限、规模和分布,因此我们使用QWM定义
是 和 对 应 分 数 相 关 的 归 一 化 权 重 。 因 为 三 个 分 数 有 不 一 样 的 界 限 、 规 模 和 分 布 , 因 此 我 们 使 用 Q W M 定 义 \delta_{t}^{j} $来将它们归一化:
δ
t
j
=
∑
k
,
k
≠
j
Q
W
M
(
s
t
k
)
∑
k
Q
W
M
(
s
t
k
)
,
k
∈
{
1
,
2
,
3
}
\delta_{t}^{j}=\frac{\sum_{k, k \neq j} Q W M\left(s_{t}^{k}\right)}{\sum_{k} Q W M\left(s_{t}^{k}\right)}, k \in\{1,2,3\}
δ t j = ∑ k Q W M ( s t k ) ∑ k , k = j Q W M ( s t k ) , k ∈ { 1 , 2 , 3 }
我们框架的最终输出是一个内部主机列表,该列表关于最终分数
S
t
S_{t}
S t 按降序排列。
9 实验评估
评估环境为一个具有10K台主机的网络,将本文的框架在其中运行了五个月。
评估的目的主要是下面三个方面:
时间和存储空间方面的性能消耗
检测能力
对于不同类型主机、不同大小文件泄露的敏感度
9.1 实验测试平台和框架性能
回顾之前在chapter 6中谈到的检测框架的五个步骤:流量收集和存储、特征提取、特征归一化、可疑分数计算和排名。每个步骤分别如下实现:
流量收集和存储 由nprobe 实现,它可以用来在大型网络环境中收集流量记录(flow records)。
特征提取 、特征归一化 用Go语言实现
可疑分数计算 、排名 用Python实现
每隔时间T=1天进行一次采样,也就是说每天生成一次排名。时间窗口大小W=14天。
所收集到的流量记录如下所示:
性能和内存需求:
9.2 检测手工注入的数据窃取
首先随机选择某一天,并且主机在这一天的数据上传量和平均水平相当。然后我们执行两个实验来模拟数据窃取,数据窃取量分别为40GB和9GB。
经过计算,关于分数
s
t
3
s_{t}^{3}
s t 3 中的直方图,我们选择的直方图块数的最优大小是:
θ
\theta
θ 十个bin,
φ
\varphi
φ 五个bin。
下面是对于两个数据窃取的检测结果:
9.3 敏感度分析和对比评估
若数据泄露主机140天以来的平均排名大于50,那么对于只能分析50台主机的系统来说,就难以检测到威胁。
接下来我们在不同类别的主机上,验证所提方法的有效性。
我们利用前面提到的“每台内部主机上传的字节数(per-day)”,其分布为重尾分布。实验室长为140天,每一天,我们从中选出七个具有不同上传量的主机,分别对应一个特定的分位数:0.01, 0.05, 0.25, 0.50, 0.75, 0.95, 0.99 (即将所有的主机按照数据上传量由少到多排列,r0.01表示第百分之一个主机,因此这些主机的正常数据上传量是依次递增的)。这使得我们可以评估不同的低、中、高上传者。然后,我们向这7台主机中分别注入信息窃取攻击,每天每台主机的信息窃取量包括以下八种:50 MB, 100 MB, 200 MB, 500 MB, 1 GB, 2 GB, 5 GB and 10 GB。
该实验允许我们对所有可能的信息窃取,进行全频段的分析,从low-and-slow到burst数据泄露。
普通的方法:仅仅按照数据上传量来给主机进行排名。接下来,我们分别使用我们的排名方法和普通的排名方法,对7种主机、八种数据大小全部计算了分数。对比图如下:
每一列代表不同的主机,每一行代表不同的数据大小。每个单元格表示我们的方法优于普通方法的比率。比如99.29%表示在140天中,有139天本文提出的方法要优于普通方法。(i.e.会把可疑主机放在更高的排名位置)
图中我们可以看出r0.75和r0.95因数据大小不同,结果也不同。但是r0.99偏爱常规的检测方法,这是因为r0.99平时上传的数据量比较大,因此常规方法比较容易将其放在排名较高的位置(而不管数据泄露的多少);但是本文的方法将数据泄露量作为日常数据上传的增量时,就显得微不足道了,所以较难检测出数据泄露的存在。
因此可以得到本文方法的优点:
相较于普通方法,本文的方法在大多数情况下表现较好
它将原本不会被考虑的主机标注为了可疑,因为普通的方法经常会让大数据上传者占据主导地位。(废话?小数据上传者的检测还不容易吗?)
下面,分别为两种方法计算排名的中位数 :
每个单元的数据:rx.xx表示140天中每一天对应的主机,该主机每天根据计算分数会有一个排名,每个单元的数表示这些排名的中位数。如42.50就表示在140天中,至少有一半的时间,其排名是高于42.5的。
根据不同的环境,分析威胁的能力也不同。假设第一种环境每天能分析50台主机,我们在途中用灰色表示出来;第二种环境每天能处理5台主机,我们在图中用加粗字体表示出来。比如53.50未被标位灰色,因为一共能处理50台主机,而有一半以上的情况该主机的排名是在50名开外的,在这些情况下、在第一种环境中查表查不到这台主机,因此我们认为这种情况是我们的方法没有有效处理的情况。
9.4 结果总结
相对于普通方法(common-ranking)的提升在于:
对于大部分主机,都可以快速(10K host、140millions flows,in 2 mins)识别low-and-slow数据窃取
对于中、小量的数据上传者来说,检测效果明显优于普通方法
不会像普通方法那样,让大数据量上传者始终占据排名前列
即便是中、小量的数据上传者,也可以被识别为最可疑的对象
对比Table 9和10的结果,可以看出common-ranking在数据窃取量低于500MB每天时,在大多数情况下都无法检测。
此外,根据Table 9,如果攻击者想绕过我们的检测系统,那么需要落在未被标位灰色的单元格内。这要求攻击者一方面要了解内部网络是数据传送情况,将数据窃取点选在r0.5-r0.95的主机之间,这不仅取决于单台主机,同时也取决于网络中其他主机的数据传送量;另一方面要控制每天的数据窃取大小。因此想要绕过我们的系统是非常困难的。
10 思考
10.1 存在的问题
仅仅三个特征未免过于简单
实验环境中的主机在评估期间一定会遭受APT攻击吗?人为加入攻击
没有时间复杂度分析
对于大量数据上传者主机上的数据泄露检测效果不佳
10.2 未来的研究方向
对于使用其它安全资产的关联系统,比如来组IDS的data flows和alerts,可以集成到我们的系统中。