针对二进制文件、源代码和脚本的0-day恶意软件检测(真正好用的)
Atomdrift Scan 是一款基于机器学习的现代恶意软件扫描器,专为检测针对软件供应链的 0-day 攻击而设计。
它被设计为确定性、快速且灵活,可嵌入到您能想到的任何工作流或安全工具中,并能够针对文件、归档、URL、PURL 或进程进行操作。
截至 2026 年 9 月,Atomdrift Scan 的 0-day 检测率达到 98%,领先任何其他扫描器(无论是商业还是开源)34% 以上。
Atomdrift 如何取得如此出色的结果?首先,它覆盖的范围比任何其他扫描器都更广:
最重要的是,规则通过针对新样本、博客和技术文章的强化学习不断刷新,每天更新约 1000 条规则。
如果您使用的是 UNIX 风格的主机(macOS、Linux、BSD、Solaris、illumos、Android):
curl -fsSL https://install.atomdrift.org/scan.sh | sh
如果您使用的是 Windows:
irm https://install.atomdrift.org/scan.ps1 | iex
或者,如果您已安装 Rust 并且只想从源代码构建:
make install
如果需要更深入的二进制分析,您还应安装 7-Zip、rizin、upx 和 innoextract。
在 Windows 上,使用 winget:
winget install --exact --id 7zip.7zip
winget install --exact --id Rizin.Rizin
winget install --exact --id UPX.UPX
winget install --exact --id dscharrer.innoextract
在类 Unix 系统上,请安装上游 7-Zip(brew install sevenzip、apt install 7zip)而不是 p7zip——它的 7z 无法读取 APFS,因此 .dmg 内容将无法被扫描。
# Scan a file, directory, or archive recusively:
atomscan ./project
atomscan release.tgz
# Fetch a package from its registry and scan it.
atomscan purl npm/[email protected]
# Fetch and scan a URL.
atomscan url https://example.com/download
# EXPERIMENTAL: Scan running process executables, or triage the wider host
atomscan ps
atomscan sys
# JSON output for programmatic access
atomscan -f json ./project
退出码使 CI 集成变得非常简单:
0:所有样本均为良性1:检测到恶意样本2:检测到可疑样本3:分析错误4:规则集不完整——扫描运行时使用的规则少于特征集所定义的规则,因此任何非恶意的结果都不能证明什么。请重新运行。
atomscan 绝不会发送遥测数据。但它会出于 2 个原因访问互联网:
--no-update 或 SCAN_NO_UPDATE_CHECK=1 禁用--follow=none 可仅分析所请求的制品。与其他恶意软件扫描器不同,Atomdrift 允许您使用 -l 标志以可接受的误报水平来调整灵敏度:
-l0:严格,将置信度截止点设置为未观察到误报的水平。-l25:默认发布点:每 1 亿个文件中 25 个误报。-l1000:宽松,大约每 100,000 个文件中 1 个误报。注意:对于我们没有 1 亿个样本的文件格式,观察到的误报率可能高达所请求水平的 5-6 倍。结果因人而异。
对于希望直接微观管理概率阈值的用户,可以使用原始的 --threshold-hostile 和 --threshold-suspicious 覆盖选项,但这些数值不保证稳定,且这些标志不能与 -l 组合使用。
为了获得额外的解释,用户可以通过 --llm 标志提供对 LLM 的访问。该标志有两个用途:
默认情况下,atomscan 将解释后的证据(而非原始文件)发送到 http://localhost:8000/v1——以便与 Ollama 或 vLLM 等本地服务一起使用;但也可以设置为使用 Claude、ChatGPT 或 DeepSeek 等远程服务。
没有硬编码的模型:除非您传入 --llm-model,否则 atomscan 会询问端点它提供哪些模型,并使用其列出的最大模型。我们建议提供 Qwen/Qwen3.8-27B。
如果端点需要 bearer token,请将其放入 ~/.tok/llm(权限模式 0600),atomscan 会自动发送;--llm-key 和 SCAN_LLM_KEY 会覆盖该文件。
--llm 还接受一个逗号分隔的故障转移链,按顺序尝试——--llm 'https://llm.isotope13.ai/v1,openrouter' 会在您自己的端点上评分,仅当它无法回答时才使用计费的端点。
atomscan --llm ./project
atomscan --llm http://model-host:8000/v1 --llm-model my-model ./project
atomscan --llm openrouter --llm-model qwen/qwen3.8-27b ./project
--llm openrouter 与 https://openrouter.ai/api/v1 通信。密钥来自 --llm-key、SCAN_LLM_KEY 或 ~/.tok/openrouter(第一个非空行)。如果省略,--llm-model 默认为 openrouter/auto(OpenRouter 自己的自动路由器)——目录中的其余部分不会被自动选择。
Linux 的 make deploy 接受相同的名称:LLM=openrouter(或 LLM_URL=openrouter),以及 LLM_MODEL=qwen/qwen3.8-27b,仅用于固定模型而不是 openrouter/auto。该单元无法读取操作员主目录(ProtectHome=true),因此部署脚本会将 ~/.tok/openrouter 复制到服务状态目录中。
该扫描器可识别 100 多种文件和容器类型。代表性 覆盖范围包括:
规则集包含针对 Linux、macOS、Windows、 Android、iOS、BSD 系列、AIX、Solaris、QNX、z/OS、ESXi、OpenWrt、VxWorks、 RouterOS、FortiOS、PAN-OS、IOS-XE、Junos、NetScaler 和 Ivanti 设备的平台特定行为。
默认构建矩阵覆盖 Linux、macOS、FreeBSD、OpenBSD、NetBSD、illumos、Solaris 和 Windows,跨多种 CPU 架构。测试深度 因目标而异;请参阅构建工作流了解 当前矩阵。
Atomdrift Scan 在 Apache License 2.0 下提供。
欢迎所有贡献!
| 类别 | 格式 |
|---|
| 二进制和字节码 | Mach-O、ELF、PE、WebAssembly、Android DEX、Java .class、Python .pyc、BEAM |
| 源代码 | Python、JavaScript、TypeScript、Go、Rust、Java、C、C++、C#、Ruby、PHP、Perl、Lua、Swift、Objective-C、Kotlin、Scala、Groovy、Zig、Elixir、Clojure、Shell、PowerShell、Batch、VBScript、AppleScript、JCL |
| 构建、清单和锁文件 | package.json、package-lock.json、Cargo.toml、Cargo.lock、pyproject.toml、requirements.txt、Poetry、Pipenv、Composer、Yarn、pnpm、Go modules、binding.gyp、GitHub Actions、systemd units、Makefile、Dockerfile |
| 归档和磁盘映像 | ZIP、TAR、gzip、bzip2、XZ、zstd、7-Zip、RAR、CAB、ASAR、DMG、ISO |
| 包和容器 | deb、rpm、APK、npm、wheel、egg、sdist、gem、crate、conda、NuGet、IPA、CRX、XPI、VSIX、OCI/Docker 镜像、FreeBSD、Arch、Void 和 Gentoo 包 |
| 文档和数据 | OLE2、OOXML、OpenDocument、PDF、RTF、Markdown、HTML、XML、SVG、plist、JPEG、PNG、LNK、CHM、Python pickle |