使用分支对抗进行webshell bypass
字数 1710 2025-08-22 12:23:36

WebShell免杀技术:基于分支对抗与复杂算法的绕过方法

1. 前言

WebShell免杀技术是网络安全攻防中的重要课题。本文介绍了一种基于分支对抗和复杂算法混淆的WebShell绕过方法,通过模拟《原神》游戏中的稻妻雷元素方块阵解谜机制和柏林噪声算法,构建高度混淆的PHP类结构,实现对抗杀毒软件和云沙箱检测的目的。

2. 核心思路

2.1 类绕过技术

  • 类绕过是最有效且不易被检测的WebShell免杀方式
  • 通过在类中嵌入复杂算法和混淆代码,使代码逻辑混乱、难以阅读
  • 最终仍能实现命令执行(RCE)功能

2.2 双重保护机制

  1. 稻妻雷元素方块阵验证:必须通过特定序列的解谜才能继续执行
  2. 柏林噪声算法混淆:核心功能隐藏在复杂的数学计算中

3. 稻妻雷元素方块阵机制

3.1 初始状态

blockA = 2
blockB = 0
blockC = 0
blockD = 2

每个方块的状态值循环从0到2(最小0,最大2)

3.2 setBackBlock()方法

  • 尝试将指定方块重置为最小状态(0)
  • 如果方块已处于最大状态(2),则重置并返回true
  • 否则不改变并返回false

3.3 hit()方法行为

根据点击的方块执行不同操作:

点击方块 影响方块 操作
A A, B 尝试重置A和B,若不能重置则各自加1
B A, B, C 尝试重置A、B和C,若不能重置则各自加1
C B, C, D 尝试重置B、C和D,若不能重置则各自加1
D C, D 尝试重置C和D,若不能重置则各自加1

3.4 解谜序列分析

有效序列: ABBCCD

执行步骤:

  1. 点击A: blockA=0, blockB=1
  2. 点击B: blockA=1, blockB=2, blockC=1
  3. 点击B: blockA=2, blockB=0, blockC=2
  4. 点击C: blockB=1, blockC=0, blockD=0
  5. 点击C: blockB=2, blockC=1, blockD=1
  6. 点击D: blockC=2, blockD=2

最终状态:所有方块=2,验证通过

3.5 WebShell集成实现

$appor5nnb = new InazumaPuzzle();
$appor5nnb->__AFG50CE4_RG1();
if ($appor5nnb->getLockerStatus()) $a($b);

Payload:

wpstring=ABBCCD&a=system&b=whoami

4. 柏林噪声算法混淆

4.1 算法原理

柏林噪声属于基于晶格的生成算法,核心思想:

  • 定义晶格结构(二维平面网格/三维立方体网络)
  • 每个晶格顶点有预定义的梯度向量
  • 计算点到所在晶格顶点的距离向量
  • 距离向量与梯度向量做点积运算得到影响值

4.2 关键代码解析

$ab = pause(array_map(function($arr){ 
    return chr($arr); 
}, array_slice($this->perlin_noise, (188*2)+$userans*3, $userans-3)));

$c = strval(sprintf("%s%s", $b, pause(strrev(implode("", pause($ab))))));
$c($pcs);

4.3 构造过程

  1. 设置$userans = 7
  2. 手动设置perlin_noise数组特定值:
    $cvb33ff55->perlin_noise[397] = 121; // 'y'
    $cvb33ff55->perlin_noise[398] = 116; // 't'
    $cvb33ff55->perlin_noise[399] = 101; // 'e'
    $cvb33ff55->perlin_noise[400] = 109; // 'm'
    
  3. 通过切片和字符转换得到"system"字符串
  4. 执行命令:system($pcs)

4.4 完整WebShell实现

$appor5nnb = new InazumaPuzzle();
$appor5nnb->__AFG50CE4_RG1();
$cvb33ff55 = new PerlinNoise(3000, 700.4, 56.7, "DIFF_PERLIN");
$cvb33ff55->__BHUYTVV8_1();
$cvb33ff55->__CPRBB0R0_l();
$cvb33ff55->__HNBB70CA_5();

Payload:

wpstring=ABBCCD&b=s&pcs=whoami

5. 混淆增强技术

5.1 无用代码注入

  • 大量无意义的注释和字符串
  • 无实际功能的代码片段
  • 随机字符和乱码插入

5.2 变量名混淆

  • 使用无意义的变量名如$appor5nnb, $cvb33ff55
  • 方法名包含随机字符如__AFG50CE4_RG1

5.3 编码转换

  • 使用urldecode编码关键字符串
  • %6e%69%6c%72%65%70%5f%46%46%49%44解码为nilerp_FFID

