你好,游客 登录
背景:
阅读新闻

大道至简:智能语义检测的武林

[日期:2016-12-20] 来源:极客头条  作者: [字体: ]

  在宗派林立的检测技术武林中,语义化检测引擎近两年已成热门绝学。它的力量在于,让攻击检测更精确、更聪明、更人性化。

  “智能语义检测”这门武艺的江湖故事,要从它的前辈“基于规则的检测引擎”开始说起。

  十几年里,基于规则的引擎一统江湖。直到现在,江湖上大多数的WAF是基于规则的WAF。其原理是每一个会话都要经过一系列的安全检测,每一项检测都由一个或多个检测规则组成,匹配了检测规则,请求就会被认为非法而拒绝。

  听起来很简单?其实对于运维者和企业客户来说,规则检测的软肋就在于他的“道法复杂,不变通”。

  基于规则的WAF能有效的防范已知安全问题。但安全运维者首先必须知道攻击的全部特点,根据这些特点制定规则。所以基于规则的WAF需要一个强大的规则库支撑,并且规则库需要及时更新来应对最新的攻击。

  这时,问题就来了。基于规则的WAF,因为规则的描述能力有限,有些攻击方法和攻击场景无法通过规则来描述完备。我们举一个例子,

  如果“大道至简!”是一串攻击请求,当WAF成功防御过一次后,就会更新一个规则 ——但凡包含“至”、“简”“!”这三个特征的,就可能是攻击!—— 但如果下次接到了一个正常请求:“至繁归于至简!”,WAF也会把它归到攻击那一类,这就产生了我们所谓的误报。

  同时,攻击者会通过复杂的变形来完成攻击。这时,规则又是无法穷尽所有的攻击变形的。还是刚才那个例子,当上次的攻击者做了一个“变体”,将攻击请求变成了“大道无为”,那么WAF就检测不到了,也就是所谓的漏报了。

  总而言之,基于规则的检测不能有效防御未知的威胁,比如攻击变体,0day攻击。除此之外,对于企业安全运维人员来说,正则引擎的维护压力大,成本高,各派武林人士都在YY:“有没有一种检测引擎和算法,不需要人去维护规则,也可以应对千变万化的攻击!?”

  智能引擎检测这个武林绝学,就在这样的江湖背景下,千呼万唤始出来。

  

图片描述

 

  攻击行为语义化 —— 离门之剑,以不变应万变

  语义检测引擎的内功在于,会把自然语言中的语义、顺序和场景,纳入考虑范围;知道一个特征,在这个场景、顺序下可能是攻击,在另一个中则不是。延续刚才“大道至简”的例子:

  规则引擎:

  只用“至”、“简”“!”来判定一个请求是否是攻击。漏报误报率高

  智能语义检测引擎:

  “大道至简!”是攻击

  “至繁归于至简!”因为场景和顺序不对,不是攻击

  通过机器学习,能分辨出“大道无为”是“大道至简”的变体

  这样一来,大家就可以一目了然看出二者的根本区别了。智能化语义检测引擎,就像手握一把离门剑,“每一招中皆能在刹那间作二十五种变化,独步剑林。”(参考萧逸《十二神拳》)。对于防范未知威胁,0day攻击尤其有效。

  

图片描述

 

  那么,智能语义化检测的武功究竟如何使出来?我们再往下探究。

  第一招,归一

  把同类攻击行为的同类行为特征归并起来。即,同一类的攻击行为和攻击特征聚合为一个攻击特征,这就是归一化的过程。攻击的多个行为特征组成特定的排列组合,来表示同一类攻击,这样我们就可以用自然语言的语义来理解并且描述同一类攻击。攻击特征的排列组合就是攻击的语义化。

  把同类攻击行为的同类行为特征归并起来。即,同一类的攻击行为和攻击特征聚合为一个攻击特征,这就是归一化的过程。攻击的多个行为特征组成特定的排列组合,来表示同一类攻击,这样我们就可以用自然语言的语义来理解并且描述同一类攻击。攻击特征的排列组合就是攻击的语义化。

  这样就能抛却各种复杂的攻击和它们的变形,把攻击行为语义化了。

  以下是一个sql注入攻击实现语义化的例子,先对sql语句进行归一化的语义分析,然后在异常攻击集中查找分析结果,若找到说明是sql注入攻击。

  

图片描述

 

  比如以下这条规则:

  (select|from|\band|\bor|\bxor|=|,|;)[\s\+\(`)*?(sleep[\s\+`]*?\(|version[\s\+`]*?\(|pg_sleep[\s\+`]*?\(|extractvalue[\s\+`]*?\(|updatexml[\s\+`]*?\(|dbms_pipe.receive_message\(|st_latfromgeohash\(|st_longfromgeohash[\s\+`]*?\(|analyse[\s\+`]*?\(|gtid_subset[\s\+`]*?\(|gtid_subtract\(|st_pointfromgeohash\(|convert[\s\+`]*?\(|md5[\s\+`]*?\(|count[\s\+`]*?\(|char[\s\+`]*?\(|benchmark[\s\+`]*?\(|hex[\s\+`]*?\(|@@version|db_name[\s\+`]*?\(|user[\s\+`]*?\(|cast[\s\+`]*?\(|concat[\s\+`]*?\(|unhex[\s\+`]*?\(|floor[\s\+`]*?\(|length[\s\+`]*?\(|ascii[\s\+`]*?\(|substring[\s\+`]*?\(|substr[\s\+`]*?\(|substring_index[\s\+`]*?\(|instr[\s\+`]*?\(|left[\s\+`]*?\(|right[\s\+`]\()

  通过归一化后可以描述为:select from 敏感关键字 函数运算(),可以用“abcde”五个字符表示,即这类攻击用语义可描述为:具有敏感关键字和函数运算的sql类型表达式。复杂的规则维护,瞬间变得简单了。

  第二招,攻异

  仅仅防范已知的WEB安全问题,是被动且滞后的,基于异常的防护会更加有效。

  异常防护这一招的基本观念是:根据合法应用数据检测建立统计模型,以此模型为依据判别实际通信数据是否是攻击。

  理论上,此招一出,系统就能够探测出任何的异常情况。这样,就不再需要规则库,0day攻击的检测也不再是问题了。

  例如,阿里云云盾的WAF智能语义异常攻击集,是基于云盾自己的运营数据,对正常的Web应用建模,从正常的模型里边区分出异常的情况,再从繁多的Web攻击中提炼出来的异常攻击模型,形成异常攻击集。

  

图片描述

 

  制胜之招:无影

  未来,智能语义化检测引擎这门绝学,将进化成实时大数据分析引擎。招式进化的关键,就在于算法的优化,计算的能力和成本,还有数据聚类和清洗的技术,等等。

  江湖风云变幻,大数据的时代已经成为主流。WAF防御的技术如果想要继统治武林,向智能化、语义化的方向发展则是必然。未来,可以预见大部分的WAF检测和防御都会通过机器学习自动来完成,再加上很少的人工确认工作,就可以确定异常攻击集 —— 从容应对现实中的安全威胁以及未来的安全威胁,从根本上解决Web服务系统所面临的各种安全挑战。

  大道至简,大有可为。

  

 

图片描述
收藏 推荐 打印 | 录入:admin | 阅读:
相关新闻      
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款