前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Botwall - Bot Firewall??

Botwall - Bot Firewall??

作者头像
tyrchen
发布2018-03-28 15:11:05
1K0
发布2018-03-28 15:11:05
举报
文章被收录于专栏:程序人生

Mountain View的El Camino Real和Castro交界的地方,有一栋大楼,地址是:800 W El Camino Real,里面入驻了不少创业公司,是创业者的乐园,也是下一波millionaire/billionaire的孵化地。去年因为一个在ooyala工作的朋友的缘故,没少在这里蹭饭,后来ooyala被全资收购,朋友离开后,我便很少过来。直到春节和前同事老慕约饭,得知他所在的公司shape security也在这里。今天故地重游,我才惊异地发现,原来这里已经快成了web security的大本营:除了shape security,前老板Meng所在的vArmour(software defined security)也在这里。

老慕神采奕奕,与几个月前辞职时大为不同,明显在shape security又找到了开发的快乐,成长的快乐。四十多岁的Principal Engineer,搁别人都是在大公司养老的节奏,但他还是义无反顾地跳出舒适区,抛开了写了估计有十几二十年的C,开始使用从来没有写过的java。

谈起shape security,老慕两眼放光。Web已经是这个网络世界的中心 —— 围绕着web构建安全产品才符合帕累托最优。web安全是个很大的范畴,往哪里使力呢?研究表明61.5% [1] 的web请求(注意是请求,不是所有流量)都来自于bot,更恐怖的是,超过90%的登录页面源自bot。嗯,firewall这个烂大街的名字不叫了,咱高大上叫botwall。

最早的bot来源于搜索引擎。搜索引擎们为了掌握这个网络世界的脉络,派出不计其数的bot游走到虚拟世界的每个角落。后来这技术逐渐被骇客用来嗅探,侦查,以及入侵各种各样的网络。

当听到你的网站的登陆页面有90%都非人类访问时,是不是有种脊背发凉的感觉?

来自bot的攻击主要有几种:

1) Reconnaissance:通过bot寻找整个网站的薄弱环节,一般是后续进攻的起点。最典型的应用是bot使用搜索引擎的结果漫无目标地嗅探合适的攻击对象,一旦发现条件符合者(比如说满足某个OS漏洞,或者某个web framework的漏洞),就发动攻击,占领被攻击的服务器。如果被占领的服务器没有有价值的数据,这个服务器可能会变成一个肉鸡,成为攻击者的帮凶。

2) DOS:攻击者通过bot找到目标网站的薄弱环节,然后施加拒绝服务攻击。举个例子,通过上面所述的侦查,攻击者发现某目标网站的搜索页面响应所花时间要明显长于其他请求,于是假定该网站的搜索功能是个耗费CPU资源的事情,随后,攻击者通过产生大量不重复的搜索请求(重复的请求一般会匹配之前的缓存,达不到效果),让目标网站疲于奔命,无法正常响应搜索请求,甚至进一步波及到网站的其他服务(如果decouple做得不好的话)。这是一种不对等的攻击,如果结合大量肉鸡发起DDOS,效果惊人。

3) Account penetration:去年被脱裤的网站太多,骇客掌握个几十上百万的用户资料库不成问题。有些被脱裤的知名网站连密码都是没打马赛克的,攻击者通过这些资料,在第三方网站上尝试用户名/密码的组合,可以很快试验出大量可以可以被渗透的用户名/密码组合。

这些都是常见的不能再常见的攻击行为,可传统的防火墙除了简陋的黑名单,访问限速外几乎没有太好的办法。而这些实实在在的攻击,让企业不得不花费巨大的财力去填补漏洞。这就给了shape security这样专攻bot protection的公司巨大的市场机会 —— 2014年它们拿到40MUSD的C轮就是佐证。

其实shape security的核心技术 —— polymorphism —— 简单直观,其网站上就有介绍。说起polymorphism,学过OO编程的人都知道,不就是多态么!shape security所宣称的polymorphism是指网站的页面资源的多态。bot之所以能够流行,就是因为访问同一个url,总能得到相同的内容(比如说登录页),所以能够从容攻击。如果同样的请求,每次访问都返回不同的页面呢?

乍一听这里破坏了RESTful的原则,不利于SEO。但由于它保护的是系统的动态资源,如登录,搜索等包含表单的页面,对SEO本来价值也不大(搜索价值大些),不RESTful也还可以。

接下来的问题是:如果让用户的访问体验不受到丝毫的影响?这是个学问。

下图是polymorphism的一个例子:

我们看到,从form的action,到各个input field的id/name等都做了混淆,而且,每次请求,混淆的内容都不一样。当然,这只是个例子,仅仅这么做,肯定还不够,因为:

1) form在dom里的位置依旧固定,form里input的位置也是固定的。bot依旧可以找到正确的form进行攻击。不过,这个好解决,多加些无关紧要的页面元素进行随机混淆就好。

2) 聪明的bot能通过input的type(password),整个form里input的个数等等,猜测出form的作用。这就需要有些域进一步通过javascript进行混淆。比如说类型是password的域,只有javascript使能的情况下才会被加载在dom。这可以过滤几乎所有不处理javascript的bot。

有同学会说,费这么大劲,用recaptcha不就行了?recaptcha已经有了人力破解的手段 —— 一些黑客组织会通过bot把recaptcha付费众包出去,通过人力识别,所以单纯依赖recaptcha并不完全解决问题。

使用polymorphism的botwall看上去是个简单的解决方案,真做起来并不容易。找到页面中需要保护的信息不算难事(规则库),难的在于用户使用混淆后的action和各种奇葩的form field名的请求需要能够被正确转换回去,然后proxy给原始的网站。每个http request将页面送给用户后,页面上被转换的内容的状态都需要被记录下来,以便在进一步访问时使用;而要命的是,用户可能打开登录页面,然后吃个午饭回来再登录,所以状态怎么个记录和ageout是个问题;如果不ageout,无数的bot访问,直接导致botwall被DDOS,问题更严重。

想来想去,觉得这状态要么是通过javascript写在cookie中,在下次请求中带给botwall,或者干脆这种转换在算法上是可逆的,botwall无需保持状态就能恢复出原始信息proxy给web服务器。否则,怎么看botwall怎么像瓶颈所在。

就想了这么多。一些浅见,欢迎讨论。感觉这技术如果没做太多专利保护的话CloudFlare可以在它的系统里实现,那估计就没shape security什么事了。不过shape security既然已经做了三年,还有fortune 500的客户,就必然有足够的技术沉淀,也许我看到的只是表面。国内倒是应该有公司去做做这个方向,银行,金融,小的电子商务站感觉在这方面需求旺盛啊。现在不是p2p金融火么,就别趟那浑水了,学学levis,别人淘金的时候,咱做耐用的牛仔服。

说真的,山石,天融信,赛门铁克的朋友们,要不想想这个方向?别谢我,我叫雷锋。

1. 见: http://www.incapsula.com/blog/bot-traffic-report-2013.html

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2015-02-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序人生 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档