脚本语言@惊雷?雷火引擎要重新定义Webshell检测的新纪元


一直以来 , Web应用程序是攻击者利用安全漏洞进行攻击的最常见目标之一 。 在成功渗透进Web站点后 , 攻击者会放置Webshell以维持对目标长久的访问权限 。 尽管Webshell在实践中普遍存在 , 并且严重威胁Web安全 , 但业内目前还未能出现太多有效的Webshell检测工具 , 真正做到100%识别查杀更加是难上加难 。
2019年10月 , 国家互联网应急响应中心发布的《2019年中国互联网网络安全报告》指出 , 仅2019年上半年 , 监测发现境内外约1.4万个IP地址对我国境内约2.6万个网站植入后门 , 同比2018年上半年增长了1.2倍 。
2020年4月 , 青藤云安全携手中国产业互联网发展联盟(IDAC)、腾讯标准、腾讯安全 , 共同发布《2019中国主机安全服务报告》 。 报告显示 , 2019年 , 全国企业用户服务器病毒木马感染事件超百万起 。 其中Webshell恶意程序感染事件为近80万起 , 占总数的73.27%;Windows恶意程序感染事件占18.05%;Linux恶意程序感染事件占8.68% 。针对Webshell的检测和防御对抗能力 , 是Web网络安全行业长期以来最值得关注的问题 。
脚本语言@惊雷?雷火引擎要重新定义Webshell检测的新纪元
本文插图
图:主机感染病毒木马的情况
说到Webshell , 那么什么是Webshell?
Webshell是网站入侵的脚本攻击工具 , 黑客通过入侵网站上传webshell后获得服务器的执行操作权限 , 比如执行系统命令、窃取用户数据、删除web页面、修改主页等违规操作 。
根据上面的定义不难发现 , Webshell本身与正常的网页脚本在本质上没有什么不同 , 都是一段可以动态运行的脚本代码 , 但由于其可以执行许多高危的操作对企业内网防护与业务安全的保障工作产生了巨大的挑战 , 其危害不可言喻 。
目前 , Webshell的检测方法主要可以分为三大类:
1.静态检测
静态检测是指对脚本文件中所使用的关键词、高危函数、文件修改的时间、文件权限、文件的所有者以及和其它文件的关联性等多个维度的特征进行检测 。 例如利用正则表达式 , 以及后期出现的熵值分析、相似度匹配等方法来判断文件代码中是否包含恶意的shell代码 。
静态检测方法部署简单 , 但是只能查找已知的Webshell , 对未知特征或者混淆加密的shell很容易被绕过 , 漏报率与误报率之间平衡点难以衡量、人工依赖度大等缺点也是需要考虑 。 近几年出现的一个概念-——抽象语法树分析 , 即将脚本文件以树状的形式表现编程语言的语法结构 , 树上每一个节点都表示源代码中的一个结构 。 借助抽象语法树找到脚本的所有可能执行的路径 。 抽象语法树分析法对传统静态检测的缺陷有一定的补充作用 。
2.动态检测
动态检测通过Webshell运行时使用的系统命令或者基于网络流量及状态的异常来判断动作的威胁程度 。 常见的两种动态监测方式分别是在沙箱内试运行、代码运行过程中HOOK系统高危进程调用和流量特征包来判别是否是恶意webshell 。
目前 , 动态检测的方法在Webshell检测领域未能广泛推广 , 虽然基于沙箱技术的行为特征分析对于混淆或者加密的webshell可以有效监测 , 但是由于可控输入的存在 , 黑客可以控制代码执行的路径 , 从而通过可控输入绕过沙箱的执行路径 , 使得沙箱只适用于执行路径一定的Webshell , 对于执行路径较多的Webshell , 则非常容易被绕过 , 所以沙箱检测webshell的场景显得有点儿局限 。
3. 基于AI的检测方法
利用AI来检测Webshell只有两种方式 , 一种是用传统的机器学习(ML) , 基于朴素贝叶斯的方式做统计分析 , 还有一种是过去几年很火的深度学习 , 来自动或半自动地提炼样本特征 , 进而实现特征匹配与结果判定 。
基于AI的Webshell检测方法本质上也是从现有的样本里面提炼特征 , 可以看成是用人工智能或者机器学习取代了人 , 来进行提炼操作 , 本质上还是在提炼特征 , 因为Webshell的多样性和可以无限变形 , 所以这种特征提取出来之后 , 对未知的Webshell的检测能力同样效果不会很理想 。