青藤云安全

青藤COO程度对话八位安全专家,探讨Webshell检测之道

2020-06-15

6月10日,“雷火齐鸣 最燃公测”闭幕技术沙龙圆满落幕。大会重头戏——圆桌论坛上,青藤COO程度与宜信安全资深架构师陈奇、顺丰SFSRC负责人曾冰、WIFI万能钥匙安全经理Tiger、VIPKID安全专家JackUni、OPPO高级运维安全工程师南洋、携程高级安全运营工程师Tara Ye、雷火公测冠军zsp、季军dean一同,展开了一场有关Webshell检测前沿科技的精彩探讨。

以下为圆桌论坛问答实录

青藤COO程度(主持人):首先请各位安全专家、白帽选手谈一谈在Webshell攻防中的经历。

VIPKID安全专家JackUni:首先Webshell肯定是挺大的安全风险,这个风险具体多大,我觉得得看一下具体的场景。实际上,我接触到真正的Webshell入侵成功案例比较少。以VIPKID为例,假如说文件上传,一般是直接上传到云存储平台OSS,这种场景下,即使是把恶意文件上传成功之后也很难解析。但从整体的企业安全建设来看,一旦出现Webshell就相当于攻击者获取到web服务的权限了,所以如果有一款比较精准、高效的Webshell检测引擎,确实是非常重要的。

WIFI万能钥匙安全经理Tiger:在针对于服务器的典型入侵案例中,攻击者一般是利用web应用的漏洞,或者低权限的小马,继续上传更多的利用工具,比如大马、反弹Shell等进行提权,从而获得系统更高权限,一般是横向渗透,获得内网其他权限,进行信息搜集,最后导致勒索,或者数据泄露这样的实际危害。从这个路径中可以看到除了业务自身的漏洞需要安全开发去把关以外,更重要的入口就是Webshell,这是攻击者要打开大门的重要步骤,如果能在这步进行有效的检测和防御的话,攻击链条就会被打断,攻击想要继续的话,也会付出更多的成本,实际上对于大部分攻击者而言,到了这一步就已经放弃了。这些角度来讲的话,Webshell检测和识别还是非常有用的,也是企业中面临非常大的风险。对我个人来说,通过本次我们学习了很多新颖的姿势,有一些是利用了PHP底层内核的绕过姿势,很让人大开眼界,在以往的常规绕过里面很难见到,感谢青藤,感谢各位参加的白帽子。

顺丰SFSRC负责人曾冰:从甲方安全运营的角度来说,Webshell差不多是后面一层了,已经到这层的情况下,前面的那部分WAF等的分析已经全部绕过了,在这层我们是非常关注对Webshell检测的。如果HIDS这类产品,不能满足我们对Webshell检测要求的情况下,对甲方来说这HIDS是不合格的。这次参加青藤的测试活动也是希望青藤在这方面能够取得突破,帮我们解决这样一个比较大的难题,结果证明有一定的突破了。

OPPO高级运维安全工程师南洋:其实,很多公司刚开始做的时候都是基于规则去检测,比如正则、哈希等,再往后就Webshell的检测效果来看,基于规则的检测是没有泛化能力的,于是开始去尝试机器学习,或者基于行为检测。我们做机器学习、深度学习等AI检测的时候,往往发现就像玄学一样,我们并不知道过程是怎样的,只知道指标、结果在变好,并不知道某一个样本为什么会被检测出来,参数对它有什么样的影响,所以不管是基于规则、还是机器学习都会有各种弊端。本次,青藤的方式是将多种检测方式结合起来,而其他公司是基于规则+机器学习,规则只能检测非常明显的、很直接的Webshell;机器学习则去检测一些泛化能力的、未知的Webshell,亦或是把多个机器学习的引擎做拼接。青藤做的引擎非常不错的,是基于AST语法树去还原句子的本质,这种方式是非常有意思的方式,最终看到的效果也是非常不错的。我这些年一直在探索用不同的方法和技术来检测Webshell,这次参加青藤的活动,大开眼界,选手们表现非常好,雷火检测的效果也是非常好。

