frangelbarrera/Spyglass-malware-analysis

GitHub: frangelbarrera/Spyglass-malware-analysis

SpyGlass 是一个集 Frida 动态监控、PE 静态分析、DNS 蜜罐与实时 Web 仪表板于一体的恶意软件行为分析平台。

Stars: 7 | Forks: 0

# SpyGlass [![Python](https://img.shields.io/badge/Python-3.8+-blue.svg)](https://www.python.org/) [![License](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE) [![Version](https://img.shields.io/badge/Version-1.0.0-orange.svg)]() [![Platform](https://img.shields.io/badge/Platform-Windows-blue.svg)]() [![Last Commit](https://img.shields.io/github/last-commit/frangelbarrera/Spyglass-malware-analysis)](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. **定期备份**数据库和日志 ## 截图 ### 事件类型分布 ![主仪表板](https://static.pigsec.cn/wp-content/uploads/repos/cas/40/406ebbeaf0ba7390a75e26b931d61fac80273a20d5ab0143a47c60cce6c1dd9a.jpg) *截图展示了 SpyGlass 仪表板及其事件统计,包括事件时间线以及与恶意软件相关活动的分布情况。* ### 进程和文件分析 ![事件日志](https://static.pigsec.cn/wp-content/uploads/repos/cas/04/04d4f3777193f5445e1ff8fce8717d44cd4017dbfbf1cf31720387ebc4568b8d.jpg) *截图展示了 SpyGlass 界面,其中包含用于附加到运行中应用程序的进程分析器,以及用于检查可执行文件的静态分析面板。* ### 文件分析报告 ![网络图表](https://static.pigsec.cn/wp-content/uploads/repos/cas/83/83863f3b2ce32fe471ea0015dd94ad3650aeca604cf36c8f49d18f78551c40e6.jpg) *截图展示了对可执行文件进行静态分析的结果,显示了详细的属性和安全见解。* ### 每小时事件数 ![进程分析](https://static.pigsec.cn/wp-content/uploads/repos/cas/1c/1c1da856a4d8129a500aadbba9ea16d7de52fab2fedd475d7b683f49ad342ba5.jpg) *截图展示了 SpyGlass 仪表板,包含每小时事件的时间线,以及诸如 FRIDA 附加、HTTP 请求和 TCP 连接等事件类型的分布图。* ### 进程分析器和事件控制 ![文件分析](https://static.pigsec.cn/wp-content/uploads/repos/cas/d5/d5afc5d17ff2efe1ffc0e4ad92ef2a90f3ae93a55c2faec775744bce0c644d0f.jpg) ![数据库接口](https://static.pigsec.cn/wp-content/uploads/repos/cas/9b/9b133f7b89ac4dfda5a1dfd31e045f2cbd6ab0eefe5fcc9afdc3b3dde5e07726.jpg) *截图展示了 SpyGlass 控制面板,其中包含过滤选项、列出带有附加/分离控制的活动应用程序的进程分析器,以及静态文件分析部分。* ## 许可证 该项目在 MIT 许可证下授权 - 详情请参阅 [LICENSE](LICENSE) 文件。 ⭐ **如果这个项目对您有用,请在 GitHub 上给它点个 Star!** *SpyGlass - 网络安全的智能监控*
标签:DAST, Docker支持, Frida, IP 地址批量处理, 云安全监控, 威胁情报, 开发者工具, 恶意软件分析, 沙箱监控, 网络测绘, 逆向工具, 静态分析