2017 qcon 上海专门设立了“直击黑产,业务安全的攻与防”专题,通过这次专题的了解和学习,让我对黑产的攻防有了更深入认识。

1. 安全防护趋势

2017 qcon 上海专门设立了“直击黑产,业务安全的攻与防”专题,通过这次专题的了解和学习,让我对黑产的攻防有了更深入认识。有一张图可以充分说明黑产防护这一发展过程:

从最初的黑白名单,后来是规则引擎,再到现在各公司都开始采用机器学习进行风控。在安全防护升级的道路上,我觉得就是从静到动,再到自主学习的一个过程。

比如黑白名单、设备指纹,这一类安全防护,都是基于固定的数据源进行防护,针对给定ip提供访问权限,针对黑名单进行防护等。这一类防护,实现容易且工作流程简单明了,但是数据的及时更新比较困难。

规则策略则高级一些,给定一些规则、攻击规律,编写特定的规则分析引擎,触发攻击规则的拦截,否则放行。在实现上也比较容易,只需要根据安全经验定制规则、编写正则即可,同时可以实时生效。缺点是,随着业务的复杂,安全防护也变得复杂,规则库最终会走向臃肿、难以维护,同时黑客可以根据规则进行猜解,存在被绕过的可能。

再看看现在,各大公司都在安全防护方面引入了数据挖掘、机器学习,最大的优势是可以自主学习攻击行为,进行攻击预测,且可以随着攻击的升级而自主升级。

那么,是否像黑白名单、规则策略就过时了呢?其实不然,每一种安全防护方法论,都有其使用价值,需要根据特定场景来使用。比如,某个业务不复杂且面向用户有限,但是流量巨大,这时采用黑白名单是比较好的选择。而对于一些通用型waf,其实就是采用规则库来实现。

公司需要根据自己的特定业务场景,选择不同的安全防护,而不能一味追求大而全的安全防护。

2. 机器学习

机器学习应用到网络安全领域是当前的趋势,针对黑产的流量检测,机器学习已经显示出了巨大威力。

但是,机器学习目前并不适用所有安全领域,这是为什么呢?百度安全首席架构师给了下面这张图。虽然,他在图中强调了有监督学习和无监督学习在安全领域的应用。但是我认为,我们能做好的(注意,我强调的是“能做好的”)其实只有监督学习,其它三种包括无监督学习、迁移学习、强化学习还不能很好的用到安全领域。

监督学习,也就是学习从A到B,从输入到输出的映射。监督学习,我们需要大量的标注数据,数据量一定要够大,包括好的数据和具有攻击行为的坏数据,利用这些数据进行机器学习,最终应用到安全防护体系中。目前,大部分企业所提到的机器学习应用到网络安全领域,基本都是监督学习。而监督学习,需要标定大量训练数据,这一开销也是巨大的。

非监督学习,目前仅在自然语言处理这一领域有较好的成果,主要是因为机器学习的不确定性,特别是在安全防护领域,有些攻击行为很难进行划分,这就导致最终分析结果的可靠性,因此当前还没有较成功的案例。(百度安全同事,在会议最后也提到了各国科学家在不确定性方面的研究进展,并给出了一个未来预期“无监督学习与监督学习相结合”)

迁移学习,举个通俗的例子,比如图像识别技术,通过迁移学习应用到医学影像诊断上。比如湖南卫视的《我是未来》,就有一期提到告别胃镜之苦,讲述的就是机器学习应用到医学影像诊断上,推荐大家去看看。

和监督学习需要大量标注数据相比,迁移学习可以从现有的数据中迁移知识,用来帮助将来的学习,极大的降低了人力物力成本。而对于攻击流量,由于业务的特殊性和时效性(比如做活动薅羊毛),很难采用迁移学习。