携程高级安全运营工程师Tara Ye:刚刚大家说了挺多,我就说一点甲方安全运营的感受,Webshell目前普遍的情况是基于规则做Webshell的判断,在我们运营的过程当中,比较关心的是不知道什么时候会出现,也不知道什么时候检测得到,所以是相当于检测到和检测不到都会有点担心的情况出现。青藤雷火引擎感觉是给了一点耳目一新的感觉,有一个新的思路。

宜信安全资深架构师陈奇:我之前做过河马查杀,也是Webshell的查杀工具,很荣幸参加青藤的活动,确实学到很多新的姿势,对于查杀的理解更深一步。我的理解是对于甲方来说,甲方也有很多种,这和企业架构和具体业务类型有关系。小一点的企业是做得比较集中一点,就比如说数据库和代码是一块的,前后端是一块的,这样受到Webshell入侵的话危害更大,直接可以连到库,或者直接造成更大的危害。对于大厂有资源的话可以做到站库分离,前后端分离,刚才有嘉宾讲到有OSS,或者CDN把静态资源存下来,这样会缓解一些Webshell的危害。另一方面,除了攻击路径上,从分类上来说,大厂倾向Java体系,可能是危害主要是JSP方面的,小一点的可能用成熟的PHP、CMS,或者是各种应用开发系统,对于小一点的甲方企业PHP类的危害会多一些。我们也是青藤用户,雷火引擎的出现,对我们是很好的消息,期待有尽快的本地化升级。我之前做过河马查杀,也是Webshell的查杀工具,很荣幸参加青藤的活动,确实学到很多新的姿势,对于查杀的理解更深一步。

雷火公测季军dean:Webshell具备灵活多变的特性,是黑客最常用的后门手段,一直是甲方最大的安全风险。刚才万能钥匙的虎哥说得特别好,入侵链条被打断,我补充一点,就是我认为一个点是入侵行为能被及时发现,黑客在外围搞了好长时间,终于拿到Webshell了,结果被发现了,这是最后一步,却被发现了这是重点。哪怕是可以上传Webshell,外面有什么漏洞,到这一步了结果被发现了,这个是偷鸡不成蚀把米,是非常有意思的痛点。也是甲方关注的点,外围可能哪个漏洞修不好,但是黑客搞进来能被及时发现,这是甲方非常关注的一点。

我前段时间在搞入侵检测,研究了很多的Webshell查杀技术,调研了很多产品,尤其是里面用到动静结合的污点分析技术,发现实践起来真不容易,确实非常难,特别是污点传播里的引释流分析,这里说一点特别佩服青藤的研发大佬,能把这个东西做出来,而且做那么强大。这次,我们能绕过不是说我们技术多厉害,我认为是我们发现了有一些函数,这个引擎有一些污点函数库,除此之外还有引擎自身的bug,如果把bug修复了,再把污点函数库完善,我相信白帽子就更难绕过了。

雷火公测冠军zsp:大家好,我的理解是Webshell本身具备一些隐蔽性,一般隐藏在正常的目录中,很难被发现,并且可以穿越服务器的防火墙,很难留下日志,只会在web日志中留下数据提交的记录,没有经验的安全运营人员很难看出入侵痕迹,检测产品是很有必要的。各位大神已经说的很充分,我再补充一点,说一下我写Webshell的经验,我大概从语言本身出发去写Webshell样本,首先是检测引擎本身的研发也是去了解这个语言,把所有的路给堵住,我看哪条路没堵,我就走哪条路,比如说语法上有一个关键词叫克隆,一般人很少用这个关键词,我就试一下,发现可以绕过,大概就是这种思路。网撒得广一点,不要纠结在一个点一直钻下去,防止陷进去,挖的量会很少,我的思维比较跳跃,就这样挖。

青藤COO程度:最后我总结一下就是两个,第一是污点函数库,这次发现了90%的绕过样本都是污点函数库导致的,因为不同版本的污点函数库不太一样的,90%的绕过样本都是这样的情况。还有刚才提到动静结合特别好,我们是在客户端执行的,就是shell环境执行的,而不是属于浏览器这种,我看有一些写http response,通过远程访问的方式,执行的过程中把动态的、出错结合进来,往下走,或者说变成一个值传过来,我觉得是挺好的,比如说http response code是200,200-200=0,通过这个返回值来构造一个webshell,这都是很明显的动静结合,包括污点结合,这两类绕过是比较多的。

