Sam-Dowling/GloveBox

GitHub: Sam-Dowling/GloveBox

一个完全离线的单文件安全分析器,在浏览器中运行以分析多种格式文件并提取威胁指标。

Stars: 0 | Forks: 0

# 🧤📦 GloveBox **一个完全离线、单文件的安全分析器,用于可疑文件。** 无需服务器、无需上传、无法追踪 —— 只需放置文件并检查。 ## 为什么选择 GloveBox? SOC 分析人员、事件响应人员和安全意识用户需要一种安全检查可疑文件的方式,而无需将它们上传到第三方服务或启动沙箱。GloveBox 完全在浏览器中运行 —— **任何内容都不会离开你的设备**。 - **零网络访问** — 严格的内容安全策略(CSP)阻止所有外部请求。 - **单一 HTML 文件** — 无需安装、无依赖,在任何现代浏览器上均可使用。 - **广泛的格式支持** — Office 文档、PDF、邮件、压缩包、图像、脚本等。 ## 功能特性 ### 支持的格式 | 类别 | 扩展名 | |---|---| | **Office(现代)** | `.docx` `.docm` `.xlsx` `.xlsm` `.pptx` `.pptm` `.ods` | | **Office(旧版)** | `.doc` `.xls` `.ppt` | | **OpenDocument** | `.odt`(文本)· `.odp`(演示) | | **RTF** | `.rtf` — 文本提取 + OLE/漏洞分析 | | **PDF** | `.pdf` | | **邮件** | `.eml` `.msg` | | **HTML** | `.html` `.htm` `.mht` — 沙箱预览 + 源码查看 | | **压缩包** | `.zip` `.gz` `.tar` `.tar.gz`/`.tgz` `.rar` `.7z` `.cab` — 内容列表、威胁标记、可点击条目提取、gzip 解压、TAR 解析、ZipCrypto 解密、不支持格式的十六进制转储 | | **磁盘镜像** | `.iso` `.img` — ISO 9660 文件系统列表 | | **OneNote** | `.one` — 嵌入对象提取 + 钓鱼检测 | | **Windows 文件** | `.lnk`(Shell 链接)· `.hta`(HTML 应用程序)· `.url` `.webloc`(网络快捷方式)· `.reg`(注册表)· `.inf`(安装信息)· `.sct`(脚本组件)· `.msi`(安装程序) | | **脚本** | `.wsf` `.wsc` `.wsh`(Windows 脚本文件 — 已解析) · `.vbs` `.ps1` `.bat` `.cmd` `.js` | | **取证** | `.evtx`(Windows 事件日志)· `.sqlite` `.db`(SQLite — 自动检测 Chrome/Firefox/Edge 历史记录) | | **数据** | `.csv` `.tsv` · `.iqy`(网络查询)· `.slk`(符号链接) | | **图像** | `.jpg` `.jpeg` `.png` `.gif` `.bmp` `.webp` `.ico` `.tif` `.tiff` `.avif` `.svg` — 预览 + 隐写术/多态检测 | | **通用兜底** | *任意文件* — 带行号的纯文本视图,或二进制数据的十六进制转储 | ### 安全分析 | 能力 | 详情 | |---|---| | **风险评估** | 颜色编码的风险条(低 / 中 / 高 / 严重)以及发现摘要 | | **文档搜索** | 工具栏内搜索,支持匹配高亮、匹配计数,以及 `Enter`/`Shift+Enter` 导航(`Ctrl+F` 聚焦) | | **YARA 规则引擎** | 浏览器内 YARA 规则解析器与匹配器 — 加载/编辑/保存 `.yar` 规则,对任意加载文件进行文本、十六进制和正则字符串匹配。内置默认检测规则并在文件加载时自动扫描 | | **文件哈希** | 在浏览器中计算 MD5 · SHA-1 · SHA-256,支持一键 VirusTotal 查询 | | **IOC 提取** | 从文档内容和 VBA 源码中提取 URL、电子邮件地址、IP 地址、文件路径和 UNC 路径 | | **VBA / 宏分析** | 提取并语法高亮 VBA 源码;标记自动执行入口点(`AutoOpen`、`Workbook_Open`、`Shell` 等) | | **宏下载** | 将解码后的 VBA 保存为 `.txt`,或下载原始 `vbaProject.bin` 以便使用 olevba / oledump 离线分析 | | **PDF 扫描** | 检测 `/JavaScript`、`/OpenAction`、`/Launch`、`/EmbeddedFile`、URI、XFA 表单等风险操作,并通过 YARA 规则进行扫描 | | **EML / 邮件分析** | 完整的 RFC 5322/MIME 解析器 — 头部、多部分正文、附件、SPF/DKIM/DMARC 认证结果、追踪像素检测 | | **LNK 检查** | MS-SHLLINK 二进制解析器 — 目标路径、参数、时间戳、危险命令检测、UNC 凭证窃取模式 | | **HTA 分析** | 脚本提取、`` 属性解析、混淆检测、40+ 可疑模式检查 | | **脚本扫描** | 通用查看器扫描 `.vbs`、`.ps1`、`.bat`、`.rtf` 等脚本类型中的危险执行模式并进行 YARA 匹配 | | **图像分析** | 隐写术指标、多态文件检测、十六进制头检查以识别嵌入的有效载荷 | | **EVTX 分析** | 解析 Windows 事件日志二进制格式(ElfFile 头、块、BinXml 记录);提取事件 ID、级别、提供者、通道、计算机、时间戳和事件数据;标记可疑事件(4688、4624/4625、1102、7045、4104);提取 IOC:用户名(`DOMAIN\User`)、主机名、IP、进程路径、命令行、哈希值、URL、文件/UNC 路径;支持导出为 CSV | | **SQLite / 浏览器历史** | 读取 SQLite 二进制格式(B 树页、模式、单元格数据);自动检测 Chrome/Edge/Firefox 历史数据库;提取 URL、标题、访问次数、时间戳;通用表浏览器支持非历史 SQLite 文件;导出为 CSV | | **编码内容检测** | 扫描 Base64、十六进制、Base32 编码块及压缩流(gzip/zlib/deflate);解码并分类负载(PE、脚本、URL 列表等),提取 IOC,提供“加载以分析”选项 | | **压缩包深入** | 点击 ZIP/压缩包中的条目以打开并分析内部文件,支持返回导航 | | **文档元数据** | 从 `docProps/core.xml` 提取作者、标题、日期和修订次数 | ### 用户界面 | 功能 | 详情 | |---|---| | **午夜玻璃主题** | 带磨砂玻璃面板、渐变表面和青色强调色的高级暗色模式 | | **浅色/深色切换** | 单击切换明暗主题(🌙 / ☀) | | **浮动缩放控件** | 浮动控制,支持 50%–200% 缩放,不遮挡内容 | | **点击拖拽平移** | 点击并拖拽以平移已渲染的文档 | | **可折叠侧边栏** | 单面板侧边栏,支持折叠的 `
` 区域:文件信息、宏、签名与 IOC | | **可调整侧边栏大小** | 拖动侧边栏边缘调整大小(占视口的 33%–50%) | | **键盘快捷键** | `S` 切换侧边栏 · `Y` 打开 YARA 对话框 · `?`/`H` 帮助与关于 · `Ctrl+F` 搜索文档 · `Ctrl+V` 粘贴文件以分析 | | **加载遮罩** | 解析大文件时显示旋转加载动画和状态信息 | | **Toast 通知** | 非侵入式反馈,用于下载、剪贴板操作和错误提示 | ## 快速开始 1. **在任意现代浏览器中打开** `glovebox.html`(Chrome、Firefox、Edge、Safari)。 2. **放置文件**到放置区域,或点击 **📁 打开文件**(或使用 **Ctrl+V** 粘贴)。 3. 文件将在查看器中渲染 —— 使用点击拖拽平移,并通过浮动 ± 按钮缩放。 4. 点击 **🛡 切换侧边栏**或按 **S**)打开安全面板 —— 一个可滚动、单列的可折叠区域: - **📋 文件信息** — 文件格式、MD5/SHA-1/SHA-256 哈希、VBA 项目哈希、文档元数据。 - **⚡ 宏** — 带语法高亮的 VBA 模块源码、自动执行警告、下载选项(仅当检测到宏时显示)。 - **🔍 签名与 IOC** — YARA 规则匹配结果和 IOC(URL、邮件、IP、文件路径、UNC 路径),按严重性排序、可筛选并导出为 `.txt`。 5. 按 **Y** 打开 YARA 规则编辑器 — 加载自定义规则、编辑、验证并扫描当前文件。 6. 使用 **🌙** 在明暗主题之间切换。 ## 从源码构建 需要 **Python 3.8+**(仅使用标准库 — 无需 `pip install`)。 ``` python build.py ``` 构建脚本会读取 `src/styles.css` 和以下 JS 源文件,将所有 CSS 和 JavaScript 内联为一个独立的 HTML 文档,并生成两个相同的副本: | 输出 | 用途 | |---|---| | `glovebox.html` | 本地使用的根级别便捷副本 | | `docs/index.html` | GitHub Pages 部署 | ### JS 拼接顺序 应用代码按依赖顺序拼接: ``` src/constants.js # Namespace constants, DOM helpers, unit converters src/vba-utils.js # Shared VBA binary decoder + auto-exec pattern scanner src/yara-engine.js # YaraEngine — in-browser YARA rule parser + matcher src/decompressor.js # Decompressor — gzip/deflate/raw decompression via DecompressionStream src/encoded-content-detector.js # EncodedContentDetector — Base64/hex/Base32/compressed blob scanner src/docx-parser.js # DocxParser — ZIP extraction for DOCX/DOCM src/style-resolver.js # StyleResolver — resolves run/paragraph styles src/numbering-resolver.js # NumberingResolver — list counters and markers src/content-renderer.js # ContentRenderer — DOCX DOM → HTML elements src/security-analyzer.js # SecurityAnalyzer — findings, metadata, external refs src/renderers/ole-cfb-parser.js # OleCfbParser — CFB/OLE2 compound file reader src/renderers/xlsx-renderer.js # XlsxRenderer — spreadsheet view (SheetJS) src/renderers/pptx-renderer.js # PptxRenderer — slide canvas renderer src/renderers/odt-renderer.js # OdtRenderer — OpenDocument text renderer src/renderers/odp-renderer.js # OdpRenderer — OpenDocument presentation renderer src/renderers/ppt-renderer.js # PptRenderer — legacy .ppt slide extraction src/renderers/rtf-renderer.js # RtfRenderer — RTF text + OLE/exploit analysis src/renderers/zip-renderer.js # ZipRenderer — archive listing + threat flagging src/renderers/iso-renderer.js # IsoRenderer — ISO 9660 filesystem listing src/renderers/url-renderer.js # UrlRenderer — .url / .webloc shortcut parser src/renderers/onenote-renderer.js # OneNoteRenderer — .one embedded object extraction src/renderers/iqy-slk-renderer.js # IqySlkRenderer — Internet Query + Symbolic Link files src/renderers/wsf-renderer.js # WsfRenderer — Windows Script File parser src/renderers/reg-renderer.js # RegRenderer — Windows Registry File (.reg) parser src/renderers/inf-renderer.js # InfSctRenderer — .inf setup info + .sct scriptlet parser src/renderers/msi-renderer.js # MsiRenderer — Windows Installer (.msi) analyser src/renderers/csv-renderer.js # CsvRenderer — CSV/TSV table view src/renderers/evtx-renderer.js # EvtxRenderer — Windows Event Log parser src/renderers/sqlite-renderer.js # SqliteRenderer — SQLite + browser history src/renderers/doc-renderer.js # DocBinaryRenderer — legacy .doc text extraction src/renderers/msg-renderer.js # MsgRenderer — Outlook .msg email view src/renderers/eml-renderer.js # EmlRenderer — RFC 5322/MIME email parser src/renderers/lnk-renderer.js # LnkRenderer — Windows Shell Link (.lnk) parser src/renderers/hta-renderer.js # HtaRenderer — HTA source viewer + security scanner src/renderers/html-renderer.js # HtmlRenderer — sandboxed HTML preview + source view src/renderers/pdf-renderer.js # PdfRenderer — PDF page renderer + security scanner src/renderers/image-renderer.js # ImageRenderer — image preview + stego/polyglot detection src/renderers/plaintext-renderer.js # PlainTextRenderer — catch-all text/hex viewer src/app/app-core.js # App class — constructor, init, drop-zone, toolbar src/app/app-load.js # File loading, hashing (MD5/SHA), IOC extraction src/app/app-sidebar.js # Sidebar rendering — risk bar + collapsible panes src/app/app-yara.js # YARA rule editor dialog, scanning, result display src/app/app-ui.js # UI helpers (zoom, theme, pan, toast) + bootstrap ``` 默认 YARA 规则(`src/default-rules.yar`)会被转义并注入为 JS 常量,位于应用代码之前。 第三方库(`vendor/jszip.min.js`、`vendor/xlsx.full.min.js`、`vendor/pdf.min.js`、`vendor/pdf.worker.min.js`)以内联 `