ayman-m/yarascanner

GitHub: ayman-m/yarascanner

一款专为 Cortex XDR 与 XSIAM 平台优化的多线程 YARA 端点扫描器,支持实时威胁告警上传与企业级安全运营集成。

Stars: 0 | Forks: 0

# YARA Scanner - 企业级威胁检测系统 [![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/) [![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20Linux%20%7C%20macOS-lightgrey.svg)](https://github.com/yourusername/yara-scanner) [![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE) 一个专为企业安全运营设计的高性能、多线程文件扫描解决方案。虽然该扫描器是**通用且与平台无关的**,但此代码库及其相关内容(仪表板、报告、剧本)**专门针对通过 Palo Alto Networks Cortex XDR 和 XSIAM agent 部署进行了优化**。 ## 🎯 主要用例:Cortex XDR/XSIAM 集成 此扫描器旨在通过端点上的 **Cortex XDR/XSIAM agent** 进行部署和执行,从而实现: - 跨整个端点资产的**集中式威胁可见性** - 直接流入 Cortex Data Lake 的**实时检测告警** - 通过剧本实现的**自动化响应工作流** - 用于性能和匹配的**高管仪表板** - 自动上传至 XDR/XSIAM 控制台的**证据收集** ### 🔄 扫描器版本:XDR 与 XSIAM 此代码库提供了两种针对不同 Cortex 环境定制的独立扫描器实现: #### `xdr_yara_scanner.py` (Cortex XDR) 专门针对 Cortex XDR 环境进行了优化。 - **API 集成:** 使用 **Insert Parsed Alerts API** (`/public_api/v1/alerts/insert_parsed_alerts`),并需要 XDR API Key 和 API ID。 - **数据 Payload:** 将 YARA 匹配格式化为严格的 XDR Parsed Alerts schema (`{"request_data": {"alerts": [...]}}`)。 - **遥测:** 默认情况下,仅上传正面的 YARA 匹配 (`UPLOAD_NON_MATCH_DATA = False`),依靠 XDR agent 本身来提供常规的端点遥测。 #### `xsiam_yara_scanner.py` (Cortex XSIAM) 针对 Cortex XSIAM 进行了优化,使用通用的 HTTP Event Collector 或 Webhook endpoint。 - **API 集成:** 连接到通用的 Webhook 或 HTTP Event Collector endpoint,使用单个 API Key。 - **数据 Payload:** 直接上传标准化的 JSON 对象,非常适合在 XSIAM 中进行原始日志摄取。 - **遥测:** 将包括非匹配数据、性能指标和统计信息在内的完整遥测 (`UPLOAD_NON_MATCH_DATA = True`) 直接上传到 SIEM。 - **高级规则支持:** 具有高级 YARA 规则解析器,向规则暴露自定义的外部变量(`filename`、`filepath`),并提供针对仅条件规则匹配的详细回退摘要。 ### 🏢 企业架构 ``` ┌─────────────────────────────────────────────────────────────┐ │ Cortex XSIAM/XDR │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │ │ Dashboards │ │ Playbooks │ │ Alerts │ │ │ └──────────────┘ └──────────────┘ └──────────────┘ │ │ ▲ ▲ ▲ │ │ └──────────────────┴──────────────────┘ │ │ WebHook Ingestion │ └─────────────────────────────────────────────────────────────┘ ▲ │ HTTPS │ ┌──────────────────┴─────────────────┐ │ │ ┌────▼─────┐ ┌────▼─────┐ │ Endpoint │ │ Endpoint │ │ (Windows)│ │ (Linux) │ │ │ │ │ │ XDR Agent│ │ XDR Agent│ │ │ │ │ │ │ │ ▼ │ │ ▼ │ │ Scanner │ │ Scanner │ └──────────┘ └──────────┘ ``` ## ✨ 核心功能 ### 基础能力 - 🚀 **多线程扫描** - 可配置的工作线程以实现最佳性能 - 🔄 **熔断器模式** - 具备指数退避功能的弹性 API 上传 - 🗂️ **证据收集** - 自动打包并计算 SHA256 哈希值 - 🧹 **自动化清理** - 通过任务计划程序/systemd 进行计划的扫描后清理 - 🌐 **跨平台** - 全面支持 Windows、Linux 和 macOS ### 监控与可观测性 - 📊 **系统资源监控** - CPU、内存、磁盘 I/O、网络指标 - 📈 **性能追踪** - 扫描速率、工作线程效率、缓存命中率 - 📝 **分类日志** - 分离的告警、错误、性能和上传日志 - ⚡ **实时统计** - 带有 ETA 计算的进度追踪 ### 企业集成 - 📡 **实时流式上传** - 使用带有专用后台线程的生产者/消费者队列模型,在找到匹配项时立即将告警流式传输到 XDR/XSIAM,而不是等待整个扫描完成。 - 🔄 **弹性 API 交付** - 内置指数退避、超时保护和本地 `.json` 文件备份,即使在受到速率限制或断开连接的情况下也能保证数据保存。 - 🔐 **嵌入式身份验证** - API 凭据被安全地直接硬编码到脚本中,以简化端点部署。 - 🎯 **标准化日志格式** - 基于结构化 JSON 的日志记录,直接映射到 Cortex XDR 和 XSIAM schema。 ## 🚀 快速开始 ### 前置条件 ``` # Python 3.8 或更高版本 python --version # 必需的包 pip install -r requirements.txt ``` ### 基本用法 根据您的目标平台选择合适的脚本(`xdr_yara_scanner.py` 或 `xsiam_yara_scanner.py`)。 #### 1. **独立执行**(测试/开发) ``` # 使用 XSIAM scanner 的自定义 YARA rules(base64 编码) python xsiam_yara_scanner.py "eW91cl9iYXNlNjRfcnVsZXM=" # 特定文件夹扫描 python xsiam_yara_scanner.py "eW91cl9iYXNlNjRfcnVsZXM=" "/path/to/scan" # 带有特定警报严重性 python xsiam_yara_scanner.py "eW91cl9iYXNlNjRfcnVsZXM=" "/path/to/scan" "high" ``` #### 2. **Cortex XDR/XSIAM 部署**(生产环境) 通过 XDR/XSIAM Action Center 部署: ``` # XDR/XSIAM Script Arguments args = { "yarafile": "base64_encoded_yara_rules", "scan_folder": "default", # or specific path "alert_severity": "low" # optional severity level } ``` ## 📋 命令行参数 | 位置 | 参数 | 描述 | 默认值 | 示例 | |----------|-----------|-------------|---------|---------| | 1 | `yarafile` | Base64 编码的 YARA 规则 | 内置规则 | `"cnVsZSB0ZXN0IHsgLi4uIH0="` | | 2 | `scan_folder` | 目标目录路径 | 全系统扫描 | `"/home/user"` 或 `"C:\\"` | | 3 | `alert_severity`| 期望的严重级别 | `"low"` | `"high"` | **注意:** 使用空字符串 `""` 可以跳过某个参数并使用其默认值。API 凭据不再通过命令行参数传递,必须直接嵌入到脚本源码中。 ## 🔧 配置 ### 环境变量(CLI 参数的替代方案) ``` export YARA_THREADS=8 # Number of worker threads (default: CPU count) export YARA_MAX_MB=100 # Max file size to scan in MB (0 = no limit) ``` ### 扫描行为 扫描器会根据权限自动调整行为: **Linux/macOS:** - **Root 用户**:从 `/` 开始进行全系统扫描 - **非 root 用户**:仅限于可访问的目录(home、tmp、opt 等) - **建议**:使用 `sudo` 运行以获得全面的覆盖范围 **Windows:** - 默认扫描所有可用驱动器 - 跳过受系统保护的目录(例如 `C:\ProgramData\Cyvera`) - 建议使用管理员权限 ## 📊 输出与产出物 ### 目录结构 ``` Windows: C:\yara_scanner\ Linux: /opt/yara_scanner/ macOS: /usr/local/yara_scanner/ ├── logs/ # Categorized log files │ ├── alerts_YYYYMMDD_HHMMSS.log │ ├── statistics_YYYYMMDD_HHMMSS.log │ ├── performance_YYYYMMDD_HHMMSS.log │ ├── uploads_YYYYMMDD_HHMMSS.log │ ├── scan_errors_YYYYMMDD_HHMMSS.log │ ├── yara_processing_YYYYMMDD_HHMMSS.log │ └── script_exceptions_YYYYMMDD_HHMMSS.log │ ├── alert/ # Detection alert files (per rule) │ └── [RuleName].txt │ ├── evidence/ # Matched files and metadata │ ├── evidence_hostname_timestamp.zip │ ├── file_mapping.txt │ └── yara_matches_hostname_timestamp.json │ ├── failed_rules/ # Rules that failed compilation │ └── failed_rule_[name].yar ``` ### 日志类别 | 日志类型 | 描述 | XDR 集成 | |----------|-------------|-----------------| | **Alerts** | YARA 检测事件 | ✅ 自动上传 | | **Statistics** | 扫描指标与进度 | ✅ 仪表板数据 | | **Performance** | 系统资源使用情况 | ✅ 监控 | | **Uploads** | Webhook 传输日志 | 📊 诊断 | | **Errors** | 扫描失败与问题 | ⚠️ 告警触发器 | | **Compilation Errors** | YARA 规则验证 | 🔍 规则调试 | | **Script Exceptions** | 严重故障 | 🚨 事件响应 | ## 📤 API Payload 与遥测 ### XDR Payload Schema 运行 `xdr_yara_scanner.py` 时,只有**正面的 YARA 匹配**会通过 **Insert Parsed Alerts API** (`/public_api/v1/alerts/insert_parsed_alerts`) 上传到 Cortex XDR。深度的取证详情会作为字符串化的 JSON 对象嵌入在 `alert_description` 字段中。 #### 收集并发送了哪些数据? 1. **端点身份**:主机名、OS 信息和本地 IPv4 地址。 2. **检测上下文**:YARA 规则名称、严重级别和时间戳。 3. **取证证据**:确切的文件路径(`filename`)、匹配的字节序列(`string`)、其标识符(`match`)、字节偏移量(`offset`),以及文件的 SHA256 哈希值和创建时间。 #### XDR Payload 示例 ``` { "request_data": { "alerts": [ { "product": "YARA Scanner", "vendor": "Custom", "local_ip": "10.0.1.45", "local_port": 65535, "remote_ip": "127.0.0.1", "remote_port": 65535, "event_timestamp": 1715693452, "severity": "High", "alert_name": "YARA Match: Ransomware_WannaCry | Host: WIN-SRV-PROD1 | Time: 1715693452", "action_status": "Reported", "alert_description": "{\"source\": \"yara_scanner\", \"scan_id\": \"startup_20240514_104522_123456\", \"hostname\": \"WIN-SRV-PROD1\", \"os_info\": \"Windows-10-10.0.19045-SP0\", \"ip_address\": \"10.0.1.45\", \"message\": \"YARA match: rule 'Ransomware_WannaCry' in C:\\\\Users\\\\Admin\\\\Downloads\\\\invoice.exe\", \"network_fields_are_placeholders\": true, \"match_data\": {\"filename\": \"C:\\\\Users\\\\Admin\\\\Downloads\\\\invoice.exe\", \"rule\": \"Ransomware_WannaCry\", \"string\": \"WNcry@2ol7\", \"offset\": \"1024\", \"match\": \"$s1\", \"dateOfScan\": \"2024-05-14T10:45:22.123456\", \"file_sha256\": \"82b8a1c3bb545938023c7270e5b7c7b89736e6e2\", \"file_creation_time\": 1715600000.0}}" } ] } } ``` ### XSIAM Webhook Payload Schema 与严格发送告警的 XDR 版本不同,`xsiam_yara_scanner.py` 充当了一个全面的遥测 agent。它将**原始 JSON 日志**直接发送到通用的 Cortex XSIAM Webhook 或 HTTP Event Collector endpoint。 默认情况下,扫描器会上传 **4 种不同类型的遥测数据**,以提供完整的操作可见性:`yara_match`、`scan_status`、`performance` 和 `error`。 #### 标准化基础结构 发送到 XSIAM 的每条日志都共享一个一致的基础 JSON 封装(`StandardLogEntry`)。 ``` { "type": "", "hostname": "WIN-SRV-PROD1", "os_info": "Windows-10-10.0.19045-SP0", "ipAddress": "10.0.1.45", "timestamp": 1715693452.123456, "timestamp_iso": "2024-05-14T10:45:22.123456", "scan_id": "startup_20240514_104522", "uploader_version": "enhanced_v2", "source": "yara_scanner", "message": "", "level": "", "data": { } } ``` #### Payload 类型(`data` 字段) **1. YARA 匹配日志** (`type: "yara_match"`) ``` "data": { "filename": "C:\\Temp\\malicious.dll", "rule": "APT_Lazarus_Backdoor", "threat_level": "high", "string": "cmd.exe /c start", "offset": "2048", "match": "$str1", "match_scope": "string", "string_match_count": 3, "file_sha256": "82b8a1c3bb545938023c7270e5b7c7b89736e6e2", "file_creation_time": 1715600000.0, "dateOfScan": "2024-05-14T10:45:22.123456" } ``` **2. 扫描状态日志** (`type: "scan_status"`) ``` "data": { "scan_status": "running", "files_scanned": 15430, "files_skipped": 120, "detections_found": 5, "current_file": "C:\\Windows\\System32\\ntdll.dll", "scan_rate_files_per_second": 257.16, "elapsed_time_seconds": 60, "valid_rules_count": 1500, "failed_rules_count": 2 } ``` **3. 性能指标** (`type: "performance"`) ``` "data": { "cpu_percent": 14.5, "memory_mb": 450.2, "memory_percent": 2.8, "disk_io_read_mb": 1024.5, "queue_size": 50, "active_workers": 8, "files_scanned": 15430 } ``` ## 📊 预构建的仪表板与小组件 此代码库包含**生产就绪的仪表板和 XQL 查询**,可全面了解整个企业内的 YARA 扫描操作。 ### 📁 代码库结构 ``` yara-scanner/ ├── dashboards/ # Dashboard definitions (JSON) │ ├── Yara_Matches.json # Threat detection dashboard │ └── Yara_Scan_Performance.json # Operational metrics dashboard │ ├── widgets/ # Individual XQL widget queries │ ├── matches/ # Detection-focused widgets │ │ ├── top_rules_by_hits.xql │ │ ├── top_matched_files.xql │ │ ├── hot_hosts.xql │ │ ├── endpoints_per_rule.xql │ │ └── matches_over_time.xql │ │ │ └── performance/ # Operational metrics widgets │ ├── worker_error_rate.xql │ ├── throughput_vs_latency.xql │ ├── cache_hit_rate.xql │ ├── scan_progress.xql │ ├── system_metrics.xql │ └── capacity_backpressure.xql │ └── images/ # Dashboard screenshots ├── Matches_1.jpg ├── Matches_2.jpg ├── Performance_1.jpg ├── Performance_2.jpg └── Performance_3.jpg ``` ## 🎯 仪表板 1:YARA 匹配与威胁检测 **目的:** 实时了解整个端点集群中的 YARA 规则检测情况。 **位置:** `dashboards/Yara_Matches.json` ### 关键指标与可视化 ![YARA 匹配仪表板 - 第 1 部分](https://raw.githubusercontent.com/ayman-m/yarascanner/main/images/Matches_1.jpg) #### 🔴 **命中次数最多的 YARA 规则** - **类型:** 饼图及表格明细 - **洞察:** 识别哪些检测规则触发最频繁 - **用例:** 确定威胁调查和规则调优的优先级 - **示例数据:** ID_989714 (210,890 次命中), ID_133073 (188,889 次命中) #### 📦 **匹配最多的文件(按字符串堆叠)** - **类型:** 气泡图 - **洞察:** 显示哪些文件触发了多个 YARA 字符串 - **用例:** 识别经常被标记的二进制文件或潜在的误报 ![YARA 匹配仪表板 - 第 2 部分](https://raw.githubusercontent.com/ayman-m/yarascanner/main/images/Matches_2.jpg) #### 🏥 **已完成的扫描** - **类型:** 仪表盘 (436 台主机) - **洞察:** 追踪端点的扫描完成率 - **用例:** 监控部署成功率和覆盖率 #### 📈 **随时间变化的 YARA 匹配** - **类型:** 时间序列(10 分钟存储桶) - **洞察:** 识别检测高峰和时间模式 - **用例:** 与事件、活动或用户活动进行关联 #### 🔥 **热点主机(最多匹配)** - **类型:** 环形图(总计 199K 次命中) - **洞察:** 准确定位检测率最高的端点 - **用例:** 确定事件响应和取证的优先级 - **顶级主机:** 27,363 次命中, 22,328 次命中, 18,787 次命中 #### 🎯 **匹配最多的字符串** - **类型:** 水平条形图(主机数 vs 命中数) - **洞察:** 查看哪些特定的 YARA 字符串匹配最多 - **用例:** 微调检测逻辑并减少噪音 #### 🌊 **受每条规则影响的端点** - **类型:** 漏斗图 - **洞察:** 可视化规则在整个端点资产中的覆盖范围 - **用例:** 评估规则的有效性和覆盖率 - **示例:** ID_124212 (519 个端点), ID_989714 (455 个端点) ### 导入仪表板 ``` # 在 Cortex XDR/XSIAM 中: # 1. 导航到 Dashboards → Import # 2. 上传:dashboards/Yara_Matches.json # 3. 从 webhook endpoint 验证数据摄取 ``` ## ⚡ 仪表板 2:YARA 扫描性能与操作 **目的:** 监控扫描器的健康状况、效率和资源利用率。 **位置:** `dashboards/Yara_Scan_Performance.json` ### 关键指标与可视化 ![YARA 性能仪表板 - 第 1 部分](https://raw.githubusercontent.com/ayman-m/yarascanner/main/images/Performance_1.jpg) #### ⚠️ **工作线程错误率** - **类型:** 水平条形图(按工作线程) - **洞察:** 识别有问题的 worker 或系统性问题 - **用例:** 排查扫描错误并优化线程数 - **正常范围:** < 0.01 (1%) 错误率 #### 🚀 **工作线程吞吐量与延迟对比** - **类型:** 散点图 - **洞察:** 平衡文件处理速度和响应时间 - **用例:** 优化工作线程配置 - **示例:** ScanWorker-1 (21.3M 个文件,平均延迟 139 毫秒) ![YARA 性能仪表板 - 第 2](https://raw.githubusercontent.com/ayman-m/yarascanner/main/images/Performance_2.jpg) #### 💾 **缓存命中率** - **类型:** 进度条 (38.94%) - **洞察:** 从缓存获取的文件与重新扫描的文件的百分比 - **用例:** 评估缓存有效性并调整 LRU 大小 - **期望值:** 在后续扫描中为 60-80% #### 📦 **文件扫描量** - **类型:** 按端点的气泡图 - **洞察:** 比较不同主机的扫描工作负载 - **用例:** 识别异常值并进行容量规划 #### 📊 **扫描进度** - **类型:** 时间序列(按小时存储桶) - **洞察:** 实时可视化扫描进展 - **用例:** 监控活动扫描并估计完成时间 #### ⏱️ **扫描时间指标** - **类型:** 多指标显示 - **指标:** - 平均扫描时间:1.149 分钟 - 最大扫描时间:5.909 分钟 - 最短扫描时间:8 秒 - **用例:** SLA 合规性和性能基准测试 #### 📈 **容量与背压对比** - **类型:** 面积图(索引至 100) - **洞察:** 随时间变化的队列深度与处理能力对比 - **用例:** 检测瓶颈并扩展工作线程 - **健康状态:** 容量稳定且背压极小 ![YARA 性能仪表板 - 第 3 部分](https://raw.githubusercontent.com/ayman-m/yarascanner/main/images/Performance_3.jpg) #### 🎬 **已启动的扫描** - **类型:** 仪表盘 (585 台主机) - **洞察:** 开始扫描的端点总数 - **用例:** 追踪部署范围 #### ✅ **已完成的扫描** - **类型:** 仪表盘 (436 台主机) - **洞察:** 成功完成的扫描 - **用例:** 计算完成率(示例中为 74.5%) #### ⚡ **扫描速率** - **类型:** 仪表盘 (137.087 个文件/秒) - **洞察:** 实时文件处理吞吐量 - **用例:** 性能监控和容量规划 #### 🖥️ **系统资源指标** - **平均系统 CPU 利用率:** 37%(健康) - **平均进程 CPU 利用率:** 159%(多线程) - **平均系统内存利用率:** 56%(中等) - **平均内存分配:** 662MB(每个扫描器实例) **用例:** 确保扫描器不会影响端点性能 ### 导入仪表板 ``` # 在 Cortex XDR/XSIAM 中: # 1. 导航到 Dashboards → Import # 2. 上传:dashboards/Yara_Scan_Performance.json # 3. 配置刷新间隔(建议:5 分钟) ``` ## 🔧 小组件自定义 所有 XQL 查询都是模块化的,可以独立使用或组合成自定义仪表板。 ### 示例:使用单个小组件查询 ``` // From: widgets/matches/top_rules_by_hits.xql dataset = xdr_data | filter log_type = "yara_match" | comp count() as hits by rule | sort desc hits | limit 10 // From: widgets/performance/worker_error_rate.xql dataset = xdr_data | filter source = "yara_scanner" and log_type = "error" | comp count() as errors by worker_id | sort desc errors ``` ### 组合小组件 ``` // Create a custom multi-metric widget dataset = xdr_data | filter source = "yara_scanner" | comp count_distinct(hostname) as endpoints_scanned, count(case log_type = "yara_match" then 1) as total_detections, avg(case log_type = "performance" then scan_rate) as avg_scan_rate, avg(case log_type = "performance" then cache_hit_rate) as avg_cache_rate | alter detection_rate = total_detections / endpoints_scanned, efficiency_score = (avg_scan_rate * avg_cache_rate) / 100 ``` ## 🎯 Cortex XDR/XSIAM 集成 ### XQL 查询示例 ``` // Recent YARA detections across all endpoints dataset = xdr_data | filter log_type = "yara_match" | fields timestamp, hostname, rule, filename, offset | sort desc timestamp // Top 10 most triggered rules dataset = xdr_data | filter log_type = "yara_match" | comp count() as detection_count by rule | sort desc detection_count | limit 10 // Endpoints with failed scans dataset = xdr_data | filter log_type = "error" and source = "yara_scanner" | comp count() as error_count by hostname | filter error_count > 0 ``` ### 自动化响应剧本 XDR 剧本触发示例: - **高危检测** → 隔离端点 + 创建事件 - **多重检测** → 启动取证收集 - **扫描失败** → 告警 SOC + 提升权限重试 ## 🛡️ 安全注意事项 ### API Key 管理 为了通过 Cortex XDR 或 XSIAM Action Center 简化部署,API 凭据现在**直接硬编码在脚本源码中**。 在部署任一脚本之前,您必须打开它并更新文件顶部附近的默认凭据变量: **XDR 版本:** ``` DEFAULT_XDR_API_KEY = "your_actual_api_key" DEFAULT_XDR_API_ID = "your_actual_api_id" DEFAULT_XDR_API_URL = "your_actual_api_url" ``` **XSIAM 版本:** ``` API_KEY = "your_actual_api_key" API_ENDPOINT = "your_actual_webhook_url" ``` *注意:添加凭据后,请勿将这些修改后的脚本提交到公共版本控制系统中。* ### 权限 - 扫描器需要对目标文件的读取权限 - 证据收集需要对输出目录的写入权限 - 清理计划需要提升的权限(管理员/root) - XDR API 上传需要网络连接 ### 数据处理 - **匹配的文件**:自动收集并使用 SHA256 哈希值进行压缩 - **敏感数据**:确保 YARA 规则不会匹配到 PII(个人身份信息)/凭据 - **保留**:证据包应根据合规要求进行管理 ## 🐛 故障排除 ### 常见问题 #### 1. **权限被拒绝错误** ``` Files skipped: 15,432 | Reason: Permission denied ``` **解决方案:** 使用提升的权限运行(Linux/macOS 上使用 `sudo`,Windows 上使用管理员身份) #### 2. **YARA 规则编译失败** ``` Failed rules skipped: 5 | Check yara_processing_*.log ``` **解决方案:** 检查 `failed_rules/` 目录并验证 YARA 语法。扫描器将继续使用有效的规则。 #### 3. **Webhook 上传失败** ``` Upload errors: 127 | Check uploads_*.log ``` **解决方案:** 验证 API endpoint 连接性,检查 API Key 有效性,查看速率限制。 #### 4. **内存占用过高** ``` Memory: 4.2GB | Files: 1.2M scanned ``` **解决方案:** 调整缓存大小或分批运行。缓存会根据可用 RAM 自动缩放。 ### 调试模式 启用详细日志记录: ``` # 运行前设置环境变量 export YARA_SCANNER_DEBUG=1 python yara_scanner.py ``` ## 📈 性能调优 ### 按系统大小推荐设置 | 系统配置 | 工作线程 | 最大文件大小 | |----------------|----------------|---------------| | **笔记本电脑/工作站** | 4-8 | 50 MB | | **服务器(16 GB 内存)** | 8-16 | 100 MB | | **服务器(32+ GB 内存)** | 16-32 | 200 MB | ### 优化建议 1. **跳过模式**:自定义 `ScanConfig` 中忽略的目录,以避免扫描低风险或大数量的路径。 2. **网络扫描**:考虑直接在端点本地执行,而不是扫描挂载的网络共享,以避免 I/O 瓶颈。 3. **资源限制**:如果遇到大文件超时,请调整 `YARA_MAX_MB` 环境变量。 *注意:LRU 文件缓存机制目前默认禁用(路线图功能)。* ## 🤝 贡献 此代码库专注于 **Cortex XDR/XSIAM 部署场景**。欢迎在以下方面做出贡献: - 仪表板模板 - 关联规则 - XQL 查询示例 - 剧本 - 性能优化 - 错误修复和错误处理 **注意:** 对于 XDR/XSIAM 之外的通用 YARA 扫描用例,请考虑 Fork 扫描器核心代码。 ## 📚 其他资源 ### Palo Alto Networks 文档 - [Cortex 文档中心](https://docs.paloaltonetworks.com/cortex) - [扩展查询语言 (XQL)](https://docs-cortex.paloaltonetworks.com/r/Cortex-XDR/Cortex-XDR-4.x-Documentation/Get-started-with-XQL) ### YARA 资源 - [YARA 文档](https://yara.readthedocs.io/) - [编写 YARA 规则](https://yara.readthedocs.io/en/stable/writingrules.html) - [YARA-Python API](https://yara.readthedocs.io/en/stable/yarapython.html) ## 📄 许可证 本项目基于 MIT 许可证授权 - 有关详细信息,请参阅 [LICENSE](LICENSE) 文件。 ## 🙏 致谢 - **YARA** 由 VirusTotal 提供的强大模式匹配引擎 - **Palo Alto Networks** 提供的 Cortex XDR/XSIAM 平台 - **开源社区** 提供的 Python 安全工具生态系统 ## 📞 支持 - **问题**:[GitHub Issues](https://github.com/yourusername/yara-scanner/issues) - **讨论**:[GitHub Discussions](https://github.com/yourusername/yara-scanner/discussions) - **XDR 支持**:如遇特定平台问题,请联系 Palo Alto Networks TAC
**专为利用 Cortex XDR/XSIAM 的企业安全团队打造** ⭐ 如果您觉得有用,请给本代码库点个 Star! ⭐
标签:AMSI绕过, Cortex XDR, DNS 反向解析, Homebrew安装, Python, YARA, 云资产可视化, 威胁检测, 无后门, 端点检测与响应(EDR), 逆向工具