Webshell知多少

Webshell是以PHP、ASP、JSP或CGI等网页文件形式存在的一种代码执行环境。在网络攻击过程中,Webshell是一种常用的恶意脚本,攻击者可以利用它在Web服务器上执行系统命令、窃取数据等。在入侵网站过程中,攻击者通常需要以各种方式获取Webshell,从而获得网站的控制权,再进行入侵。此外,攻击者入侵内网的肉鸡后,为了维持可用的传输通道,也需要创建肉鸡主动连接攻击者的反弹Webshell 。

Webshell具有隐蔽、便捷等特点,由于PHP语法灵活,通过隐藏敏感函数、关键字替换和拆分、使用特殊字符等方式可以有效变形和混淆,从而绕过安全检测。通常可以将恶意Webshell分类为:

· 大马

通常体积较大,包含较多功能,会调用系统的关键函数,且会以代码加密形式进行隐藏。

· 小马

通常体积较小,只包含文件上传功能。

· 一句话木马

基本框架不变,但代码极短,通常只包含一行代码。使用方便,可单独作为一个文件或插入其他正常文件中,变形多,查杀难度高。

几种检测恶意Webshell的通用方法

· 特征检测

传统基于恶意特征的模式匹配和MD5检测等手段,其优点是成本低、速度快,其缺点是无法检测未知威胁,容易被绕过。

· 统计分析

使用统计学方法,提取文件的关键特征,例如信息熵、特征代码、最长单词、压缩比、重合指数等,对其进行识别与检测。其优点是对经过混淆代码或模糊编排的Webshell文件有良好的识别效果,其缺点是对“正常”文件有较多误报和漏报。

· 流量特征检测

提取网络流量的元数据,例如TCP/IP包头信息、HTTP/DNS协议内容、数据包描述字段、数据包个数、会话信息等;再基于元数据特征制定恶意Webshell规则,例如如果符合流量为上行、文件后缀异常、Payload中存在疑似攻击内容等元数据探针,则检测命中。其优点是部署简单、检测迅速,其缺点是能力与规则成正比,漏报表现不稳定,且对加密流量没有高性能解决方案。

· 机器学习方法

基于SVM(支持向量机)、贝叶斯算法、随机森林等方法,选取合适的正常样本和恶意样本进行降噪、向量化与随机抽样,对检测模型不断训练优化,将样本交给模型判断。其优点是具备不错的未知威胁检测能力,其缺点是对样本要求较高。

· 动态语义检测

无论Webshell代码如何变形,其行为是不变的,可以通过代码动态模拟执行和语义污点分析进行检测,多采用RASP方式。其优点是对精心设计的变形木马检出率高,其缺点是RASP需要串行部署,占用业务资源。

使用机器学习方法检测PHP Webshell

在实际应用中,每种检测方法都有自身的优劣,安全产品选择适合场景的方法,通过取长补短形成独特的解决方案。此次主要介绍PHP类Webshell,借助Scikit-learn(SKlearn)工具,采用机器学习相关方法进行检测的实践。

1、AST和Opcode

AST(抽象语法树)是PHP 7引入的新特性。PHP收到请求或执行命令时,首先进行词法和语法分析,生成AST,再生成字节码Opcode 。Opcode是一种PHP脚本编译后的中间语言,与Java的Bytecode和.NET的MSL类似。

在进行样本数据分析时,如果直接使用PHP源码进行分析,由于其中包含混淆、花操作、注释等无用内容,会导致噪声,效果变差。将PHP Webshell源码转化成AST或Opcode可执行语句后,可降低噪声。

2、使用Opcode关键词进行随机森林训练

(1)安装Opcode插件

例如,可在Windows平台上使用VLD插件进行转换。

(2)Opcode提取&TF-IDF值计算

① 加载恶意样本集;

② 编写提取和加载工具,将每个样本的Opcode保存成字符串,把所有字符串写入list中;

③ 使用CountVectorizer函数,将list内容转换成词频矩阵,为样本打标记(1);

④ 对白样本重复以上操作,为样本打标记(0);

⑤ 将恶意样本和白样本提取出的词频矩阵整合到一起;

