frangelbarrera/Spyglass-malware-analysis
GitHub: frangelbarrera/Spyglass-malware-analysis
SpyGlass 是一个集 Frida 动态监控、PE 静态分析、DNS 蜜罐与实时 Web 仪表板于一体的恶意软件行为分析平台。
Stars: 7 | Forks: 0
# SpyGlass
[](https://www.python.org/)
[](LICENSE)
[]()
[]()
[](https://github.com/frangelbarrera/Spyglass-malware-analysis)
## 目录
- [功能](#-features)
- [架构](#️-architecture)
- [安装](#-installation)
- [配置](#️-configuration)
- [使用](#-usage)
- [Web 界面](#-web-interface)
- [REST API](#-rest-api)
- [测试](#-testing)
- [指标与告警](#-metrics-and-alerts)
- [安全](#-security)
- [贡献](#-contribution)
- [许可证](#-license)
- [截图](#-screenshots)
## 功能
### **动态分析**
- 使用 Frida 进行**实时进程监控**
- 针对 system call(文件、网络、注册表、内存)的**高级 hooks**
- **自动注入**目标进程
- 执行期间的**恶意行为检测**
### **静态分析**
- **完整的 PE 分析**(导入、导出、节区)
- 用于检测混淆的**熵值计算**
- 提取 ASCII 和 Unicode **字符串**
- **Packer 检测**(UPX、PECompact 等)
- 基于多因素的**风险评分**
### **网络监控**
- **智能 DNS Spoofing**
- 模拟 C2 响应的 **HTTP 监听器**
- 常用端口上的**通用 TCP/UDP 监听器**
- **可疑连接检测**
### **告警系统**
- 按严重程度(严重、高、中、低)划分的**可配置规则**
- 带有通知的**实时告警**
- **持久化存储至 SQLite 数据库**
- 用于监控的 **Web 仪表板**
### **数据库**
- 事件和分析的**结构化存储**
- 带有优化索引的**高效查询**
- **自动清理**旧数据
- 导出日志和报告
## 架构
```
SpyGlass/
├── main.py # Main entry point
├── api_server.py # Flask web server
├── config.json # Global configuration
├── requirements.txt # Python dependencies
├── spyglass.db # SQLite database (generated)
├── spyglass.log # System logs (generated)
├── core/ # Core system
│ ├── alert_system.py # Alert system
│ ├── database.py # Database management
│ ├── dns_server.py # DNS spoofing server
│ ├── frida_analyzer.py # Dynamic analysis with Frida
│ ├── listeners.py # Network listeners
│ ├── logger.py # Logging system
│ └── static_analyzer.py # Static analysis
├── analysis/ # Analysis scripts
│ └── frida_scripts/
│ └── hooks.js # Frida hooks
├── frida/ # Frida server directory (download required)
│ └── README.txt # Instructions for Frida server setup
├── templates/ # Web templates
│ └── index.html # Main dashboard
├── docs/ # Documentation and screenshots
│ └── images/ # Demo screenshots
└── logs/ # Additional log directory (generated)
```
### 核心组件
1. **DNS Server**:拦截 DNS 查询并使用本地 IP 响应
2. **HTTP Listener**:模拟 C2 响应的 Web 服务器
3. **Generic Listeners**:监控可疑的 TCP/UDP 端口
4. **Frida Analyzer**:进程注入和监控
5. **Static Analyzer**:无需执行的文件分析
6. **Alert System**:威胁检测和通知
7. **Database**:数据持久化和统计
8. **Web API**:用于控制和监控的 REST 接口
## 安装
### 前置条件
- **操作系统**:Windows 10/11(用于分析),Linux/Mac(用于开发)
- **Python**:3.8 或更高版本
- **权限**:管理员(用于特权端口)
- **Frida**:用于高级动态分析
### 自动安装
```
# Clone 仓库
git clone https://github.com/frangelbarrera/Spyglass-malware-analysis.git
cd spyglass
# 安装依赖
pip install -r requirements.txt
```
### 手动安装
1. **安装 Python 和依赖项**:
```
pip install frida-tools pefile flask colorlog dnslib requests
```
2. **安装 Frida Server**(动态分析必需):
- 从官方发布页面下载 Windows x64 的 Frida server 二进制文件:[https://github.com/frida/frida/releases](https://github.com/frida/frida/releases)
- 查找最新的 `frida-server-*-windows-x86_64.exe` 文件(例如:`frida-server-17.4.0-windows-x86_64.exe`)
- 将下载的可执行文件放入 `frida/` 目录中
- **注意**:由于大小限制,该二进制文件不包含在 repository 中,必须单独下载
3. **配置权限**:
```
# Run as administrator 以获取特权端口
# 或配置防火墙以允许连接
```
## 配置
`config.json` 文件包含所有系统配置:
```
{
"frida": {
"enabled": true,
"script_path": "analysis/frida_scripts/hooks.js",
"auto_attach_processes": ["notepad.exe", "calc.exe"],
"scan_interval_seconds": 5
},
"network": {
"dns_spoof_ip": "127.0.0.1",
"generic_tcp_ports": [21, 25, 110, 143, 443, 1337],
"generic_udp_ports": [67, 69, 1337]
},
"logging": {
"log_file": "spyglass.log",
"console_level": "INFO",
"file_level": "DEBUG"
},
"web_interface": {
"host": "0.0.0.0",
"port": 5000,
"debug": false
}
}
```
### 环境变量
```
# 通过环境变量进行可选配置
export SPYGLASS_DB_PATH="/custom/path/spyglass.db"
export SPYGLASS_LOG_LEVEL="DEBUG"
export SPYGLASS_WEB_PORT="8080"
```
## 使用
### 快速开始
```
# 运行 SpyGlass
python main.py
# 或使用批处理脚本
.\start_spyglass.bat
```
### 运行模式
1. **Honeypot 模式**(默认):
- 启动所有网络服务
- 自动监控进程
- 生成实时告警
2. **分析模式**:
- 特定文件的静态分析
- 手动注入进程
3. **实验室模式**:
- 用于对恶意软件样本进行受控测试
### 基本命令
```
# 实时查看日志
tail -f spyglass.log
# 检查活跃服务
netstat -ano | findstr :53
netstat -ano | findstr :80
# 访问 web dashboard
# 在浏览器中打开 http://localhost:5000
```
## Web 界面
SpyGlass 包含一个完整的 Web 仪表板,可通过 `http://localhost:5000` 访问:
### 主仪表板
- **系统状态概览**
- 通过 Server-Sent Events 的**实时事件**
- 事件和告警**统计**
- **活动图表**
### 可用页面
- `/` - 主仪表板
- `/api/processes` - 系统进程列表
- `/api/events-stream` - SSE 事件流
- `/api/analyze/file` - 文件分析
- `/api/alerts` - 告警管理
## REST API
### 主要 Endpoints
#### 进程
```
GET /api/processes
GET /api/frida/attached
POST /api/frida/attach/{pid}
POST /api/frida/detach/{pid}
```
#### 分析
```
POST /api/analyze/file
GET /api/analyze/stats
```
#### 数据库
```
GET /api/db/events
GET /api/db/files
GET /api/db/stats
POST /api/db/cleanup
```
#### 日志和告警
```
GET /api/logs/search
GET /api/logs/export
GET /api/alerts
POST /api/alerts/{id}/acknowledge
```
### API 使用示例
```
import requests
# 获取进程
processes = requests.get('http://localhost:5000/api/processes').json()
# 分析文件
analysis = requests.post('http://localhost:5000/api/analyze/file',
json={'file_path': 'C:\\malware.exe'}).json()
# 获取统计信息
stats = requests.get('http://localhost:5000/api/db/stats').json()
```
## 测试
### 基本测试
```
# 验证安装
python -c "import frida; print('Frida OK')"
# 测试数据库
python -c "from core.database import spyglass_db; print('DB OK')"
# 运行分析测试
python -c "from core.static_analyzer import static_analyzer; print('Analyzer OK')"
```
### 使用受控恶意软件进行测试
1. 设置 Windows 11 虚拟机 (VM)
2. 在宿主机上安装 SpyGlass
3. 在客户机上运行恶意软件样本
4. 监控告警和日志
### 推荐的测试用例
- **DNS Tunneling**:如 dnscat 工具
- **HTTP C2**:Meterpreter、Cobalt Strike beacons
- **Fileless Malware**:PowerShell Empire
- **Packers**:UPX、Themida
## 指标与告警
### 告警类型
| 严重程度 | 描述 | 示例 |
|----------|-------------|----------|
| **严重** | 高风险威胁 | 检测到恶意软件、高风险文件 |
| **高** | 可疑活动 | 连接到恶意端口、敏感注册表访问 |
| **中** | 异常行为 | 高熵值、进程创建 |
| **低** | 一般信息 | 正常的系统事件 |
### 主要指标
- **每小时事件数**:系统活动量
- **按严重程度划分的告警**:检测到的威胁分布
- **受监控的进程**:动态分析覆盖率
- **已分析的文件**:静态分析统计
## 安全
### 安全注意事项
- **管理员执行**:特权端口必需
- **隔离**:使用 VM 测试真实恶意软件
- **防火墙**:配置适当的规则
- **敏感日志**:避免记录个人信息
### 最佳实践
1. **不要在没有隔离的生产环境**中运行
2. 使用**专用 VM** 进行恶意软件分析
3. **保持 Frida 和依赖项更新**
4. **监控资源**(CPU、内存、磁盘)
5. **定期备份**数据库和日志
## 截图
### 事件类型分布

*截图展示了 SpyGlass 仪表板及其事件统计,包括事件时间线以及与恶意软件相关活动的分布情况。*
### 进程和文件分析

*截图展示了 SpyGlass 界面,其中包含用于附加到运行中应用程序的进程分析器,以及用于检查可执行文件的静态分析面板。*
### 文件分析报告

*截图展示了对可执行文件进行静态分析的结果,显示了详细的属性和安全见解。*
### 每小时事件数

*截图展示了 SpyGlass 仪表板,包含每小时事件的时间线,以及诸如 FRIDA 附加、HTTP 请求和 TCP 连接等事件类型的分布图。*
### 进程分析器和事件控制


*截图展示了 SpyGlass 控制面板,其中包含过滤选项、列出带有附加/分离控制的活动应用程序的进程分析器,以及静态文件分析部分。*
## 许可证
该项目在 MIT 许可证下授权 - 详情请参阅 [LICENSE](LICENSE) 文件。
⭐ **如果这个项目对您有用,请在 GitHub 上给它点个 Star!**
*SpyGlass - 网络安全的智能监控*
标签:DAST, Docker支持, Frida, IP 地址批量处理, 云安全监控, 威胁情报, 开发者工具, 恶意软件分析, 沙箱监控, 网络测绘, 逆向工具, 静态分析