青藤COO程度:接下来想请大家聊聊威胁检测方面的前沿科技、新的检测方式,并不限于Webshell,例如机器学习。

VIPKID安全专家JackUni:先说一下这次公测活动,首先这次公测活动学习到很多,白帽子各种绕过姿势让我耳目一新,以前是不了解也没有接触过的,另一个是雷火引擎的检测效果确实是非常有效的,大家都有目共睹,从三周提交的数据来看,绕过的次数比例越来越低。说一下新技术,不管是AI推理还是机器学习,我个人比较看好这些新技术的,因为攻防对抗在演变,不管是甲方的安全人员还是乙方的厂商,希望通过新技术不断提升安全检测,安全防御能力,包括我们在VIPKID安全部,内部也做了一些尝试,比如说检测扫描,在WAF层面检测扫描行为,我们是做了一些尝试,最后是落地的,针对一些WAF对外部空间的扫描,我们和安全厂商做了合作,但是面临一个最大的问题,从用户的角度讲,误报太多,这个问题比较严重,直接导致的结果,可以检测出来一些有效的,但是这个东西我们不敢放到线上,不敢直接放到生产环境,这是面对的问题。新技术肯定是看好的,但是真正从这个技术,包括从探索到真正的落地,可能还需要有一些技术难题需要解决,这是我的见解。

WIFI万能钥匙安全经理Tiger:大家好,在这次雷火行动之前有一个小范围的公测,当时我也是跟福哥交流了一下,我手上之前有一些Webshell,PHP的可以绕过很多市面上的检测工具。我把他们拿到雷火引擎去检测,发现大部分被干掉了,还有少量的一两个,我认为可能是语法有一些错误。所以我的Webshell基本上可以说全军覆没了,当时觉得挺神奇的。我有一些Webshell其实是私藏的,有不错的姿势在里面,还是能够识别,当时挺好奇的,跟福哥了解了一下原理是什么。通过转成AST之后,进行推测,来看这个东西的危险性,相当于做了推理,还是挺震惊的,以往我们知道都是基本上通过机器学习的方式做的,这里面有一个问题,受限于Webshell传统检测方法的漏报和误报,机器学习应用于广泛的领域,但是受限于Webshell的样本数量和质量,机器学习我们都知道需要大量样本,而且是真实有效的样本才可以有比较好的产出,但是实际上在Webshell本身角度来讲,市面上公开的样本量远不足以去训练成一个比较厉害的模型出来。基本上可以体现出市面上很少有真正的将机器学习的成果直接应用生产环境,说实话我们曾经尝试过,其实结果是不太满意的,里面的误报和漏报都是非常高的。

从这个角度来讲,我觉得青藤做成这个样子还是非常厉害的,至少后期会是非常成熟的商业产品,作为用户来讲,对这个产品给予非常高的期望。AI推理、机器学习、人工智能还是非常有必要的。在大数据时代,Web有大量的数据需要处理的,靠以前的方式会有很多的弊端,需要人工智能的手段去检测未知的攻击,这个思路和方向都是对的,可能需要不断地尝试,去优化算法。另外引入Webshell攻击时段流量和日志的分析,可以优化检出效果,我们很希望青藤能够在这块做得越来越好,给我们提供非常亮眼的产品,可以干掉市面上所有吹牛的产品。虽然,贡献了压箱底,也学习了非常多的姿势,所以说这个活动是非常好的。

顺丰SFSRC负责人曾冰:我的印象感觉是蛮深刻的,白帽子的参与度是很高的,每天提交大量的Webshell,而且提交的Webshell效果也是挺厉害的,希望青藤的产品能够尽快面世。对AI推理和机器学习,到一定程度的情况下,常见的Webshell内容混淆、变形等,基本是没有办法绕过的,我们希望可以加入小型的沙箱或者是行为分析的功能,把Webshell敏感的操作,类似读取系统文件/etc/passwd,或者执行系统调用命令情况监控出来,希望针对相关的功能,比如对这种HIDS性能指标,兼容性之类的,这是可以考虑的方向。

