<< All versions
Skill v1.0.0
currentAutomated scan100/100cha0upup/leoai/shell-obfuscation
──Details
PublishedOctober 26, 2026 at 05:03 AM
Content Hashsha256:600f6d4ab18b84d6...
Git SHA178ad3f64ca4
──Files
Files (1 file, 5.9 KB)
SKILL.md5.9 KBactive
SKILL.md · 82 lines · 5.9 KB
version: "1.0.0" name: shell-obfuscation description: 理解 LeoAI Java/PHP WebShell 与 Java 内存马生成链路,根据用户本次选择的通信、伪装、兼容性和混淆参数生成独立制品。用户要求生成、变体生成、调整兼容性或排查 Shell 无法连接时使用;始终通过 ShellGeneratorTools 完成确定性生成与结果交付。
Shell 生成与结构变体
Shell 是独立生成的制品,不从平台已有 Agent 自动继承配置。只有用户明确要求“匹配/复制某个 Agent”时,才可以查询该指定节点;不得因为平台上只有一个节点、最近操作过某个节点或当前页面选中了节点就读取它。
生成模型
一次生成由五部分组成:
- 运行时与承载方式:Java WebShell、Java 内存马或 PHP WebShell。
- 用户本次选择的通信参数:传输协议、请求伪装器、响应伪装器。
- 兼容与结构参数:JSP/JSPX、Java/Servlet 版本、容器、注入器、Packer、输出模式和混淆策略。
- Java WebShell 的 Core 字节码只保存在服务端
CoreArtifactStore,AI 仅设计不含 Payload 的 Wrapper 模板。 - 结果交付:生成器把完整结果写入
ShellResultStore,工具返回resultId、元数据和取回按钮。
不要手写或转述完整生成代码,不要虚构工具未返回的结果。
参数确认原则
- 生成前调用
getShellGeneratorMeta()获取协议、Java/Servlet、注入器、Packer 和混淆步骤等合法值。 - 调用
getDisguises()获取当前可选请求/响应伪装器;不得用 Agent 查询代替该步骤。 - 用户未给出的重要生成偏好必须通过
request_user_input询问。Java WebShell 至少确认:
- 传输协议:
http或httpchunk; - 请求伪装器与响应伪装器;
- 文件类型:
JSP或JSPX; - 是否启用混淆。
- Java WebShell 必须显式传
obfuscate=true/false;启用默认混淆时不传步骤,只有用户指定步骤时才从元数据中选择并保持顺序。 - Java 版本和 Servlet 命名空间未指定时可使用
auto;已知 Jakarta 环境时显式使用jakarta。 - 类名未指定时留空,让生成器随机生成。不要为了填满参数而猜测用户意图。
Java WebShell 工作流
- 调用
getShellGeneratorMeta()和getDisguises()。 - 对尚未明确的传输协议、请求/响应伪装、JSP/JSPX 和混淆开关调用
request_user_input;调用后停止本轮,等待用户回答。 - 调用
createJavaCoreArtifact(...),只接收coreArtifactId、哈希和契约元数据;不得请求 Core 字节码或 Base64。 - 可调用
getWebShellWrapperContract(...)查看五个阶段占位符和无 Payload 基线模板。 - 调用
designWebShellWrapper(coreArtifactId, shellType, requirements)。工具内部让 AI 设计外层并验证,成功后只返回wrapperTemplateId。 - 调用
assembleWebShellWrapper(...),明确传入obfuscate=true/false;平台再次验证模板后才注入真实 Core 并组装结果。 - 检查返回元数据中的 Core 哈希、协议、类型、版本、命名空间和混淆信息。
- 原样嵌入工具返回的
[[shell-result:...]]取回按钮。
Java WebShell 的五个阶段占位符必须各出现一次、独占一行并保持顺序。真实加载、读取、调用和响应代码由平台注入,以保证 LeoCore 单次调用和同一 buffer 数据流;AI 不得展开或改写这些阶段。
Java 内存马工作流
- 调用
getShellGeneratorMeta()和getDisguises()。 - 询问尚未明确的协议、请求/响应伪装、目标容器、注入器、Packer 和是否混淆;不要从 Agent 推断。
- 根据元数据检查
packerCompatibility、packerAvailability和可用混淆步骤。 - 只有用户明确要求结构变体且 Packer 为
ClassLoaderJSP或DefineClassJSP时,才调用mutateJspTemplate(...);其他 Packer 不接受 AI 自定义模板。 - 调用
generateMemoryShell(...),检查兼容性警告并交付取回按钮。
PHP WebShell 工作流
- 调用
getShellGeneratorMeta()和getDisguises(),确认 PHP generator 的真实能力。 - 询问请求/响应伪装和输出模式;PHP 当前仅支持
http,应向用户说明而不是查询 Agent。 - 要求用户提供 PHP PayloadCodec AES 密钥;不得使用默认值或环境变量。
headerName与headerValue必须同时设置或同时留空;不要在回复中显示 Header 密钥。- 调用
generatePhpWebShell(...),检查最低版本、运行要求、输出模式和警告后交付结果。
明确匹配 Agent 的例外
只有用户明确给出或选择了目标 Agent,并明确要求生成结果匹配该节点时,才允许读取该节点配置。读取结果只能服务于这次显式匹配;不能把它变成后续独立生成的默认值。排查“某个已生成 Shell 为什么连不上”时,也只有在用户把该 Shell 与具体 Agent 建立关联后才比较两者配置。
失败处理
- 伪装器为空或不存在:停止生成,重新展示可用伪装器并询问用户。
- 参数不在元数据中:重新读取元数据并让用户从合法候选中选择,不重复提交同一无效值。
- PHP 请求
httpchunk:说明当前只支持http,等待用户确认后再生成。 - 模板连续变异失败:报告失败,不得自行拼接 JSP 冒充生成成功。
- CoreArtifact 或 Wrapper 模板过期:重新执行对应生成阶段,不得要求工具返回缓存中的 Core Payload。
- 工具返回兼容性警告:区分“生成成功”和“已验证可运行”。
- 没有真实
resultId:不得输出取回按钮或声称生成完成。
回复要求
简洁报告生成类型、用户选择的协议与伪装、关键兼容/混淆参数、警告,以及工具返回的取回按钮。除非用户明确要求匹配 Agent,否则回复中不应出现目标 Agent。