按:本文为热心读者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} |
{xx,xxx} |
{}或[ ] |
账户C |
[ ], 频率 |
{a,b,c} |
{A,C} |
{} |
{}或[ ] |
…… |
每个账户历史上的行为记录可以构造成一个行为基调。一旦某个行为特征远远偏离这个基调,则判断为异常。同前面一样,时间元素的取值有两种可能,一个是时段(用区间符号[]表示),一个是频率。
位置、方式、操作三个元素分别都可以有多个非数字取值,因此是个元素的集合。资源的取值可能是数值的,也可能非数值。这种检测规则通常用于检测外部用户的异常交易行为,因此这里用一个交易行为基调作为实例说明(账号A基调实例)。但是这个检测思想也可以应用与内部用户的访问行为监控(账号B基调实例)。
账号A基调实例:[12:00,13:00],[17:30,20:00];{超市A,支付宝,超市B}; {POS,onlinebank}; {支付,转账}; [0,500]
在这个实例中,账户1银行卡交易行为基调是:通常在中午休息或晚上下班以后购物,购物方式基本是在超市A(工作单位附近)和超市B(住家附近)POS机刷卡,或是通过支付宝网络购物,还有在网上支付一些账单,通常单次交易金额一般都不超过500元。
账号B基调实例:[9:00,17:00];{IP:222.222.222.222}; {CLI, 远程桌面}; {下载,上传,打开创建}; {文件,数据库表},[0,50M][0,0.5M]
套用交易行为基调的方法进行内部行为检测时,有时需要对某些操作赋予两个资源取值,例如下载操作,不仅要检测下载对象,还要包括下载数量。在这个实例中,下载量是50MB, 上传量是0.5MB。
该类技术模型相关的发展趋势主要在于更加丰富的增加IT操作行为的属性、系统输入数据的类型及关联分析,目前主要通过流量日志数据及6元组元素来定义异常行为访问规则,后续增加IT操作行为属性及更丰富的输入数据类型,将更好从3到7层监控异常访问行为。
三、设计与实现
在实际的实现过程中,基于6元组来定义异常有两个切入点,一个是基于访问路径的异常,一个是基于访问频率的异常。基于访问路径的异常,很好理解,比如说历史上A和B经常访问C的1433端口,突然有一天D也来访问C的1433端口,这在历史记录中是从来没有的,就算一个访问路径上的异常;基于频率的异常也很好理解,比如加入域的办公电脑每天访问域进行认证的次数也就几次,突然有一天一个IP不断的向域进行认证尝试,超过我们系统设置或者学习到的阈值,也算异常。
如何实现这套系统?得先拿到流量进行分析,按时间、源IP、源端口、目标IP、目标端口、应用协议这六个元素来标识访问关系及统计访问频率,通过自学习模式生成白名单和profile规则,按照我们的管控规则自定义黑名单,对后续流量按照白名单、黑名单、profile规则的顺序进行匹配,对高风险事件进行实时告警。整个系统的处理逻辑如下图:
看起来比较简单,真正实现并纳入日常运维,中间的工作量还是蛮大的。结合我们实际的运维经验,有几个功能点需要考虑加入到系统中:
-
资产与业务的导入:在系统上线前,企业肯定已有大量的信息资产,需要支持批量导入功能,否则工作量巨大;
-
协议识别:包括常见的远程桌面、SSH、FTP等,还要能识别一些远程管理类工具包括pcanywhere、vnc等,甚至还需要结合客户网络环境定制一些特征识别一些应用;
-
自我学习:系统在线上可以进行自我学习,通过一段时间的积累可以生成一些规则供安全人员参考;
-
入侵防护功能:常见的扫描行为、流行的ms08067类漏洞利用、常见的sql注入、XSS攻击,传统的IPS都已经具备了,但针对我们提到的隐蔽隧道(ping tunnel、dns tunnel等)的发现,还是要依赖于入侵防护模块进行定制开发;
-
SOC集成:发现的异常或可疑事件,需要与SOC对集,纳入日常安全运维进行跟踪与优化;
-
Sniffer联动:对于产生的异常或可疑事件,可以自动或手动将对应的原始包抓回来以便进行更深入的分析;
-
处理性能:系统镜像的流量越多,对系统本身的性能要求就越高,处理延时可能会导致今天的事件明天才能看到,这样是无法满足要求的。
四、实际效果
该系统从2011年开始开发上线,截止到现在已经运行4年之久,这中间我们的红蓝对抗是在不断的进行中,我们的系统功能也是在不断的改进中。
增加协议识别后,基于协议与端口做一些规则,即可以发现一些可疑的行为,比如远程桌面运行在非3389端口,SSH运行在非22端口,如下图:
还可以识别到一些管理类协议比如pcanywhere、vnc,以及为了绕过我们检测的vpn等,如下图:
增加隐蔽隧道识别后,可以发现渗透测试人员的ptunnel行为,如下图:
以上截图都是内部真实渗透产生,所以隐去了一些IP相关信息。最后,还是想说的是,APT防护比拼的还是资源,投入大量人力物力财力去建设这些基础的安全系统,不见得适合所有的企业,请各位自行参考。
下篇预告:
金融企业安全建设探索之安全合规之路
----------------------------------------
想加入金融业企业信息安全群请联系微信公众号“君哥的体历”,后台留言,微信号+公司名称,验证身份后入群。
人生最美好的莫过于各种经历和难忘的体验,过程比较痛苦的,结果都还比较好。如果大家和我一样,在企业做安全中遇到各种颇为“痛苦”的体历,过后你一定会感谢和怀念这份体历的。
附注:
-
聂君,信息安全从业人员,十余年金融行业信息安全从业经历,默默无闻。好读书,不求甚解。性格开朗,爱好足球。
-
本订阅号文章是个人对工作生活的一些体验和经历分享,站在不同角度和立场解读会有偏差,见仁见智,不求正确统一,但求真、善、美。
图片说明:深圳市花----三角梅 (簕杜鹃)
长按识别二维码,和我交流。
本文始发于微信公众号(君哥的体历):金融企业安全建设探索之异常访问检测系统
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论