OPPO高级运维安全工程师南洋:Webshell这块比较适合用机器学习,或者深度学习做的,从安全的角度来说,普遍存在着这样的问题,黑样本是非常少的,白样本是非常多的,存在的问题是训练的时候这个模型可能是存在一定的偏差,Webshell这块整体来说不管是从网上找的样本,还是通过公测,通过一些合作的方式获得的样本量,整体的黑样本的数量是能够支撑起做机器学习模型训练的,白样本也可以在网上找到非常多的样本量,这是样本量的解决。很多时候做机器学习检测Webshell的时候,很多时候会遇到误报的问题,误报的问题可以通过尝试不同的算法调整一些算法,或者模型中核对一些方法来调整误报率,达到可以用的程度,当然这个构建的过程是持续的过程,通过某一次训练,我们就能达到训练出的模型以后能够一劳永逸地使用了。这次青藤获取了这么多样本,我觉得也是很大程度上能够对你们的模型做很好的提升。

青藤COO程度:确实在机器学习方面,Webshell之前做的时候发现黑样本很少的,GitHub上有几个项目,样本就是几千个,这次提交了样本大概3万多个,大部分是很高质量的Webshell,GitHub上是很常见的,很容易一眼看出来。这次提交的很多是一眼看不出来是个Webshell,或者是看到最后一句话感觉像是Webshell,这个过程到底是怎么来的,还得琢磨琢磨,样本数量确实之前是不全的,尤其是黑样本,这次确实收集了一些,但是机器学习确实任重道远,黑样本和白样本,相当于做监督学习,黑样本出去的话是1,白样本出去就是0,是学习的过程,算法是通用的,参数怎么调优,是样本训练的过程,确实是这样的情况。

携程高级安全运营工程师Tara Ye:这次活动我们从数据上看,也可以看到绕过数据量的下降,下降还是挺惊人的,看上去感觉对普通的厂商说不定效率也未必有这么高。我们这边也有用机器学习相关的做安全防护,但是因为是黑样本太少,即使是我们这边的数据量可能会比较大,黑样本也是太少,导致了误报率是非常大的,也没有达到可以投入生产的效。这次活动感觉应该感谢一下各位白帽子对我们的安全做了贡献。

宜信安全资深架构师陈奇:我是去年的时候,青藤Webshell查杀内测的时期,我们试了一下,也是把我们的样本库掏空了。我们有样本也有一些安全工程师,安排了人工去试了一下,大部分都是给检测出来了,只有极少量的跟数据库相关的,很罕见的手法才可以,大部分都是不行的,去年就知道这个事情了,刚好今年有这个活动,我们也参加了。之前做河马的时候我们做过两版机器学习,一次是在2017年之前,一次是2017年国庆节,最早的一版可以讨论一下,那会儿的样本量还可以,当时有一个问题训练出来0和1,怎么定呢,0.8分以上算Webshell,实际上0.8分有时候,有的时候是0.9,不太好确定,之后我们又做了一版,做这一版的时候,从六七个维度的数据进行训练,训练之后,检出率上还不错,但是我们回归率确实一般,大概是80%多的回归率,开始测的时候是针对PHP,JSP,是代码文件,后面把网页文件,html/js投进去,也被识别成Webshell,确实说在误报这块,或者说特征方面还是有研究的空间,比如特征维度代码怎么进行预处理之后才抽取特征,可能会好一些。这次青藤走语法树的思路目前看效果是最好的,眼下是我用过同行产品里面最好的,这次活动白帽子提交的样本确实是百花齐放,有一些姿势是比较少见的,也算是开了眼界。

