ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

WebShell脚本检测机器学习一

2021-03-10 14:31:02  阅读:264  来源: 互联网

标签:WebShell 脚本 10 检测 GET REQUEST rule webshell POST


webshell作为黑客惯用的入侵工具,是以php、asp、jsp、perl、cgi、py等网页文件形式存在的一种命令执行环境。黑客在入侵一个网站服务器后,通常会将webshell后门文件与网站服务器WEB目录下正常网页文件混在一起,通过Web访问webshell后门进行文件上传下载、访问数据库、系统命令调用等各种高危操作,达到非法控制网站服务器的目的,具备威胁程度高,隐蔽性极强等特点。
由于其显著危害性,webshell的检测一直是安全领域一个长盛不衰的话题,宏观上可分为运行前静态检测和运行后动态检测两种。简单来说,黑客入侵web服务器,不管是上传webshell还是在原文件中添加后门,对文件静态属性进行分析的方法属于静态检测;webshell执行时,browser/server数据通过HTTP交互,我们对交互行为和信息进行分析,这类方法统称为动态检测。静态检测方法预测数据采集成本较低且便与部署,缺点是容易被各种混淆及加密方法绕过;采用动态检测理论上可以避免被绕过,但测试数据采集成本较高,需要去搭建一个安全的沙箱环境收集流量特征,缺点是在生产中也只有当webshell活跃状态时才能发挥效果。

1 静态检测思路
1.1 文件名检测

最初人们通过构建一个webshell文件名字典去匹配网页文件名,查看是否存在webshell文件。我一开始是不敢相信的,但这是真的,黑客随便拿一个webshell文件来用,甚至都不需要修改文件名就能达到入侵的目的,可见最初工业界对网络安全的不重视。附上webshell文件名,大家感受下:
渗透小组专用ASP小马
vps提权马
asp一句话
改良的小马
国外免杀大马
backdoor.php

1.2 特征码匹配法
特征码匹配法目前普遍采用的一种静态检测方法,通过对webshell文件进行总结,提取出常见的特征码、特征值、威胁函数形成正则,对整个网页文件进行扫描。特征码匹配的方式优点也是十分突出,能对webshell后门精细化分类具备高可解释行且逻辑结构简单,便于在苏宁安全平台的工程化部署。同时缺点也很明显,对安全专家的知识广度和深度高度依赖,且只能识别已知的webshell模式,同样对混淆加密webshell效果有限。对安全人员来说,维护起来极其繁琐,拆西墙补西墙,陷入不断打补丁的死循环,针对大文件对性能消耗较高。厂家更多情况下是采用正则先做一遍筛选,命中严格正则的直接定性,命中宽泛正则的进一步采取其他分析方式。
rule=r’(array_map[\s\n]{0,20}(.{1,5}(eval|assert|ass\x65rt).{1,20}$(GET|POST|REQUEST).{0,15})’
rule=’(call_user_func[\s\n]{0,25}(.{0,25}$
(GET|POST|REQUEST).{0,15})’
rule=’($(GET|POST|REQUEST)[.{0,15}]\s{0,10}(\s{0,10}$(GET|POST|REQUEST).{0,15})’
rule=’(($((GET|POST|REQUEST|SESSION|SERVER)([[’"]{0,1})\w{1,12}([’"]{0,1}])|\w{1,10}))[\s\n]{0,20}([\s\n]{0,20}(@{0,1}$((GET|POST|REQUEST|SESSION|SERVER)([[’"]{0,1})\w{1,12}([’"]{0,1}])|\w{1,10}))[\s\n]{0,5}))’
rule=’\s{0,10}=\s{0,10}[{@]{0,2}($(GET|POST|REQUEST)|file_get_contents|str_replace|["’]a["’].["’]s["’].|["’]e["’].["’]v["’].|["’]ass["’].).{0,10}’
rule=’((eval|assert)[\s|\n]{0,30}([\s|\n]{0,30}(\\{0,1}$((
(GET|POST|REQUEST|SESSION|SERVER)([[’"]{0,1})[\w()]{0,15}([’"]{0,1}]))|\w{1,10}))\s{0,5}))’
rule=’((eval|assert)[\s|\n]{0,30}((gzuncompress|gzinflate(){0,1}[\s|\n]{0,30}base64_decode.{0,100})’
rule=’\s{0,10}=\s{0,10}([{@]{0,2}\\{0,1}$(GET|POST|REQUEST)|file_get_contents|["’]a["’].["’]s["’].|["’]e["’].["’]v["’].|["’]ass["’].).{0,20}’
rule=’(include|require)(once){0,1}[\s*]+["|’]+[0-9A-Za-z]

标签:WebShell,脚本,10,检测,GET,REQUEST,rule,webshell,POST
来源: https://blog.csdn.net/weixin_43977912/article/details/114634230

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有