强化学习,和监督学习一样需要足够多的数据,甚至比监督学习还要多的数据作为支撑。目前在游戏和机器人方面,强化学习已经发挥了很多作用,对于游戏我们可以设计算法不断重复游戏过程并获取数据,对于机器人我们也可以建立模拟器,让机器人不断重复来获取无限数据。对于网络安全领域,我觉得可以利用强化学习的一种思路是,在特定业务下,不断模拟用户行为,并结合一系列攻击特征进行学习,以达到自我不断重复获取数据。就好比周伯通的左右互搏,不过实现起来的话,路还很长远。

3. 结构化数据

机器学习在很多领域都开始创造价值,而网络安全防护领域算是起步晚一些的,在这些众多价值中,不难发现几乎清一色的是结构化数据。

机器学习所创造的价值,主要源自结构化数据。

对于黑产防护而言,也主要是利用结构化数据,进行机器学习,这是爱奇艺安全团队提供的风控系统示意图。安全画像、实时特征、离线特征、环境特征,都是利用结构化数据。

除了黑产行为,我们再看看当前网络安全的攻击行为,常见的网站请求攻击比如sql注入、xss、csrf、目录遍历等,网络协议漏洞有心脏出血、ssl协议漏洞,

还有诸如struts框架系列漏洞,软件漏洞包括redis,操作系统漏洞有dirtycow,以及更多的业务逻辑漏洞如验证码破解、未授权访问等,列举这么多,想说明的一点是:

黑客攻击数据杂而繁多,且很多属于非结构化数据。

虽然结构化数据的机器学习已经带来了很多成功案例,但是对于安全领域,非结构化数据比结构化数据更重要。非结构化数据的机器学习,还处在初期阶段,急需行业的自我提升。

最近出差去招聘,发现很多研究生和博士都选择在人工智能领域深造,这是可喜的。

4. 行业的颠覆

2011年8月,谷歌收购摩托罗拉。

2013年5月,柯达提出申请破产。

2015年上半年,任天堂在争议中被迫转型。

还有很多例子比如诺基亚,这些企业的衰落,最主要的因素是科技进步。

再说个场景,flash安全大神,现在还好找工作吗?

未来,随着电动汽车、无人驾驶的发展,会不会大众、通用、丰田等某一家企业倒下,这也是说不准的。

再看看我们安全行业,我觉得随着机器学习、人工智能的发展,有些安全岗位的工作,未来会由人转向机器来做。比如昨天网易发布的招聘信息:

没错,安全检测依赖工具,而未来工具却不再依赖人。所以,如果我们只会所有常见安全工具的使用,未来很可能就是被淘汰的那一批人。

作为安全从业人员,有必要时刻了解行情,特别是新型领域,要多学习多思考,而不是仅仅局限在自己那一块安全领域里。

以上所说,仅个人主观想法。

最后,附上所有安全资料:https://pan.baidu.com/s/1slyogjj

