dest4590/CollapseScanner
GitHub: dest4590/CollapseScanner
CollapseScanner 是一款用 Rust 编写的 Java JAR/class 文件静态分析工具,能在不运行样本的情况下快速提取可疑指标并给出风险评级,帮助分析师高效完成初始分类。
Stars: 12 | Forks: 0
# CollapseScanner
CollapseScanner 是一款快速、本地优先的静态分析工具,专为 Java JAR、类文件和归档内容设计。它面向安全研究人员、恶意软件分析师和开发者,帮助他们在不运行可疑 Java 样本的情况下快速进行分类。
该扫描器主要关注 Java 字节码、类元数据、字符串和归档结构中的高价值指标。它不是反编译器,也不是沙箱。相反,它是一个分类工具,可帮助您找出样本中值得深入调查的部分。
## 检测能力
CollapseScanner 将检测结果分为以下几个实用类别:
### 网络与数据窃取指标
- IPv4 地址
- IPv6 地址
- URL
- 可疑 URL 和域名
- Discord webhooks
这些检测结果有助于发现硬编码的基础设施、命令与控制(C2)端点以及常见的数据外泄通道。
### 可疑 Java API 使用
CollapseScanner 可检测频繁用于恶意软件、加载器或高级规避逻辑的 Java API,包括:
- 通过 `Runtime.exec` 和 `ProcessBuilder` 执行进程
- 反射机制的使用,如 `Class.getDeclaredMethod` 及相关 API
- 动态类加载与类定义
- 脚本引擎执行
- Java agent 和 instrumentation API
- JVM attach API
- Native 桥接/底层 API,如 JNA 和 `Unsafe`
扫描器还会在可能的情况下,从字节码中提取相邻的字符串参数,这使得检测结果更具可操作性。例如,它不仅能报告使用了某个 API,还能提取出可能的命令字符串或被反射调用的成员名称。
### 混淆与加壳指标
- 高熵值的类 Base64 payload
- 高熵值的十六进制 payload
- 类名、方法名或字段名中基于 Unicode 的混淆
- 被篡改或格式错误的类文件
这些检查旨在标记那些故意隐藏行为或试图破坏常规分析工具的样本。
### 归档与 Native 内容指标
- 可疑的归档条目
- Native 库
- 与正常 Java 发行版不一致的包内容
这些发现有助于识别多语言混合 payload、嵌入的 Native 组件以及归档级别的异常。
## 工作原理
CollapseScanner 直接根据类文件格式解析 Java 类结构,并结合了多层分析:
- 针对字符串、类、方法和引用的常量池检查
- 针对方法调用上下文的字节码检查
- 针对 URL、IP、命令和可疑关键字的字符串启发式分析
- 针对打包异常的归档和资源检查
- 用于对最相关发现进行排序的评分与规范化机制
这种方法使扫描器能够获得比单纯原始字符串匹配更多的上下文,同时保持足以应对归档级分类的极高速度。
## 横向对比
### 与 JADX、CFR 或 FernFlower 等反编译器相比
CollapseScanner 并不试图还原源代码。当您需要可读的 Java 或 Kotlin 输出并愿意手动检查代码时,反编译器是更好的选择。CollapseScanner 更适合首次分类,因为它速度更快、完全在本地运行,并且专注于检测而非源代码恢复。
### 与通用字符串扫描器或 YARA 规则相比
字符串扫描器擅长查找字符串指标,但通常会忽略上下文。CollapseScanner 能够理解 Java 类结构和字节码,从而为某些 API 调用附加上下文,这使其在识别字符串重要性及使用位置方面更具优势。
### 与沙箱或动态分析相比
沙箱可以观察运行时行为、网络流量和进程创建。CollapseScanner 无法做到这一点。它提供的是速度、安全性和离线分析能力。它最适合在动态分析之前使用,或者当您只有静态样本并希望优先挑出可疑文件时使用。
### 实践总结
- 当您想了解控制流和类似源码的代码时,请使用反编译器。
- 当您想快速对大量 Java 样本进行分类并提取可疑指标时,请使用 CollapseScanner。
- 当您需要行为确认时,请使用沙箱。
## 功能特性
- JAR 和类文件的快速并行扫描
- 详细的可疑 API 检测
- 字符串、URL、IP 和域名分析
- 归档和资源检查
- 扫描后的交互式 CLI 资源管理器
- 用于报告或下游工具链的 JSON 导出
- 风险评分和严重性摘要
## 安装
### 从源码构建
需要 [Rust](https://rustup.rs/)。
```
git clone https://github.com/CollapseLoader/CollapseScanner.git
cd CollapseScanner
cargo run --release
```
## 使用方法
```
# 扫描 JAR、class 文件或目录
collapsescanner
# 启用所有检测运行
collapsescanner --mode all
# 运行然后进入 interactive explorer
collapsescanner
```
### 交互式命令
CollapseScanner 完成扫描后,可以打开一个交互式 CLI 来查看结果。
| 命令 | 描述 |
| -------------------- | -------------------------------------------- |
| `detailed` | 显示可疑文件的完整报告 |
| `summary` | 显示扫描统计信息和严重性矩阵 |
| `files` | 列出具有可疑发现的文件 |
| `inspect ` | 详细查看特定结果 |
| `sort ` | 按风险级别或文件路径对结果进行排序 |
| `export ` | 将发现导出为 JSON |
| `clear` | 清除终端 |
| `exit` | 退出交互模式 |
## 报告输出
扫描结果通常包括:
- 文件路径
- 带有符号和严重程度的结构化发现
- 目标为 Java 类时的类元数据
- 危险评分及简短说明
- 用于外部分析流程的可选 JSON 输出
输出示例:
```
[#] Total Findings: 13 | Files with Findings: 10 | Risk Level: MODERATE RISK (5/10)
[?] Findings Breakdown:
Suspicious Java API [MEDIUM] (3)
[1] Process execution API usage: Likely running "cmd.exe /c ..."
Encoded Payload [LOW] (4)
[1] High-entropy Base64-like blob (480 chars)
[*] Severity Distribution
[0] Critical [1] High [7] Medium [2] Low
```
## 局限性
CollapseScanner 是纯粹的静态分析工具。它不执行代码、不追踪实时网络活动,也不完整模拟 JVM。它的职责是快速识别潜在的高风险内容,并为您提供足够的上下文来决定下一步要检查什么。
因此,该扫描器在作为手动审查或动态分析之前的初始分类层使用时效果最佳。
## 安全与隐私
- 仅静态分析
- 无代码执行
- 本地优先处理
标签:API滥用检测, C2通信检测, class文件分析, DAST, DNS 反向解析, GHAS, IP 地址批量处理, JAR分析, Java安全, URL发现, 云安全监控, 云资产清单, 动态类加载, 反射机制检测, 反混淆, 可视化界面, 命令执行检测, 安全检测, 恶意软件分析, 打包器检测, 文件熵分析, 沙箱逃逸分析, 网络指标提取, 逆向工程, 通知系统, 静态分析