⚠️ 安全声明:本项目仅为网络安全研究与教育目的设计,严禁用于任何未经授权的渗透测试、攻击或非法行为。使用者的任何违法行为与开发者无关,由使用者自行承担全部法律责任。
Nox 是一个用于 授权安全研究 的 Java Webshell 管理控制端,旨在帮助安全研究人员、渗透测试工程师和红队成员在 合法授权 的环境下,深入理解 Web 后门的通信原理、动态类加载机制以及多层加密 Payload 的构建与传输过程。
本项目采用 Spring Boot 构建控制端,搭配轻量级 JSP 后门,通过自定义加密协议实现控制端与目标端的隐蔽通信。
请务必仔细阅读以下条款:
-
研究目的唯一性:本项目仅用于 网络安全技术研究、教育和漏洞演练。任何使用本工具进行的未经授权的访问、数据窃取、系统破坏或其他违法行为,均与开发者无关。
-
合法授权前提:在使用本工具之前,您必须确保已获得目标系统的 明确书面授权。未授权的使用行为在大多数国家和地区属于刑事犯罪。
-
责任自负原则:开发者不对因使用或滥用本工具而导致的任何直接或间接损失、法律责任或损害承担责任。所有风险和使用后果由使用者自行承担。
-
合规使用:使用者有责任遵守所在国家/地区的所有适用法律法规,包括但不限于《中华人民共和国网络安全法》、《计算机欺诈和滥用法》(CFAA) 等。
-
禁止恶意传播:严禁将本项目用于制作、传播恶意软件,或用于任何危害网络安全的活动。
如果您不同意以上任何条款,请立即停止使用并删除本项目。
- 🔍 Information Collection:自动收集目标系统的系统信息(操作系统、Java 版本、网络配置、内存/CPU、环境变量、文件写权限等)
- 💻 Code Execution:远程命令执行终端,支持 Windows / Linux 双平台自适应,前端维护工作目录状态
- 📁 File Manager:远程文件浏览、上传、下载、删除、重命名、目录创建及在线文本编辑
- 🔐 多层加密通信:GZip → XOR → AES-CBC 加密,请求体伪装为 JWT 格式传输
- 🧬 动态类加载:目标端内存中解密并动态加载执行 Java 字节码,无落地文件
- 🔗 连接管理:基于 SQLite 的本地连接记录管理,支持增删改查
┌─────────────────────────────────────────────────────────────┐
│ 控制端 (Nox) │
│ ┌─────────────┐ ┌──────────────┐ ┌─────────────────────┐ │
│ │ Web 面板 │ │ Payload 生成 │ │ 加密/编码/压缩引擎 │ │
│ │ (HTML/JS) │◄─┤ (模板+编译) │◄─┤ (GZip+XOR+AES-CBC) │ │
│ └──────┬──────┘ └──────────────┘ └─────────────────────┘ │
│ │ │
│ ┌──────┴──────────────────────────────────────────────┐ │
│ │ Spring Boot REST API │ │
│ │ /api/data /getinfo /exec /file │ │
│ └──────────────────────────────────────────────────────┘ │
└───────────────────────────┬─────────────────────────────────┘
│ HTTP POST (JWT 格式加密 Payload)
▼
┌─────────────────────────────────────────────────────────────┐
│ 目标端 (shell.jsp) │
│ ┌──────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ 请求头认证 │ │ JWT 解析 │ │ AES-CBC + XOR + GZip│ │
│ │ & 字节码提取 │──┤ & Base64解码 │──┤ 解密 & 解压 │ │
│ └──────────────┘ └─────────────┘ └─────────────────────┘ │
│ │ │
│ ┌───────────────────────────────────┘ │
│ │ 反射调用 ClassLoader.defineClass() 内存加载并执行 │
│ └──────────────────────────────────────────────────────────┘
└───────────────────────────┬─────────────────────────────────┘
│ HTTP Response (JWT 格式加密结果)
▼
- 模板编译:控制端读取 Java 源码模板(Info / RCE / FileManager),注入用户命令后调用系统
javac编译为.class字节码 - 多层加密:字节码经过 GZip 压缩 → XOR 异或混淆 → AES-CBC 加密 → Base64 编码
- JWT 伪装:将加密后的 Payload 包装为 JWT 格式发送(
token=header.payload.signature) - 内存执行:目标端解密后,通过反射调用
ClassLoader.defineClass()在内存中加载类并执行 - 结果回传:目标端将执行结果 AES-ECB 加密后,同样以 JWT 格式返回
- JDK 1.8+
- Maven 3.6+
- 目标服务器需部署 JSP 运行环境(Tomcat 等)
git clone https://github.com/13337356453/Nox.git
cd Noxmvn clean packagejava -jar target/Nox-1.0.0.jar或直接运行主类:
mvn spring-boot:run控制端默认运行在 http://127.0.0.1:6789
将 server/shell.jsp 部署到目标服务器的 Web 目录中(需获得合法授权)。
打开控制端 Web 面板 (http://127.0.0.1:6789),点击左侧 Add 按钮,输入目标 Webshell 的完整 URL(例如:http://target.com/shell.jsp)。
双击连接项,自动跳转到 Information Collection 页面,获取目标系统的详细信息。
切换到 Code Execution 标签页:
- 在输入框中输入命令,按
Enter执行 - 支持
cd切换目录(前端本地维护路径状态) - 支持
clear清空终端 - 使用上下方向键浏览命令历史
切换到 File Manager 标签页:
- 双击目录进入,点击 ↑ Parent 返回上级
- 点击 View 在线编辑文本文件
- 点击 Upload 上传本地文件
- 点击 Download 下载远程文件
- 点击 Delete 删除文件或目录
Java 源码
→ javac 编译 → .class 字节码
→ GZip 压缩
→ XOR 异或 (密钥: GRzGRYx7mRlIQgFd)
→ AES-CBC 加密 (密钥: VcApSBJ570GQhjrK, IV: PKAXoyeRITP9JfbF)
→ Base64 编码
→ JWT 格式包装
明文结果
→ AES-ECB 加密 (密钥: VcApSBJ570GQhjrK)
→ Base64 编码
→ JWT 格式包装
所有请求必须携带自定义 HTTP 头部进行认证:
e10adc3949ba59ab: be56e057f20f883eNox/
├── server/
│ └── shell.jsp # 目标端 JSP Webshell
├── src/
│ ├── main/
│ │ ├── java/org/nox/
│ │ │ ├── NoxApplication.java # Spring Boot 入口
│ │ │ ├── cipher/Cipher.java # 加密/编码工具 (Base64, AES, XOR, GZip)
│ │ │ ├── controller/
│ │ │ │ ├── DataController.java # 连接管理 CRUD API
│ │ │ │ ├── InfoController.java # 信息收集接口
│ │ │ │ ├── ExecController.java # 命令执行接口
│ │ │ │ └── FileController.java # 文件管理接口
│ │ │ └── tools/
│ │ │ ├── HttpRequestUtil.java # HTTP 客户端
│ │ │ ├── PayloadGenerater.java # Payload 生成器
│ │ │ ├── Transformer.java # 编译+压缩+加密转换器
│ │ │ ├── ResultReader.java # 响应结果解密器
│ │ │ ├── SQLiteUtil.java # SQLite 数据库操作
│ │ │ ├── TemplateUtil.java # 模板文件读取
│ │ │ └── PropertiesUtil.java # 配置读取
│ │ └── resources/
│ │ ├── application.properties # 配置文件 (端口/密钥)
│ │ ├── JavaTemplates/
│ │ │ ├── Info.txt # 信息收集类模板
│ │ │ ├── RCE.txt # 命令执行类模板
│ │ │ └── FileManager.txt # 文件管理类模板
│ │ ├── static/
│ │ │ ├── index.html # Web 控制面板
│ │ │ ├── css/style.css # 样式文件
│ │ │ └── js/app.js # 前端逻辑
│ │ └── templates/ # (预留)
│ └── test/
│ └── java/org/nox/NoxApplicationTests.java # 上下文加载测试
├── pom.xml # Maven 配置
├── mvnw / mvnw.cmd # Maven Wrapper
└── README.md # 本文件
编辑 src/main/resources/application.properties:
# 控制端服务端口
server.port=6789
# 应用名称
spring.application.name=Nox
# XOR 异或密钥 (需与 shell.jsp 保持一致)
xorKey=GRzGRYx7mRlIQgFd
# AES 加密密钥 (需与 shell.jsp 保持一致)
aesKey=VcApSBJ570GQhjrK
# AES-CBC 初始化向量 (需与 shell.jsp 保持一致)
aesIv=PKAXoyeRITP9JfbF注意:修改密钥后,必须同步更新
server/shell.jsp和src/main/resources/JavaTemplates/下所有模板中的对应密钥值。
待补充
本项目采用 MIT License 开源协议。
再次强调:本项目仅供安全研究与教育目的使用,严禁用于非法用途。任何因使用本项目而产生的法律责任,均由使用者自行承担。
感谢所有为网络安全研究做出贡献的开发者与研究者。
如有问题或建议,欢迎提交 Issue 或 Pull Request。