1.背景介绍
Webshell是一种基于web应用的后门程序,是黑客在入侵过程中经常使用的一类恶意工具之一。web渗透中黑客可以利用特定的Webshell获取服务器权限,进而进行服务器文件操作、数据库操作以及盗取用户私密信息等。
**业务背景:**将基于AI的webshell检测引擎作为重保/护网项目的样本检出插件使用。
**业务目标:**建立webshell检测模型,对输入样本进行解析和识别,并输出该样本的标签。
2.数据理解及处理
Webshell脚本文件的类型有php、jsp、asp、aspx等,其中php样本占webshell样本的70%左右。
php的简单webshell:
jsp的简单webshell:
asp的简单webshell:
从PHP源代码层面分析复杂,不适合做一些语言处理的工作,因此无法作为深度学习模型的输入。PHP脚本代码在经过编译后,生成可以直接运行的中间代码OPCODE,也称字节码,具有时序性。
3.特征处理
获取opcode序列及其参数信息,去掉无用信息
4.算法方案
**初始方案:**TextCNN模型是使用卷积神经网络来处理NLP问题的经典模型
**改进方案:**加入时序信息,在原来的基础上引入n-gram,构造双输入模型。
n-gram模型基于这样一种假设,第n个词的出现只与前面n-1个词相关,而与其它任何词都不相关,整句的概率就是各个词出现概率的乘积。当 n=2, 一个二元模型(2-gram model)即为 :
基于n-gram的双输入TextCNN模型:
真实场景:webshell正常页面中的比例可能不足万分之一,正负样本比例差异非常大,导致训练的模型存在一定的偏差。可使用Stacking的方式。
(1)正常样本比例作为初始训练集,训练基分类器。
(2)根据基分类器结果再训练第二个分类器;
采用上述方式可以消除真实场景样本比例差距大的问题。
5.效果展示
(长按二维码快速扫描关注)
该账号主要围绕智能化技术如何帮助企业提升网络安全水平展开,内容涉及机器学习、大数据处理等智能化技术在安全领域的实践经验分享,业界领先的产品和前沿趋势的解读分析等。通过分享、交流,推动安全智能的落地、应用。欢迎关注~