腾讯lake2 :Webshell检测的前世今生
本文作者lake2
lake2,逾十五年网络安全经验,现任腾讯安全平台部总监,负责腾讯的数据保护、入侵检测、DDoS防护、安全漏洞收敛等基础安全体系建设运营;创立了国内首个企业自建漏洞奖励平台腾讯安全应急响应中心(TSRC)、安全研究团队Tencent Blade Team以及腾讯蓝军。
从名动安全圈的白帽黑客,到如今的网络安全专家,十五年来,lake2一直奋战于安全一线,用技术践行着自己的网络安全守护梦。
Web时代,ASP、PHP这种新兴的动态脚本技术被大量网站使用,即由服务端执行脚本程序返回结果给客户端,客户端的浏览器仅展示结果。如果服务端执行的脚本是一个控制服务器的后门程序呢?那这就是被称为WebShell的Web后门程序(相对传统的命令行Shell而言,这是一种基于Web的Shell)。
WebShell是与冰河、灰鸽子这种传统二进制木马不同的一类木马,它是文本文件,由Web Server运行环境解释执行的。跟所有的新技术一样,它给安全行业带来了新的挑战:1)当时基于特征检测的杀毒软件根本没见过这种新木马,更不要说查杀了;2)它本身是一个CGI文件,控制走的HTTP协议,对网络层的防火墙来说这就是一次网页浏览行为,查不了也拦不住。
当年著名的WebShell有cmd.asp、海阳顶端ASP木马(还有个全是粉红色的红粉佳人修正版)、c99shell、PHP一句话、PHPSpy、JSPSpy、ASPXSpy等,我也贡献过最小的ASP木马(eval一句话)及其客户端还有ASP.Net环境的WebShell(WebAdmin系列)。
下图是著名的海阳顶端ASP木马和PHPSpy:
后来杀毒软件倒是更新了字符串特征,但是解释执行的文本语法松散,变形很多,很容易就变形躲过检测,而且还可以找一些不常用的能执行代码的函数;防火墙也更新了特征,会简单检测下HTTP请求及返回内容,发现一些关键字可能阻断,这个更容易绕过,简单做个字符移位变换即可。
老是写WebShell没意思,我看市面上没有好的WebShell查杀工具,就写了一个ASP WebShell查杀工具(ASP版和VBS版都有,整合到了“雷客图ASP站长助手”里面),采用了朴素的字符串特征加人工确认的方式,把可疑的ASP文件找出来辅助管理员判断是否是WebShell。可惜现在源代码我自己也没有了,幸好网上可以下载到。
来看一下更新日志:
还看到不少老熟人哦:
吹嘘下史上第一个WebShell对抗众测(顺便怀念一下邪恶八进制论坛):
可惜VBScript、ASP、ASP.Net统统没落了。
后来我加入腾讯安全中心,正好参与建设服务器安全系统“洋葱”,就把PHP、JSP、ASP、ASPX这些语言的WebShell特征全部提取了一遍,基本上可以发现当时市面上所有的WebShell,连见多识广的乌云白帽之王“猪猪侠”ring04h尝试后也不得不承认“腾讯在PHP安全领域的防护实力,当属国内第一”。当然,要纵深防御,更要在事前防御,送你一个Web安全秘诀:“目录默认不可写,可写目录不解析,Web Server非root,管理页面不对外”。
这段时间的WebShell检测主要是以字符串特征码正则表达式检查为主,分为强特征和语言特征,强特征就是那种只出现在WebShell的字符串,比如脚本文件里面出现“WebShell”、“wscript.shell”、“海阳顶端”、“kevin1986”、“lcx”、“4ngel”等字样就立即视为WebShell,简单粗暴有效绝无错误但容易被变形绕过(不过确实遇到一个误报,4ngel后来又写了一个Blog程序SaBlog);另一种是WebShell使用的脚本语言高危函数,如CreateObject、.exec、.run,也可以进行一些简单的字符串跟踪,最后再用各个特征权重综合判断,会有误报和漏报。还有一种思路是通过网络流量来检测,利用WebShell在HTTP传输中的特征来检测,同样容易被绕过。
有检测就有对抗,WebShell进入对抗时代,各种针对性的新的变形方法被提出来,脚本语言松散的语法使得简单地通过特征字符串来检测WebShell越来越显得吃力,急需新的检测方案。新的方案大致可以分为以下几类:
1. 动态执行。采用RASP方式,把脚本运行起来,各种危险函数都hook掉,各种混淆就失效了,还可以实时阻止后门行为。xti9er、bghost一直在做这方面的研究,取得一些成绩,后面让他们分享下;
2. 语义分析。把代码进转换成语法树,然后去进行分析,还可以带上污点追踪和虚拟执行,各种奇怪语法和混淆最终会现形。从代码分析安全漏洞常使用这种方法;
3. 统计分析。通过对文件信息熵、元字符、特殊字符串频率等统计方式发现WebShell有别于正常文件的规律,老牛曾经尝试过用贝叶斯;
4. 机器学习。通过机器学习方法来对各类样本做训练生成模型,发现异常。不过这种方法需要大量样本做基础训练,而有些算法可解释性比较差,不利于运营。职业欠钱在腾讯时也带队实测过,AI在一定场景下有效;另外就是算法人员需要了解一定的安全知识,我还记得当时算法团队说样本不足以训练,要flyh4t给出十万个WebShell样本来,flyh4t气得把桌子都摔了;
在WAF语义分析引擎众测完毕后,我们的“洋葱”团队也推出了基于语义分析新的WebShell检测引擎众测活动,同时青藤云安全也将推出新的检测WebShell的雷火引擎,两者殊途同归,都采用了新的检测方案。我跟青藤云安全CEO张福交流过(也实测过),雷火引擎的思路和效果都很不错。另外,青藤云安全即将推出的两个新产品/服务也不错,很有新意,不得不击节赞赏。
接下来,TSRC和青藤云安全将会联合开展WebShell对抗众测,以攻促防,互相交流,欢迎大家来玩。详情可关注TSRC和青藤云安全官方微信公众号。
一个点有可能可以绕过,但是整个纵深防御模型难以绕过,期待有人能突破边界。一代人终老去,总有人正年轻。
突破自我,即刻挑战
腾讯lake2将作为【雷火引擎】公测赛的专家裁判之一,对赛事给予最为公正、最为权威的判别。
诸神之战来袭,百万赏金,挑战极限,你会是最耀眼的白帽英雄吗?扫描二维码立即报名!
-The End-
其它精彩阅读:
不可不知的四大云原生关键技术:容器、微服务、服务网格、DevOps
更多关于ATT&CK:
关于青藤云安全
青藤云安全以服务器安全为核心,采用自适应安全架构,将预测、防御、监控和响应能力融为一体,构建基于主机端的安全态势感知平台,为用户提供持续的安全监控、分析和快速响应能力,帮助用户在公有云、私有云、混合云、物理机、虚拟机等多样化的业务环境下,实现安全的统一策略管理,有效预测风险,精准感知威胁,提升响应效率,全方位保护企业数字资产的安全与业务的高效开展。
QINGTENG CUSTOMERS
他们都在使用青藤
-政府机构-
外交部 | 公安部 | 交通运输部 | 水利部 | 新华通讯社 | 中央广播电视总台 | 国家信访局 | 国家药品监督管理局 | 中国地震局 | 中国日报 | 人民网 | 北京市公安局 | 广东省公安厅 | 青海省卫生健康委员会
-金融行业-
中国农业发展银行 | 中国银行 | 交通银行 | 中国人寿 | 中国平安 | 中国银联 | 招商银行 | 兴业银行 | 中信银行 | 光大银行 | 中信证券 | 国泰君安 | 广发证券 | 安信基金 | 博时基金 | 华融资产 | 泰康资产 | 江苏银行 | 宁波银行
-运营商-
中国移动 | 中国电信 | 中国联通
-大型企业-
国家电网 | 中国一汽 | 中国储备粮管理集团 | 中国化工 | 中国煤炭地质总局 | 上汽集团 | 上海机场 | 科大讯飞 | vivo | OPPO | 吉利控股集团 | 顺丰速递 | 韵达快递 | 中通快递 | 百胜中国 | TCL | 深圳航空 | 九阳股份
-互联网-
京东集团 | BiliBili | 斗鱼 | 医渡云 | 游族 | WiFi万能钥匙 | 新东方 | 团车网 | 途牛网 | 映客 | 猎豹移动 | 陌陌 | 春雨医生 | 好大夫在线 | 天极网 | 智联招聘 | 51Talk
-互联网金融-
陆金所 | 大智慧 | 度小满 | 91金融 | 玖富 | 易宝支付 | 宜信 | 人人贷 | 普惠家 | 有利网
点击下方“阅读原文” 即刻挑战