从粗放到智能 一个资深研发眼中的安全系统建设

经过在安全系统研发领域十多年的摸爬滚打和总结思考,个人认为安全研发的使命就是通过系统的建设,努力帮助安全人员与坏人的对抗变得更有效率。从粗放对抗阶段、到专业分工对抗阶段,到数据对抗阶段,再到智能对抗阶段,在不同的阶段,以不同的方式帮助安全人员,完成这一使命。

0x01

粗放对抗阶段

在这个阶段,安全专家与安全研发紧密合作。安全人员定制策略,开发根据策略,用规则文件和编码组合实现,然后上线,效果确定, 再修订策略。整体流程如下:

这个阶段问题:

1. 整个过程,各种人员沟通多配合多,每一次策略变更非常耗时,对抗效率低;

2. 如果安全人员参与策略编码实现,就会导致代码质量差,系统性能低,稳定性备受质疑(事实上很多系统都有安全人员参与开发);

3. 互联网发展业务方,更高的诉求:

3.1 业务侧, 海量用户请求,业务场景越来越形式丰富,越来越复杂,对于开发的专业性越来越高。特别是串连安全系统,其稳定性和性能(响应和并发)有极高的要求,任何细小的系统风险,都极可能带来重大业务损失。

3.2 攻击侧,攻击手法千奇百怪,需要针对不同的业务和不同的攻击手法,提供灵活的个性化安全检测策略。

3.3 互联网危害信息传播速度,危害的影响力等等,对安全对抗的响应速度,必须更快。

0x02

专业分工对抗阶段

能不能安全专家不需要了解系统实现,研发不需要理解具体的安全策略呢?研发把安全人员当成用户,把对抗当成需求。重新设计系统:

2.1 基于机制而不是策略

重新定位安全系统,安全系统是对抗的系统支撑力,基于某个环节的安全对抗需求,而不是某个具体的安全case。我们把这个简称“基于机制而不是策略”。

举个简单例子,以WAF请求打击为例,WAF打击系统将提供一套以规则为基础的拦截机制。本身不对攻击手法策略做过多假设。规则可以针对单HTTP请求部分,任意字段做组合逻辑判断(比如host=test.com且参数包含了aaaaa或者参数包含了bbbbbb), 并引导处理(阻断,弹验证码...)。

这里只是举个例子,规则也可能是以提供LUA脚本或者插件的形式,然后可以不需要改代码就能集成到系统。

那么,研发人员就无需深入理解每一次对抗的安全策略的具体内容。

2.2 DO分离

基于上面,安全研发把安全专家理解成系统使用用户,提供一个安全系统管理端(比如WEB)给安全专家。

安全专家能够通过管理端,完成策略编辑、测试、上线、结果报表等等, 无需再了解系统如何具体实现,以及整个过程无需和开发测试运维沟通。我们把这个简称“DO分离”或者“透明化”。

2.3 服务化

从系统角度,随着系统规模大,功能变强,怎么确保系统的简洁。按功能职责切分成子系统,保障每个子系统功能单一,然后以简单灵活的接口方式提供给其他子系统,其他子系统无需了解其细节,只需依赖其功能接口。

从安全防御的角度,安全是一个复杂的问题,一个安全系统无法解决所有问题,因此针对各个可能被攻击的环节,产生了对应的一些列安全系统,叫做防御体系。当然防御体系不仅仅是针对攻击环节,也包含攻击前检测、攻击中的监测、攻击后的检查等。

但是安全系统彼此需要借助对方的安全能力才能更好地运作。比如安全LOG分析发现某个IP在进行恶意攻击,就可以借助WAF对这个攻击IP进行封禁。

通过基于机制而不是策略、DO分离和服务化设计系统后,安全人员基本可以快速通过系统管理端,完成与“坏人”的安全对抗,无需和开发、测试、运维等交流,极大加速了对抗效率。

随着互联网的爆炸式发展,这个阶段我们又遭遇过哪些问题呢?

经验不够:互联网变化太快,靠安全专家根据攻击产生新的检测模型,效率太低,容易遗漏。

漏误两难: 如果只根据单纬度判断,策略太严格就容易误杀,策略太松就容易误报。因此,需要从更多更高的纬度来判断。

云计算: 攻击不仅来自于互联网,还来自云本身,传统的规则模型已经不能很好的解决问题,需要重新积累经验。

0x03

数据对抗阶段

这个阶段,打破各个环节安全系统建设壁垒,更加深入地从一个整体来看待和治理安全,数据从关联(eg:同主体)和定性的角度来综合判断。在这些新理念基础上建设安全系统。

数据关联,我们目前的做法主要从以下3个纬度来展开:

3.1 机器学习模型

通过一堆打标的样本数据,分为两部分,一部分通过训练得出分析模型,再用另外一部分验证准确度。

然后将模型发布到在线或离线系统,对用户请求或行为的操作主体等进行判断是否恶意。

3.2 行为模型

一系列相关请求聚集后能够发现单请求所不能很好解决的问题。比如:

3.2.1 聚焦

比如按用户聚焦。 用户IP在一段时间对某个CGI请求发起大量的请求,很可能是暴力破解、刷评论等;用户IP在一段时间对某IP多个端口尝试TCP链接,很可能此用户IP在进行端口扫描;用户IP在一端时间对某业务发起大量的恶意WEB请求,很可能此用户IP在进行扫描行为。

比如在业务点聚焦。以WAF为例大量不同用户的请求,在某业务某CGI,被同一条模型确认为恶意请求,那么这个模型极大可能是误报的。

3.2.2 离散化

比如不同用户的行为离散化。偏离大众行为的用户行为,往往有嫌疑,如果多个行为都偏离大众,嫌疑程度就会很大。

比如同用户行为离散化。某用户不可能每一个时间片刻的操作基本一样,如果绝大部分用户都是不规律的,那么这个“用户”很可能是机器人。

3.2.3 不可能

比如某用户IP在很短时间发出大量请求,那么不可能是人工操作;

比如某用户IP老访问某个业务不存在的CGI,那么此用户很有可能在尝试攻击。

3.2.4 行为

比如坏人入侵某台系统,通过他在服务端一系列“偏坏人”行为操作(比如对外大量传输数据,尝试弱密码登陆其他机器等),可以判断他就是坏人。因此,可以整理他的行为数据,通知安全人员进行处理等。

3.3 关联模型

更高层次来看待攻击者,比如我们确定某个IP是恶意攻击者,那么最近与之交互的服务器,都是有相应关联的。

那么对于相应的系统建设,目前我们的数据安全检测防护平台,从下往上依次是:

触点(数据采集节点,时时检测阻断节点);

数据分析支撑平台(主要是四大块:在线、离线、检索、可视化);

策略,模型操作平台(策略、模型管理、上线、效果等);

产品化。

0x04

智能对抗阶段

能否让安全系统自动完成安全检测和对抗,减少安全人员的投入?

随着“数据安全检测防护平台”日益完善,平台采集的广度和积累的历史数据越来越多,以及越来越多安全模型和决策模型,在某些安全场景完全可以代替安全人员做出决策。

在数据对抗时代、智能对抗时代,还在努力摸索中,欢迎一起交流!

本文作者曾先后任职于BAT,拥有近十年安全系统研发领域从业经验,现任默安科技首席架构师。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180307G1AA0Z00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券