2017qcon大会的一点想法(安全人才如何不被淘汰?)的更多相关文章

  1. Installshield关于.NET安装时需要重启动的处理办法,以及延伸出的重启后继续安装的安装包的一点想法

    原文:Installshield关于.NET安装时需要重启动的处理办法,以及延伸出的重启后继续安装的安装包的一点想法 很多朋友做安装包的时候,所打包的软件需要.NET Framework之类的环境,他 ...

  2. 【MM系列】SAP S/4 HANA BP创建客户/供应商的一点想法

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP S/4 HANA BP创建客 ...

  3. 大三CS狗一点想法

    本文非技术文 十点半游戏的代码大概完成了1/3,想到今晚提早验收完汇编实验,还是副院长亲自验的,似乎很看好我的样子,然后问我的方向,导师和参加的项目.聊了几句后结束了对话,不禁又引发了我的一些思考. ...

  4. 关于WEB项目的一点想法

    有点失落.迷茫,差点在上班的时候发了火.原因是之前离职的一位同事,在代码里不加注释,而且百般偷懒,致使很多应该的验证没有验证,很多应该考虑到的情况没有考虑.因为是老员工,我相比他来说是新员工.气势上总 ...

  5. 系统架构:Web应用架构的新趋势---前端和后端分离的一点想法

    最近研究servlet,看书时候书里讲到了c/s架构到b/s架构的演变,讲servlet的书都很老了,现在的b/s架构已经不是几年前的b/s架构,其实b/s架构就是web应用开发,对于这样的架构我们现 ...

  6. C#缓存的一点想法及测试

    项目开发中,用到了缓存,其中的一个列表项,可能要多线程处理,就有了下面的想法,具体的问题在代码中有详细说明,见下文. static void Main(string[] args) { 测试缓存的想法 ...

  7. 关于java中用itext导出word的一点想法

    这几天在项目组只做了很少的事情,主要还是自己不认真地说.我的部分是要负责用itext导出word文档这一块,之前看到大佬们做出了EXCEL部分觉得很是惊奇,就像刚刚接触HTML一样的感觉.但是毕竟自己 ...

  8. 【learning】[待完善]关于辛普森公式的一点想法

    [吐槽] 嗯一开始接触到这个东西其实是因为某道凸包的题目好像可以用这个奇妙的方法来算 但其实了解也不是很深,只是觉得这个东西十分有意思, 所以先稍微写一下自己的想法,了解更多之后慢慢完善 [正题] 首 ...

  9. Docker 监控的一点想法

    目前项目内部署了docker,于是涉及到关于监控的事情,参考一些经典实例以及一些自己的想法,总结一下思路. 1.关于监控的内容 监控宿主机本身 监控宿主机本身还是比较简单的,同其他服务器监控类似,对c ...

随机推荐

  1. python 字符编码处理问题总结

    Python中常常遇到这种字符编码问题,尤其在处理网页源代码时(特别是爬虫中): UnicodeDecodeError: ‘XXX' codec can't decode bytes in posit ...

  2. C++ 重载操作符- 02 重载输入输出操作符

    重载输入输出操作符 本篇博客主要介绍两个操作符重载.一个是 <<(输出操作符).一个是 >> (输入操作符) 现在就使用实例来学习:如何重载输入和输出操作符. #include ...

  3. C#根据URL生成签名

    代码: using System; using System.Collections.Generic; using System.Linq; using System.Security.Cryptog ...

  4. CentOS安装配置Tomcat-7

    安装环境:CentOS-6.5安装方式:源码安装软件:apache-tomcat-7.0.29.tar.gz下载地址:http://tomcat.apache.org/download-70.cgi ...

  5. idea升级maven工程jar包版本和解决jar包冲突

    原来用过eclipse的都知道,想要升级maven工程的jar包版本或者解决jar包冲突,直接在pom文件下的dependency hierarchy视图下右击冲突的jar包,将其exclude掉,然 ...

  6. [C++] static member variable and static const member variable

    static member variable[可读可写] 可以通过指针间接修改变量的值 static const member variable[只读] 压根就不可以修改变量的值,会报错

  7. java简单例子介绍IOC和AOP

    IOC和AOP的一些基本概念 介绍 IOC 一.什么是IOC IoC就是Inversion of Control,控制反转.在Java开发中,IoC意味着将你设计好的类交给系统去控制,而不是在你的类内 ...

  8. datatable:dt.page(dt.page()).draw(false)

    dt.page(dt.page()).draw(false);该方法可以直接返回到当前页,不用重新绘制table 描述 分页是DataTables的一个核心功能,并且该方法提供对表格显示页面的外部控制 ...

  9. HDU 4514 湫湫系列故事――设计风景线 (树形DP)

    题意:略. 析:首先先判环,如果有环直接输出,用并查集就好,如果没有环,那么就是一棵树,然后最长的就是树的直径,这个题注意少开内存,容易超内存, 还有用C++交用的少一些,我用G++交的卡在32764 ...

  10. vSphere5.5体系结构

    1.vSphere5.5体系结构 vSphere5.5作为云集算操作系统,可以虚拟化服务器.存储.网络在内的整个IT基础架构,将这些架构转化为易于管理的虚拟化!vSphere5.5从逻辑上,可以划分为 ...