按:本文为热心读者xysky投稿,授权“君哥的体历”公众号转载。
一、前言
之前写了一篇关于APT防护的文章(注:本公众号前篇《金融企业安全建设探索之天眼系统》),基于终端层面的。这篇为大家带来的是基于网络上的一种发现APT攻击的思路。结合该思路,我们定制开发了一套系统并在办公网、业务网、互联网区域都进行了部署,在接近4年的实际运维过程中不断进行优化与改进,在内部多次红蓝对抗中发挥了很大的作用。
二、思路
设想一个场景:渗透人员通过分行A的一台机器访问了分行B的某台服务器的远程桌面,然后调出shift后门进一步控制系统。再设想一个场景:办公网与业务网通过防火墙进行了限制,但允许icmp协议通过。渗透测试人员为了在办公网直接控制业务网的机器,采用了一种pingtunnel的隧道技术来绕过防火墙。
以上的场景,依靠传统的IPS技术是发现不了这样的行为的,但往往真正的APT攻击就隐藏在这中间。有没有办法从网络访问异常上进行发现呢?什么算是异常?得有一定的模型和算法。
一个IT操作行为的属性包括:行为人身份(Identity)、发生时间(Time)、发生位置(Location)、行为方式(Means)、行为的类型(操作,Action)、行为对象(资源,Resource)。这些属性就构成了完整一个IT操作行为抽象模型(简称ITLMAR模型)。下面分别对每个属性作进一步的解释:
-
行为人身份:在IT系统中,表述身份的就是系统账号。
-
发生时间:时间属性中包含两层概念,一是个行为发生的时刻,另一个是行为发生的频率。但频率是一个间接属性,无法从单个行为日志中直接提取。
-
发生位置:IT操作行为发生位置信息包括:IP地址、ATM终端号、POS终端号、业务终端编号等。
-
行为方式:即以什么渠道完成的操作。例如在IT系统中,常见的访问方式有:专用客户端软件、中间件(对数据库访问通常采用中间件)、命令行(CLI)、远程桌面等。
-
行为对象:即各种IT资源,如文件、数据库表、服务器主机、数据项等。
-
行为操作:操作行为大体可以分为交易操作(转账、取现、存款、支付)、数据库操作(数据库)、文件操作三大类。
对异常行为的检测有两种方式,一种是基于行为的特征的检测,不针对特定的账号或账号群组。还有一种是面向特定用户的,即基于用户基本行为模式的检测。从前面的论述中,我们看到行为模型由6个元素构成。检测规则可以单独针对其中的某一个或某几个,这样通过组合计算,可以罗列出全部可能的规则模板,共63种(如下面的表格所示)。其中√符号表示该模板检测所对应的元素。∀符号表示任意,即该规则不检测所对应的元素。
规则模板
|
身份
|
时间
|
地点
|
方式
|
操作
|
资源
|
规则模板
1
|
√
|
∀
|
∀
|
∀
|
∀
|
√
|
规则模板
2
|
√
|
√
|
∀
|
∀
|
∀
|
∀
|
规则模板
3
|
√
|
√
|
√
|
∀
|
∀
|
√
|
规则模板
4
|
√
|
√
|
√
|
√
|
∀
|
∀
|
规则模板
5
|
√
|
√
|
√
|
√
|
√
|
∀
|
规则模板
6
|
∀
|
√
|
√
|
√
|
√
|
∀
|
规则模板
7
|
∀
|
∀
|
√
|
√
|
√
|
∀
|
规则模板
8
|
∀
|
∀
|
∀
|
√
|
√
|
∀
|
……
|
|
|
|
|
|
|
规则模板
63
|
∀
|
∀
|
∀
|
∀
|
∀
|
√
|
为了更好的说明检测规则模板的含义,这里用几个检测规则实例加以说明。
-
规则模板1实例:除中间件和admin账户外,其它任何身份的对数据库的访问都是违规的。在很多IT系统中,只允许两个账号对数据库的访问,即中间件的账号和维护用账号admin。因此其它账号访问数据库,一律看作违规行为。这条检测规则只关注身份和资源两个因素。
-
规则模板3实例:admin账户只能在系统维护时间段从IP地址是111.111.111.111的维护终端访问数据库,其他行为都是违规的。时间也是检测规则必须考虑的因素,有些操作一般只发生在特定时间段内发生,并且只能从某个特定的维护终端主机上进行操作。
-
规则7实例:除了通过堡垒主机以远程桌面方式进行的更新操作,其它都是违规的。在某些IT系统的维护规定中,要求维护终端先登录到堡垒主机上,再用远程桌面的方式进行维护操作。
上述63种规则模板是数学组合的结果,并非都可以给出实例,原因是可能存在重复包含或无现实意义的情况。例如所有元素都检测这样的检测规则现实中就很少见。
基于账户基调(profile)的检查规则是面向特定账户(群组)的,因此检测规则只包含除身份以外的另外5个元素(见下表)。
基调
|
时间
|
位置
|
方式
|
操作
|
资源
|
账户
A
|
[ ],
频率
|
{a,b,c}
|
{A,C}
|
{xx,xx}
|
{}
或
[ ]
|
账户
B
|
[ ],
频率
|
{a,b,c}
|
{A,C}
|