⑥ 使用TfidfTransformer函数,把数值矩阵范化为TF-IDF值。

(3)随机森林训练

经过多重训练模型的对比,发现随机森林训练效果最好。使用Train_Test_Split函数对所有训练样本集进行随机抽样,将关键词、TF-IDF、标记等特征送给训练模型,通过长时间训练,让模型能够通过Opcode关键字判断PHP Webshell是否存在恶意行为。

主要流程图

在实践中,一般搜集样本检出率达到97%以上,对变形伪装样本的检出率也达到75%以上。

3、使用AST进行图像识别迁移学习训练

由于AST具备较多语法树结构,相比Opcode分词结构不够清晰,故使用关键词进行训练可能效果不佳。因此尝试将AST转换为二进制文件,再进一步转换成图像,利用图像识别方法进行训练。

(1)二进制文件转换

在训练中,提取AST语法树后转换为二进制文件。二进制文件中,每个字节范围在00~FF之间,对应灰度图像素0~255 。将二进制文件转换为矩阵,该矩阵又可以转换为一张灰度图。

(2)CNN(Convolutional Neural Networks)图像识别

虽然通过观看很难区分恶意样本与白样本纹理上存在的细微差异,但借鉴目前较为成熟的CNN图像识别算法进行图像分类可以识别。

卷积神经网络(CNN)是一类包含卷积计算且具有深度结构的前馈神经网络,是深度学习的代表算法之一。

卷积神经网络的组成包括:

