DaviAlcanfor/leviathan

GitHub: DaviAlcanfor/leviathan

一个教育用途的 C2 框架,通过 Flask 服务器、C# implant 与 Donut shellcode 实现命令下发与执行的完整链路。

Stars: 0 | Forks: 0

# Leviathan 一个出于教育目的构建的命令与控制(C2)框架。使用 Python 编写的 Flask 服务器,使用 C# 编写的 agent,并通过 Donut 编译为位置无关的 shellcode,最后通过 C# 加载器进行投递。 ``` [Operator] | | POST /pong (queue command) v [Flask Server] <-----> [MongoDB] | | GET /assets (shellcode) v [Loader.exe] | | VirtualAlloc + CreateThread v [Agent shellcode] | | POST /ping { info, output } | <-----------{ cmd } | | CommandExecution v [Victim Host] ``` ## 设置 ``` make setup # create venv, install dependencies make server # start C2 server (https://0.0.0.0:5000) ``` 需要 Python 3.10+、.NET 8.0 SDK,以及本地运行的 MongoDB。 TLS 证书需放置在 `server/certs/cert.pem` 和 `server/certs/key.pem`。可以通过以下命令生成自签名证书: ``` openssl req -x509 -newkey rsa:2048 -nodes \ -keyout server/certs/key.pem -out server/certs/cert.pem -days 365 \ -subj "/CN=localhost" ``` ## CLI 交互式操作员界面: ``` make cli ``` ``` leviathan> agents # list connected agents leviathan> cmd whoami # queue a command leviathan> result # retrieve output leviathan> exit ``` ## 构建 pipeline ``` python build.py ``` 编译 Agent (.NET) → 通过 Donut 生成 shellcode → 编译 Loader。输出:`server/agent.bin`。 ## 架构 | 组件 | 语言 | 描述 | |---|---|---| | `server/` | Python / Flask | C2 服务器、操作员 CLI、MongoDB 持久化存储 | | `implant/Agent/` | C# (.NET 8) | Agent:系统信息收集、命令执行、HTTP 轮询 | | `implant/Loader/` | C# (.NET 9) | Loader:获取并在内存中执行 agent shellcode | | `build.py` | Python | 编译 Agent → Donut → shellcode → 编译 Loader | | `Makefile` | — | `setup`、`server`、`cli`、`clean` 目标 | ## 服务器 endpoint | 方法 | 路由 | 描述 | |---|---|---| | `GET` | `/` | 健康检查 | | `POST` | `/ping` | Agent 同步:发送信息及输出,接收下一条命令 | | `POST` | `/pong` | 操作员为 agent 排队一条命令 | | `GET` | `/assets` | 提供 agent shellcode | Agent 身份在每次请求中通过 `X-Session-Id` header(受害者 UUID)传递。 ## Agent 功能 - 系统信息收集:主机名、用户名、管理员状态、OS 版本、架构、内网 IP、公网 IP - 通过 `cmd.exe` 执行命令,并保持工作目录状态 - 单一轮询循环:发送上一条命令的输出,接收下一条命令 - 支持带抖动的可配置轮询间隔 - 每次请求随机轮换 user-agent ## 配置 `.env` 变量: | 变量 | 默认值 | 描述 | |---|---|---| | `SERVER_URL` | `https://127.0.0.1:5000` | C2 服务器的公网 URL | | `MONGO_URI` | `mongodb://localhost:27017` | MongoDB 连接字符串 | | `MONGO_DB_NAME` | `leviathan` | 数据库名称 | Agent 端配置(`implant/Agent/Config.cs`): | 字段 | 描述 | |---|---| | `ServerUrl` | C2 服务器 URL | | `UserAgents` | 用于请求轮换的 user-agent 池 | | `PollingInterval` | 两次 ping 之间的基础休眠时间(毫秒) | | `JitterMax` | 添加到轮询间隔的最大随机抖动(毫秒) | ## 项目结构 ``` Leviathan/ ├── implant/ │ ├── Agent/ │ │ ├── Models/ │ │ │ ├── CheckinPayload.cs │ │ │ └── ResultPayload.cs │ │ ├── Modules/ │ │ │ ├── CommandExecution.cs │ │ │ └── SystemInfo.cs │ │ ├── Config.cs │ │ └── Program.cs │ ├── Loader/ │ │ ├── Config.cs │ │ └── Program.cs │ └── Leviathan.sln ├── server/ │ ├── certs/ │ ├── cli.py │ ├── config.py │ ├── db.py │ ├── main.py │ ├── requirements.txt │ ├── routes.py │ └── shellcode_generator.py ├── build.py ├── Makefile ├── .env ├── .gitignore ├── LICENSE └── README.md ``` ## 免责声明 本项目仅供教育目的及授权的安全研究使用。请勿在您不拥有或未获得明确书面测试许可的系统上部署。作者不对任何滥用行为负责。
标签:C2框架, DNS 反向解析, Flask, IP 地址批量处理, Python, Shellcode生成, 安全学习资源, 无后门, 无线安全, 网络信息收集, 逆向工具