6. 免杀效果验证

  • 微步在线检测显示安全
  • 传统杀毒软件难以识别
  • 云沙箱分析困难

7. 防御建议

  1. 静态分析

    • 检测异常复杂的类结构
    • 识别隐藏的命令执行逻辑
    • 关注urldecode等解码函数的使用
  2. 动态分析

    • 监控异常的参数传递模式
    • 检测非常规的数学计算序列
    • 分析长时间运行的复杂算法
  3. 行为检测

    • 关注system等危险函数的间接调用
    • 检测通过复杂条件分支触发的敏感操作

8. 总结

这种WebShell免杀技术通过:

  1. 游戏解谜机制作为前置验证
  2. 复杂数学算法作为核心混淆
  3. 多重编码和代码混淆作为掩护
    实现了高度的隐蔽性和对抗性,是当前WebShell对抗检测的先进技术之一。
WebShell免杀技术:基于分支对抗与复杂算法的绕过方法 1. 前言 WebShell免杀技术是网络安全攻防中的重要课题。本文介绍了一种基于分支对抗和复杂算法混淆的WebShell绕过方法,通过模拟《原神》游戏中的稻妻雷元素方块阵解谜机制和柏林噪声算法,构建高度混淆的PHP类结构,实现对抗杀毒软件和云沙箱检测的目的。 2. 核心思路 2.1 类绕过技术 类绕过是最有效且不易被检测的WebShell免杀方式 通过在类中嵌入复杂算法和混淆代码,使代码逻辑混乱、难以阅读 最终仍能实现命令执行(RCE)功能 2.2 双重保护机制 稻妻雷元素方块阵验证 :必须通过特定序列的解谜才能继续执行 柏林噪声算法混淆 :核心功能隐藏在复杂的数学计算中 3. 稻妻雷元素方块阵机制 3.1 初始状态 每个方块的状态值循环从0到2(最小0,最大2) 3.2 setBackBlock()方法 尝试将指定方块重置为最小状态(0) 如果方块已处于最大状态(2),则重置并返回true 否则不改变并返回false 3.3 hit()方法行为 根据点击的方块执行不同操作: | 点击方块 | 影响方块 | 操作 | |---------|---------|------| | A | A, B | 尝试重置A和B,若不能重置则各自加1 | | B | A, B, C | 尝试重置A、B和C,若不能重置则各自加1 | | C | B, C, D | 尝试重置B、C和D,若不能重置则各自加1 | | D | C, D | 尝试重置C和D,若不能重置则各自加1 | 3.4 解谜序列分析 有效序列 : ABBCCD 执行步骤: 点击A: blockA=0, blockB=1 点击B: blockA=1, blockB=2, blockC=1 点击B: blockA=2, blockB=0, blockC=2 点击C: blockB=1, blockC=0, blockD=0 点击C: blockB=2, blockC=1, blockD=1 点击D: blockC=2, blockD=2 最终状态:所有方块=2,验证通过 3.5 WebShell集成实现 Payload : 4. 柏林噪声算法混淆 4.1 算法原理 柏林噪声属于基于晶格的生成算法,核心思想: 定义晶格结构(二维平面网格/三维立方体网络) 每个晶格顶点有预定义的梯度向量 计算点到所在晶格顶点的距离向量 距离向量与梯度向量做点积运算得到影响值 4.2 关键代码解析 4.3 构造过程 设置 $userans = 7 手动设置perlin_ noise数组特定值: 通过切片和字符转换得到"system"字符串 执行命令: system($pcs) 4.4 完整WebShell实现 Payload : 5. 混淆增强技术 5.1 无用代码注入 大量无意义的注释和字符串 无实际功能的代码片段 随机字符和乱码插入 5.2 变量名混淆 使用无意义的变量名如 $appor5nnb , $cvb33ff55 方法名包含随机字符如 __AFG50CE4_RG1 5.3 编码转换 使用 urldecode 编码关键字符串 如 %6e%69%6c%72%65%70%5f%46%46%49%44 解码为 nilerp_FFID 6. 免杀效果验证 微步在线检测显示安全 传统杀毒软件难以识别 云沙箱分析困难 7. 防御建议 静态分析 : 检测异常复杂的类结构 识别隐藏的命令执行逻辑 关注 urldecode 等解码函数的使用 动态分析 : 监控异常的参数传递模式 检测非常规的数学计算序列 分析长时间运行的复杂算法 行为检测 : 关注 system 等危险函数的间接调用 检测通过复杂条件分支触发的敏感操作 8. 总结 这种WebShell免杀技术通过: 游戏解谜机制作为前置验证 复杂数学算法作为核心混淆 多重编码和代码混淆作为掩护 实现了高度的隐蔽性和对抗性,是当前WebShell对抗检测的先进技术之一。