atomdrift-project/scan
GitHub: atomdrift-project/scan
一款基于本地 ML 模型和逆向工程分析的开源恶意软件扫描器,专为检测开源生态系统中的供应链攻击而设计。
Stars: 0 | Forks: 1
# Atomdrift 扫描
Atomdrift Scan 是一款可嵌入式开源恶意软件扫描器,专为开源生态系统调优,旨在捕获供应链攻击,无论文件格式是 ELF、Ruby、Python、Shell、PHP、C、Go、PE 还是其他任何格式(我们支持处理 95 种以上的文件类型!)
Atomscan 旨在替代如 socket.dev、ReversingLabs 和 Aikido 等专有扫描器,以及如 ClamAV 和 malcontent 等传统的开源扫描器。为了“以毒攻毒”,Atomscan 基于高效且确定性的本地 AI 模型——旨在任何硬件或操作系统上运行。与大多数依赖模式匹配的扫描器不同,它通过使用 rizin 和 tree-sitter 等工具进行主动逆向工程来剖析每个文件。Atomdrift 将每个文件分解为一个 atom 树,并从中寻找“malecule”形状以推导出概率。
与大多数扫描器不同,Atomscan 允许您根据涉及特定文件类型的超过 1 亿个样本的预测出现率,设置可接受的误报水平。对您的 CI pipeline 感到担忧?使用 `atomscan -l5000 `;不想用警报轰炸 SOC?使用 `atomscan -l0`(默认值为 L50,即每 1 亿个文件中出现 50 次)。
我们采用 Apache 2.0 许可证,并在以下架构上积极开发中——如果您使用的是其他架构,大概率也能正常运行(如果不行,欢迎提交 PR)。
* Linux [x86-64]
* macOS [arm64]
* FreeBSD [arm64, x86-64]
* OpenBSD [x86-64]
* OmniOS/illumos [x86-64]
Atomdrift 的核心价值观是:隐私优先、本地优先、高效和透明。
unpack] TS[tree-sitter
parse scripts] YARA[YARA
pattern match] RIZIN[rizin
disassemble] end CLEAVE -->|AnalysisReport
92k rules → MBC + ATT&CK| FF[filefacts
feature extraction] FF -->|standardized
feature vector| SCAN[scan
ONNX inference] AZOTH[(azoth
GBT ensemble)] -.loads.-> SCAN SCAN -->|Decision + SHAP reasons| OUT{{verdict
hostile · suspicious · benign}} SCAN -.->|prob ≥ gate| INTERPRET[--llm
local LLM blend] INTERPRET -.-> OUT click CLEAVE "https://atomdrift.org/cleave" _blank click FF "https://atomdrift.org/filefacts" _blank click AZOTH "https://atomdrift.org/azoth" _blank click SCAN "https://atomdrift.org/scan" _blank click UPX "https://upx.github.io/" _blank click TS "https://tree-sitter.github.io/tree-sitter/" _blank click YARA "https://virustotal.github.io/yara-x/" _blank click RIZIN "https://rizin.re/" _blank ``` ## 依赖项 * Rust 1.94 或更高版本 * [upx](https://upx.github.io/) [可选,推荐用于二进制分析] * [rizin](https://rizin.re/) [可选,推荐用于二进制逆向分析] * [innoextract](https://github.com/dscharrer/innoextract) [可选,推荐用于 PE 存档分析] ## 安装 对于使用 Homebrew 的 Linux 和 macOS 用户: ``` brew tap atomdrift/tap https://github.com/atomdrift-project/homebrew-tap.git brew install atomdrift/tap/scan ``` 对于其他用户,从源码编译非常简单: ``` git clone https://github.com/atomdrift-project/scan.git cd scan make install ``` `make install` 将构建并安装 CLI 为 **`atomscan`** —— 这是一个独特且无冲突的命令名(avast 自带其 `/usr/bin/scan`,因此仅使用 `scan` 作为全局命令并不安全)。以下所有示例均使用 `atomscan`。运行 `make uninstall` 可将其移除;这也会清理旧版本安装留下的任何过期的 `scan`/`ascan` 符号链接。 ## 用法 ``` atomscan path /bin/ # recursive; archives unpacked atomscan ps # classify running processes ``` 默认情况下,atomscan 的调优标准为每 1 亿个文件中出现 50 次误报,您可以使用 -l 根据您的用例进行调整。如果要极度保守并避免任何误报的可能性,请使用:
```
atomscan -l 0 /sbin/sulogin # 0-fp scan against a file
```
如果您想要第二意见以提高准确性,Atomscan 支持使用 `--llm` 将证据高效发送到本地 LLM 进行分析。它默认使用位于 http://localhost:8000/v1 的兼容 OpenAI 的本地 endpoint —— 我们目前推荐以 Qwen3.6-27B 作为模型的 vLLM。低至 9B 的模型可能也足够了。LLM 得分会与 ML 得分进行融合,以得出最终调整后的结果。
## Atomscan 能识别什么。
涵盖二进制文件、源代码、软件包和文档的 **95 种文件类型** —— 覆盖从桌面操作系统到网络设备的 **25 个平台**。
### 文件类型
| 类别 | 格式 |
|----------|---------|
| **二进制文件** | Mach-O, ELF, PE, Java `.class`, Python `.pyc`, BEAM |
| **源代码** | Python, JavaScript, TypeScript, Go, Rust, Java, C, C#, Ruby, PHP, Perl, Lua, Swift, Objective-C, Kotlin, Scala, Groovy, Zig, Elixir, Clojure, Shell, PowerShell, Batch, VBScript, AppleScript |
| **构建与配置** | package.json, Cargo.toml, pyproject.toml, composer.json, binding.gyp, GitHub Actions, systemd units, `.desktop`, Makefile, Dockerfile, JSON, XML |
| **压缩包** | ZIP, TAR (gz/bz2/xz/zst), 7-Zip, RAR, CAB, ASAR, gzip/bzip2/xz/zstd |
| **软件包** | deb, rpm, APK, npm, wheel, egg, gem, crate, conda, NuGet, `.ipa`, `.crx`, `.xpi`, `.vsix`, macOS/FreeBS/Arch `.pkg` |
| **文档** | OLE2, OOXML, OpenDocument, PDF, RTF, Markdown, HTML, plist |
| **图像及其他** | JPEG, PNG, `.lnk`, CHM, Python pickle |
二进制文件使用 Rizin 自动进行逆向工程,源代码使用 Treesitter 自动进行逆向工程。
### 平台
我们目前有针对以下操作系统检测恶意软件的特定规则:
`Linux` · `macOS` · `Windows` · `Android` · `iOS` · `FreeBSD` · `OpenBSD` · `NetBSD` · `DragonFly BSD` · `AIX` · `Solaris` · `QNX` · `z/OS` · `ESXi` · `OpenWrt` · `VxWorks` · `RouterOS` · `FortiOS` · `PAN-OS` · `IOS-XE` · `Junos` · `NetScaler` · `Ivanti`
没错,为了证明在更奇特的语言/平台组合上的覆盖范围,我们在生成合成恶意软件时发挥了创意,以防万一。
## 文档
- [集成指南](docs/INTEGRATION.md) — 根据您的负载选择 CLI、服务器或 worker
- [JSON 报告 schema](docs/JSON.md) · [Server API](docs/SERVER_API.md) · [Workers](docs/WORKERS.md)
## 相关项目
- [cleave](https://github.com/atomdrift-project/cleave) — 底层能力分析器
- [azoth](https://github.com/atomdrift-project/azoth) — 模型权重、阈值和特征规范
- [hopper](https://github.com/atomdrift-project/hopper) — 分布式工作队列
- [Atomdrift Lab](https://lab.atomdrift.org/) — 提交样本以进行免费分析
## 许可证
Apache-2.0 —— 因为有何不可呢?
unpack] TS[tree-sitter
parse scripts] YARA[YARA
pattern match] RIZIN[rizin
disassemble] end CLEAVE -->|AnalysisReport
92k rules → MBC + ATT&CK| FF[filefacts
feature extraction] FF -->|standardized
feature vector| SCAN[scan
ONNX inference] AZOTH[(azoth
GBT ensemble)] -.loads.-> SCAN SCAN -->|Decision + SHAP reasons| OUT{{verdict
hostile · suspicious · benign}} SCAN -.->|prob ≥ gate| INTERPRET[--llm
local LLM blend] INTERPRET -.-> OUT click CLEAVE "https://atomdrift.org/cleave" _blank click FF "https://atomdrift.org/filefacts" _blank click AZOTH "https://atomdrift.org/azoth" _blank click SCAN "https://atomdrift.org/scan" _blank click UPX "https://upx.github.io/" _blank click TS "https://tree-sitter.github.io/tree-sitter/" _blank click YARA "https://virustotal.github.io/yara-x/" _blank click RIZIN "https://rizin.re/" _blank ``` ## 依赖项 * Rust 1.94 或更高版本 * [upx](https://upx.github.io/) [可选,推荐用于二进制分析] * [rizin](https://rizin.re/) [可选,推荐用于二进制逆向分析] * [innoextract](https://github.com/dscharrer/innoextract) [可选,推荐用于 PE 存档分析] ## 安装 对于使用 Homebrew 的 Linux 和 macOS 用户: ``` brew tap atomdrift/tap https://github.com/atomdrift-project/homebrew-tap.git brew install atomdrift/tap/scan ``` 对于其他用户,从源码编译非常简单: ``` git clone https://github.com/atomdrift-project/scan.git cd scan make install ``` `make install` 将构建并安装 CLI 为 **`atomscan`** —— 这是一个独特且无冲突的命令名(avast 自带其 `/usr/bin/scan`,因此仅使用 `scan` 作为全局命令并不安全)。以下所有示例均使用 `atomscan`。运行 `make uninstall` 可将其移除;这也会清理旧版本安装留下的任何过期的 `scan`/`ascan` 符号链接。 ## 用法 ``` atomscan path /bin/ # recursive; archives unpacked atomscan ps # classify running processes ``` 默认情况下,atomscan 的调优标准为每 1 亿个文件中出现 50 次误报,您可以使用 -l
标签:Apex, CNCF毕业项目, LNA, 云安全监控, 云资产清单, 人工智能, 可视化界面, 机器学习, 用户模式Hook绕过, 自定义DNS解析器, 逆向工程, 通知系统, 静态分析