· 输入层(Input Layer

用三维矩阵代表一张图片,矩阵的长宽代表图片的大小,矩阵的深度代表图像的色彩通道,黑白为1 。

· 卷积层(Convolution Layer

卷积层的输入是上一层神经网络的一小块,它试图对神经网络的每一小块进行更加深入的分析,得到抽象程度更高的特征。一般来说,通过卷积层处理后的结点矩阵深度会增加。

· 池化层(Pooling Layer

不会改变三维矩阵的深度,但是能够缩小矩阵的大小,达到减少参数的目的。可以看做是将一个分辨率较高的图片转化为分辨率较低的图片的过程。

· 全连接层(Fully Connecced

经过多轮卷积和池化后,再经过1-2个全连接层输出。可以将卷积和池化层看做特征提取,由最后的全连接层进行分类。

· Softmax

转化为概率分布。

主要流程图

在实践中,上述方法对一般搜集样本的检出率只有70%左右,对变形伪装样本的检出率更低至55%以下。

由此可以看出,因AST自身特点,迁移学习方法的适用性不高,该方法可应用于恶意文件和域名检测等领域。

实践小结

1、使用Opcode关键词进行PHP Webshell检测具有较好效果;

2、使用AST进行迁移学习适用性较低,采用基于AST的代码动态语义分析方法效果更好,且该方法同样适用于JSP、ASP等协议下的Webshell 。

使用机器学习检测PHP Webshell的研究实践相关推荐

  1. 2022图机器学习必读的11大研究趋势和方向: 微分方程/子图表示/图谱理论/非对称/动态性/鲁棒性/通用性/强化学习/图量子等...

    来源:智源社区 本文约6900字,建议阅读10+分钟 本文为你总结了图机器学习过去一年中的研究亮点,并对该方向在 2022 年的发展趋势进行了展望. [ 导读 ]几何机器学习和基于图的机器学习是当前最 ...

  2. 关于运用毫米波雷达图像自动检测高压线的调查研究

    关于运用毫米波雷达图像自动检测高压线的调查研究 ◆电子科技大学格拉斯哥学院2017级沈晨(2017200601035) [摘要]为了保证直升机驾驶中的安全,我们迫切需要制造出一款直升机高压线自动侦测报 ...

  3. 科研工具-R-META分析与【文献计量分析、贝叶斯、机器学习等】多技术融合实践

    Meta分析是针对某一科研问题,根据明确的搜索策略.选择筛选文献标准.采用严格的评价方法,对来源不同的研究成果进行收集.合并及定量统计分析的方法,最早出现于"循证医学",现已广泛应 ...

  4. 基于深度学习的高分辨率遥感图像目标检测技术目前的研究现状

    参考   基于深度学习的高分辨率遥感图像目标检测技术目前的研究现状 - 云+社区 - 腾讯云 目录 一.概述 二.通用目标检测方法 1.类不平衡问题 2.复杂背景 3.目标的尺度变化 4.特殊视角 5 ...

  5. 深圳内推 | 华为2012实验室招聘异常检测/优化方向算法研究实习生

    合适的工作难找?最新的招聘信息也不知道? AI 求职为大家精选人工智能领域最新鲜的招聘信息,助你先人一步投递,快人一步入职! 华为 华为 2012 实验室是华为公司的技术研究与创新中心,专注于前沿技术 ...

  6. 《机器学习:算法原理与编程实践》的读书笔记:SMO部分最难,大部分代码基于Scikit-Learn,决策树其实用处不大

    机器学习:算法原理与编程实践 目录 [隐藏] 1 机器学习的基础 2 中文文本分类 3 决策树的发展 4 推荐系统原理 5 梯度寻优 6 神经网络初步 7 预测的技术与哲学 8 万能分类器:SVM 9 ...

  7. 预见未来丨机器学习:未来十年研究热点

    <h2 class="subheader">机器学习:未来十年研究热点 </h2><div class="gray-d1-c margin- ...

  8. 漏磁用MATLAB,管道漏磁内检测数据可视化技术研究

    管道漏磁内检测数据可视化技术研究 随着世界油气产业的快速发展,管道已成为输送石油.天然气必不可少的设备,然而无论长输管道是埋在地下或是深海中,都要承受来自内部和外部的压力.自身的重力,以及土壤.海水. ...

  9. 微信亿级用户异常检测框架的设计与实践

    微信亿级用户异常检测框架的设计与实践 参考文章: (1)微信亿级用户异常检测框架的设计与实践 (2)https://www.cnblogs.com/qcloud1001/p/8351385.html ...

最新文章

  1. 开始认真学习Android了
  2. 洛谷P4147玉某宫(最大矩阵好题)
  3. html无间隔字幕滚动,js实现文字超过显示宽度每间隔1s自动向左滚动显示
  4. 【IPFS + 区块链 系列】 入门篇 - IPFS+IPNS+个人博客搭建
  5. spring component-scan filter
  6. B站陈睿:70 后也正在爱上哔哩哔哩
  7. vue 插槽 有名插槽
  8. Java排序算法之直接选择排序
  9. 玩转大数据系列之一:数据采集与同步
  10. 并发编程学习之volatile关键字
  11. Java实现微信公众号自动回复
  12. 基于搜狗平台的微信文章爬虫
  13. 利用mk802(rk3066处理器)架设linux网站
  14. CSS backdrop-filter 滤镜 毛玻璃效果
  15. Jaspersoft Studio 创建简单报表
  16. 汽车装配线粘合剂市场现状及未来发展趋势
  17. matlab2021安装教程
  18. 服务器系统适合家庭电脑用吗,服务器可以用作家用电脑吗?两者有何区别?不怕噪音和耗电就可以...
  19. 【错误记录】使用./make.sh ./make.sh install命令安装FastDFS时出错
  20. linux 【CPU性能】 系统中的软中断使用率升高怎么办?

热门文章

  1. 复旦大学2018--2019学年第一学期(18级)高等代数I期末考试第八大题解答
  2. 气象监测系统和气象站一样吗?
  3. 设计模式--适配器模式 (类适配器和对象适配器)
  4. C++挖掘程序本质(第三章C++其他语法-终)李明杰-M了个J 配套教材
  5. 探究NFC SWP移动支付技术
  6. 中英翻译《森林火灾的预防措施》
  7. 计算机视觉应该怎样入门?
  8. SM2加密解密执行报 Invalid point encoding 0x5c
  9. 0x003B8027 处有未经处理的异常(在*.exe 中): 0xC00000FD: Stack overflow (参数: 0x00000000, 0x00252000)
  10. 软银计划大幅减持阿里巴巴;美国将12家中国芯片贸易商纳入“实体清单”;知乎发布中文大模型“知海图AI”丨每日大事件...