一次编码WebShell bypass D盾的分析尝试
字数 1308 2025-08-18 11:37:42

WebShell绕过D盾检测的技术分析与教学文档

1. 概述

本文详细分析了一种通过多层编码技术绕过D盾检测的WebShell实现方法,并提供了相关技术细节和绕过思路。

2. WebShell功能分析

2.1 主要功能

  • 系统信息收集:获取IP、路径、用户权限等
  • 命令执行:通过cmd参数传递执行系统命令
  • 文件上传:上传文件到服务器
  • 数据外传:将收集的信息通过邮件发送到预设邮箱(setoran.target26@gmail.com)

2.2 访问界面

典型的WebShell操作界面,提供上述功能的交互接口。

3. 编码技术分析

3.1 编码层次结构

该WebShell使用了4层编码技术:

  1. 第一层:Base64编码
  2. 第二层:Base64编码(再次)
  3. 第三层:ROT13编码
  4. 第四层:Gzip压缩(gzinflate)

3.2 关键PHP函数

  • eval():执行PHP代码
  • base64_decode():Base64解码
  • str_rot13():ROT13解码
  • gzinflate():解压缩Gzip数据

4. 完整解码过程

4.1 解码步骤

  1. 获取Base64编码的字符串
  2. 第一次Base64解码
  3. 第二次Base64解码
  4. 应用ROT13解码
  5. 使用gzinflate解压缩
  6. 最终得到可执行的PHP代码

4.2 代码示例

// 原始编码结构示例
eval(gzinflate(str_rot13(base64_decode(base64_decode($encoded_string)))));

5. D盾检测绕过技术

5.1 D盾检测原理

D盾主要通过以下特征检测WebShell:

  1. eval()函数的使用
  2. 后跟Base64编码的字符串

5.2 绕过技术尝试

5.2.1 注释绕过Base64检测

  • 方法:在Base64字符串中添加注释
  • 结果:绕过Base64特征检测,但仍被识别出eval后门(4级)

5.2.2 函数输出eval

  • 方法:使用函数方式输出eval
  • 结果:检测级别降至2级

5.2.3 其他尝试方法(效果不佳)

  • 字符串拼接
  • 大小写混淆
  • 逆序排列

6. 高级技术细节

6.1 数据外传机制

  • 通过邮件发送系统信息到预设邮箱
  • 使用session检测(bajak session值)避免重复发送

6.2 本地副本创建

在指定目录创建副本:

images/stories/food/footer.php

6.3 配置文件读取

尝试读取上级目录的configuration.php文件

7. 流量分析

7.1 命令执行流量

  • 命令通过cmd参数传递
  • 示例:执行ipconfig命令

7.2 特征隐藏

多层编码使得流量中难以直接识别恶意特征

8. 防御建议

8.1 检测防御措施

  1. 监控eval等危险函数的使用
  2. 检测多层编码的可疑模式
  3. 实施机器学习检测(如朴素贝叶斯算法)

8.2 管理措施

  1. 谨慎使用第三方WebShell工具
  2. 定期检查服务器文件完整性
  3. 监控异常邮件发送行为

9. 总结与展望

  1. 当前主要检测难点仍在eval函数的识别上
  2. 编码和变换技术对绕过检测仍然有效
  3. 未来可能出现更复杂的绕过技术
  4. 机器学习在WebShell检测中的应用将增加攻防对抗的复杂性

10. 附录

10.1 测试方法

  • 使用D盾进行WebShell检测
  • 测试不同绕过技术的效果级别

10.2 注意事项

  • 本文仅供学习防御技术使用
  • 实际使用WebShell可能涉及法律问题
WebShell绕过D盾检测的技术分析与教学文档 1. 概述 本文详细分析了一种通过多层编码技术绕过D盾检测的WebShell实现方法,并提供了相关技术细节和绕过思路。 2. WebShell功能分析 2.1 主要功能 系统信息收集:获取IP、路径、用户权限等 命令执行:通过cmd参数传递执行系统命令 文件上传:上传文件到服务器 数据外传:将收集的信息通过邮件发送到预设邮箱(setoran.target26@gmail.com) 2.2 访问界面 典型的WebShell操作界面,提供上述功能的交互接口。 3. 编码技术分析 3.1 编码层次结构 该WebShell使用了4层编码技术: 第一层:Base64编码 第二层:Base64编码(再次) 第三层:ROT13编码 第四层:Gzip压缩(gzinflate) 3.2 关键PHP函数 eval() :执行PHP代码 base64_decode() :Base64解码 str_rot13() :ROT13解码 gzinflate() :解压缩Gzip数据 4. 完整解码过程 4.1 解码步骤 获取Base64编码的字符串 第一次Base64解码 第二次Base64解码 应用ROT13解码 使用gzinflate解压缩 最终得到可执行的PHP代码 4.2 代码示例 5. D盾检测绕过技术 5.1 D盾检测原理 D盾主要通过以下特征检测WebShell: eval() 函数的使用 后跟Base64编码的字符串 5.2 绕过技术尝试 5.2.1 注释绕过Base64检测 方法:在Base64字符串中添加注释 结果:绕过Base64特征检测,但仍被识别出eval后门(4级) 5.2.2 函数输出eval 方法:使用函数方式输出eval 结果:检测级别降至2级 5.2.3 其他尝试方法(效果不佳) 字符串拼接 大小写混淆 逆序排列 6. 高级技术细节 6.1 数据外传机制 通过邮件发送系统信息到预设邮箱 使用session检测(bajak session值)避免重复发送 6.2 本地副本创建 在指定目录创建副本: 6.3 配置文件读取 尝试读取上级目录的configuration.php文件 7. 流量分析 7.1 命令执行流量 命令通过cmd参数传递 示例:执行ipconfig命令 7.2 特征隐藏 多层编码使得流量中难以直接识别恶意特征 8. 防御建议 8.1 检测防御措施 监控eval等危险函数的使用 检测多层编码的可疑模式 实施机器学习检测(如朴素贝叶斯算法) 8.2 管理措施 谨慎使用第三方WebShell工具 定期检查服务器文件完整性 监控异常邮件发送行为 9. 总结与展望 当前主要检测难点仍在eval函数的识别上 编码和变换技术对绕过检测仍然有效 未来可能出现更复杂的绕过技术 机器学习在WebShell检测中的应用将增加攻防对抗的复杂性 10. 附录 10.1 测试方法 使用D盾进行WebShell检测 测试不同绕过技术的效果级别 10.2 注意事项 本文仅供学习防御技术使用 实际使用WebShell可能涉及法律问题