青藤COO程度:陈奇说到一点,确实机器学习中特征的选取非常重要,因为我们如果是拿Webshell本身的目前的特征,有一些时候就很难,因为混淆的很多东西,不是原始的状态,就要做预处理,我们的做预处理就是语法树分析,分析成最终的形态,这是本质的特征,混淆的东西已经把特征误导了,那些特征不是本质的特征。学习机器学习的时候要选取一个特定的特征,一定不是表象的特征,一定是本质的特征,本质的特征抽取出来是事半功倍的,如果只是做表象,文件名,文件大小等,这个东西对Webshell来说是重要的特征,一点都不算,或者说高危的函数可能算是,相当于变形有一些不是高危函数,可能也不算。说到另外一个点,南洋说黑样本,白样本,这就提到数据的处理,之前做机器学习的课程第一讲特征选取是什么,原始数据上做一些处理,把实际的特征抽取出来,是比较复杂的过程。把特征抽取好之后,对于之后的机器学习来说是很重要的一个点,确实是陈奇这块讲到这个点非常重要。

雷火公测季军dean:目前机器学习最大的问题是安全领域样本少,样本少就有漏报,比如控制阈值,最后导致了可能会造成不只是漏报,还有误报,我试过一些机器学习相关的Webshell检测引擎绕过,有一些确实被发现的,但是有一些根本就不是shell,丢上去也被发现了,这种产生技术是非常OK的,非常高深的技术,解决了很多的痛点,但是否真正的用于线上环境,真实的场景,这是有待考量的。我认为机器学习技术就是用来解决这些传统技术无法解决的问题,比如说挖掘一些未知的空间,海量样本里面找一些东西,基于现有的样本学习之后找一些未知攻击,这是我对整个机器学习的了解。但是,眼前能看到的问题传统技术是能解决的,Webshell查杀之类是完全可以解决的,还是看用在什么地方,适合用在什么地方,这是我的了解。

青藤COO程度:确实机器学习并不是是万能药,只要感觉很复杂的问题就上机器学习,实际并不是的,要想一想机器学习是不是适合。我们学习的时候分两大类,一个是建模类的,一个是分类的,建模类先把白样本建好,就是这个模式,狮子就是狮子,老虎就是老虎,只要不是狮子不是老虎就是别的动物,先建特定的模型,其他的就都不是那个类的,这是一种方式。还有一种方式是分类,刚才提到黑样本、白样本的问题,我们叫监督性学习,把白样本和黑样本跑一遍,白样本全叫0、黑样本全叫1,跑完之后这个模型就建立了,回归的问题,把之前的老样本全部跑一遍,模型是不是跑顺了,但是还有问题,样本是没有问题的,一旦有新的东西加进来之后这个模型又不行了,机器学习,考虑实际的场景是否要用区块链解决问题,是否要用大数据解决问题,我们要选择一个合适的技术思路来解决这些特定的安全问题,这点讲得非常好,要选择合适的技术会更好。

雷火公测冠军zsp:第一波内测的时候,我已经搞了很多复杂的样本,几乎都被检测出来了,当时一度怀疑是不是后台人工识别的。我们可以做一个对比,市面上出现了很多的检测工具,一般通过识别文件md5,用正则,也有一些做动态检测的,但是效果都不是很好。青藤这方面做到了极致,细节方面处理特别好,误报很低,检出率很高,是我目前见到过最强的引擎,可以说是这个领域的第一。机器学习,行为分析,推理起来是人工智能最高境界,目前是探索阶段路还很长,要像人一样具备思考能力。我发现这个还不太适合Webshell检测引擎,分析黑客攻击路径和溯源问题,还是行为分析,机器学习的话,可能确实不太适合这个场景。


参与本次活动嘉宾,都是在国内Webshell检测领域深耕多年的领袖专家、顶尖白帽。他们带来的深度分享,对于安全从业者有非常高学习价值。同时,嘉宾们对雷火公测的影响力、雷火引擎的检测效果赞不绝口,验证了青藤雷火强大实力。未来,青藤将继续发挥优势,加大研发,为用户提供更好产品和服务。

注:圆桌论坛视频将于6月15日上传至青藤官网-资源中心-直播视频上,欢迎届时观看。

为1000+大型客户,800万+台服务器
提供稳定高效的安全防护

预约演示 联系我们
电话咨询
售前业务咨询
400-800-0789转1
售后业务咨询
400-800-0789转2
复制成功
在线咨询
扫码咨询
扫码咨询
预约演示 下载资料