Jeesun-38/anubis

GitHub: Jeesun-38/anubis

Anubis是一款基于MCP协议的本地化恶意软件分类工具。

Stars: 2 | Forks: 0

Anubis

Anubis

赋予您的AI助手对恶意软件进行分类的能力。

Python MCP License Platform Status

Anubis是一个[模型上下文协议](https://modelcontextprotocol.io/)(MCP)服务器,它将恶意软件分析工具集暴露给任何MCP兼容的AI客户端——Claude Desktop、Cursor或MCP Inspector。将可疑的二进制文件放入您的样本目录中,并询问您的助手:"这个文件是否恶意,它做了什么?"Anubis允许AI调用正确的静态分析工具,并将结果综合成一个可读的分类报告。 为SOC分析师、恶意软件研究人员和希望在不将样本上传到第三方服务的情况下进行LLM辅助分类的检测工程师而构建。一切都在本地运行。 ## 为什么选择Anubis 对可疑文件进行分类意味着每次都要运行相同的一组工具——哈希值、检查VirusTotal、提取字符串、使用YARA扫描、检查导入、查看反汇编——然后将结果在脑海中拼接起来。这是重复性的工作,也是LLM擅长的那种多工具综合。 Anubis将这种工作流程转变为对话。分析师提出问题;AI决定调用哪些工具,调用它们,并解释它发现了什么。分析师保持对判决的控制权——Anubis只是消除了手动运行六个工具并关联其输出的繁琐工作。 三个设计承诺: - **本地优先。**样本永远不会离开您的机器。唯一的出站调用是可选的VirusTotal *哈希*查找——永远不进行上传。 - **仅静态。**Anubis读取、解析、哈希和反汇编。它永远不会执行样本。 - **沙箱。**每个工具都锁定到单个样本目录。拒绝路径遍历和符号链接逃逸。 ## 功能 六个静态分析工具,作为MCP函数公开: | 工具 | 它做什么 | |------|--------------| | `inspect_file` | 大小、SHA-256、格式检测(PE / ELF / Mach-O)、PE的导入哈希值 | | `extract_strings` | 仅暴露可疑的字符串——URL、IP、注册表键、文件路径、Win32 API | | `run_yara` | 对捆绑的、自定义编写的YARA规则集进行扫描 | | `check_hash` | 通过SHA-256在VirusTotal上查找声誉——仅哈希值,不进行上传 | | `pe_imports` | 列出导入的DLL/函数、注入和规避API的标志 | | `disassemble_function` | radare2对任何命名函数或地址的反汇编 | 附带一个经过精心挑选的检测规则集,包含原始YARA规则——无需下载外部规则即可开始。 ## 演示:对真实Go僵尸网络的分类 针对来自[MalwareBazaar](https://bazaar.abuse.ch/)(SHA-256 `f29525ef…d932`)的实时Linux ELF样本进行了测试。完整的分类过程不到一分钟。 **识别文件**——`inspect_file`报告了一个4.5 MB的静态链接ELF。`file`确认了一个Go BuildID:这是一个Go编译的二进制文件。 **检查声誉**——`check_hash`返回VirusTotal的判决: ``` malicious: 14 / 75 engines tags: elf, persistence, detect-debug-environment ``` **提取字符串**——`extract_strings`暴露了恶意软件的内部: ``` Botnet/Methods http://%s/bins.sh http://%s/config.dat Connecting to CNC... Connected to CNC! GET /config.dat HTTP/1.1 Loaded %d proxies for TLSPlusBypass /etc/rc.local /root/.bashrc ``` 结合起来,这些描述了一个Go编译的DDoS/代理僵尸网络:一个硬编码的`Botnet`包、用于获取有效载荷(`/bins.sh`)和配置(`/config.dat`)的C2端点、TLS绕过代理功能以及通过shell rc文件实现的持久性。 **使用YARA扫描**——Anubis捆绑的规则集对六个独立的指标进行了触发: ``` Anubis_Go_Compiled_Binary Anubis_Linux_Botnet_C2_Strings Anubis_Browser_UserAgent_Impersonation Anubis_Linux_Persistence_Paths Anubis_Suspicious_Stripped_Static_ELF Anubis_TLS_Proxy_Bypass ``` 值得注意的细节:**61个75个商业AV引擎和广泛使用的[基于签名的](https://github.com/Neo23x0/signature-base)规则集对这一样本返回了零匹配**。Go编译的恶意软件是传统签名的一个已知盲点——Go静态链接其整个运行时,产生没有与大多数规则针对的C编译Mirai变体共有的字节模式的数兆字节的二进制文件。 Anubis的规则通过检测*行为字符串指标*(C2消息、持久性路径、代理绕过功能)和Go编译指纹本身来填补这一差距——并且,同样重要的是,它们**不会**对样本没有的特性(没有加密货币挖掘器、反向shell或打包规则触发)进行触发。选择性检测,而不是模式喷洒。 ## 快速入门 **要求**:Linux(在Kali、Debian、Fedora上进行了测试)· Python 3.10+ · [`uv`](https://docs.astral.sh/uv/) · radare2 · 一个免费的[VirusTotal API密钥](https://www.virustotal.com/gui/my-apikey)(可选,仅当需要`check_hash`时才需要) ``` # 系统依赖 sudo apt install -y radare2 # 克隆并安装 git clone https://github.com/Jeesun-38/anubis.git cd anubis uv venv source .venv/bin/activate uv pip install -r requirements.txt # 创建您的样本目录 mkdir -p ~/anubis-samples # 将 Anubis 指向它(自动使用捆绑的规则集) export ANUBIS_SAMPLES_DIR="$HOME/anubis-samples" export ANUBIS_YARA_DIR="$PWD/rules" export VT_API_KEY="your_virustotal_api_key" # optional # 使用 MCP 检查器测试它 npx @modelcontextprotocol/inspector uv run server.py ``` Inspector将在您的浏览器中打开。连接、列出工具、将文件拖放到`~/anubis-samples/`中,并对它调用`inspect_file`。 ## 连接到Claude Desktop 将Anubis添加到您的`claude_desktop_config.json`: ``` { "mcpServers": { "anubis": { "command": "uv", "args": ["--directory", "/absolute/path/to/anubis", "run", "server.py"], "env": { "ANUBIS_SAMPLES_DIR": "/home/youruser/anubis-samples", "ANUBIS_YARA_DIR": "/absolute/path/to/anubis/rules", "VT_API_KEY": "your_key" } } } } ``` 重新启动Claude Desktop,将样本拖放到您的样本目录中,并要求它分析文件。 ## 配置 所有配置都通过环境变量进行: | 变量 | 默认 | 目的 | |----------|---------|---------| | `ANUBIS_SAMPLES_DIR` | `~/anubis-samples` | 沙箱根——只有位于此路径下的文件才能进行分析 | | `ANUBIS_YARA_DIR` | `~/anubis-rules` | 包含`default.yar`的目录 | | `ANUBIS_MAX_FILE_SIZE` | `524288000` (500 MB) | 可分析的最大文件大小 | | `VT_API_KEY` | *(未设置)* | VirusTotal API v3密钥;没有它,`check_hash`将禁用 | ## 检测规则 Anubis附带`rules/default.yar`——一组原始的、MIT许可的YARA规则,专注于传统规则集薄弱的领域,特别是Linux和Go编译的恶意软件: | 规则 | 目标 | |------|---------| | `Anubis_Go_Compiled_Binary` | Go编译指纹(BuildID、运行时符号) | | `Anubis_Linux_Botnet_C2_Strings` | CNC连接消息、有效载荷/配置端点 | | `Anubis_Browser_UserAgent_Impersonation` | 多个硬编码的浏览器User-Agent | | `Anubis_Reverse_Shell_Patterns` | `/dev/tcp/`、`bash -i`、`nc -e`、命名管道shell | | `Anubis_Cryptominer_Indicators` | Stratum URL、挖掘器名称、挖矿池 | | `Anubis_Linux_Persistence_Paths` | 一个二进制文件中的多个持久性位置 | | `Anubis_Suspicious_Stripped_Static_ELF` | 静态链接、剥离的ELF分发器 | | `Anubis_TLS_Proxy_Bypass` | 代理池/TLS检查规避功能 | | `Anubis_Embedded_Base64_ELF` | Base64编码的ELF有效载荷(`f0VMR…`) | | `Anubis_High_Entropy_File` | 打包/加密/压缩内容 | 大多数规则在触发之前需要**多个**指标,以保持误报率低。要扩展覆盖范围,将额外的`.yar`文件放入您的`ANUBIS_YARA_DIR`或合并第三方集,如签名基础(注意其单独的许可证)。 ## 安全模型 - **路径沙箱**——每个文件获取工具使用`os.path.realpath()`解析输入,并拒绝位于`ANUBIS_SAMPLES_DIR`之外的内容。`../`遍历和符号链接逃逸被阻止。 - **不执行**——Anubis仅执行静态分析。它永远不会运行样本。 - **不上传**——唯一的网络调用是可选的VirusTotal *哈希*查找。样本字节永远不会离开机器。 - **在VM中运行实时恶意软件**——在可丢弃的VM中分析真实样本,不向您的宿主或敏感系统发出出口。Anubis不会执行它们,但将样本视为放射性物质。 - **不是网络服务**——Anubis通过本地stdio使用MCP。它没有身份验证或速率限制,并且不是为通过网络公开而构建的。 ## 路线图 Anubis处于beta阶段。计划在即将发布的版本中: - `detect_go_malware`——从剥离的二进制文件中恢复Go包路径,并标记恶意包名称 - `extract_iocs`——返回结构化IOCs(IP、域名、哈希值)而不是原始字符串 - `elf_sections` / `pe_sections`——按部分熵分析 - Capa集成以进行能力检测 - 扩展Linux/ELF规则覆盖范围 - Docker镜像以实现一键设置 ## 许可证与致谢 根据[MIT许可证](LICENSE)授权。捆绑的YARA规则集是原创作品,也MIT许可。 基于以下开源工作的构建: - [模型上下文协议](https://modelcontextprotocol.io/)——开放的AI工具集成标准 - [radare2](https://rada.re/n/) · [LIEF](https://lief.re/) · [yara-python](https://github.com/VirusTotal/yara-python) - [MalwareBazaar](https://bazaar.abuse.ch/)——免费恶意软件样本用于研究
标签:AI 辅助, Apex, Ask搜索, Beta 版本, DAST, MCP 服务器, Python, VirusTotal, YARA 检测, 云安全监控, 人工智能, 代码示例, 威胁情报, 安全社区, 安全运营中心, 开发者工具, 开源, 恶意软件分析, 数据分析, 无后门, 本地化分析, 机器学习, 检测工程师, 模型上下文协议, 用户模式Hook绕过, 红队平台, 网络映射, 自动化分析, 跨站脚本, 逆向工具, 静态分析