大道至简:智能语义检测的武林 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
helloworld01
V2EX    站长

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

  •  
  •   helloworld01 2016-12-19 19:02:01 +08:00 2701 次点击
    这是一个创建于 3297 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    十几年里,基于规则的引擎一统江湖。直到现在,江湖上大多数的 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 服务系统所面临的各种安全挑战。

    大道至简,大有可为。

    目前尚无回复
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3059 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 12:28 PVG 20:28 LAX 04:28 JFK 07:28
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86