ayman-m/yarascanner
GitHub: ayman-m/yarascanner
一款专为 Cortex XDR 与 XSIAM 平台优化的多线程 YARA 端点扫描器,支持实时威胁告警上传与企业级安全运营集成。
Stars: 0 | Forks: 0
# YARA Scanner - 企业级威胁检测系统
[](https://www.python.org/downloads/)
[](https://github.com/yourusername/yara-scanner)
[](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 规则**
- **类型:** 饼图及表格明细
- **洞察:** 识别哪些检测规则触发最频繁
- **用例:** 确定威胁调查和规则调优的优先级
- **示例数据:** ID_989714 (210,890 次命中), ID_133073 (188,889 次命中)
#### 📦 **匹配最多的文件(按字符串堆叠)**
- **类型:** 气泡图
- **洞察:** 显示哪些文件触发了多个 YARA 字符串
- **用例:** 识别经常被标记的二进制文件或潜在的误报

#### 🏥 **已完成的扫描**
- **类型:** 仪表盘 (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`
### 关键指标与可视化

#### ⚠️ **工作线程错误率**
- **类型:** 水平条形图(按工作线程)
- **洞察:** 识别有问题的 worker 或系统性问题
- **用例:** 排查扫描错误并优化线程数
- **正常范围:** < 0.01 (1%) 错误率
#### 🚀 **工作线程吞吐量与延迟对比**
- **类型:** 散点图
- **洞察:** 平衡文件处理速度和响应时间
- **用例:** 优化工作线程配置
- **示例:** ScanWorker-1 (21.3M 个文件,平均延迟 139 毫秒)

#### 💾 **缓存命中率**
- **类型:** 进度条 (38.94%)
- **洞察:** 从缓存获取的文件与重新扫描的文件的百分比
- **用例:** 评估缓存有效性并调整 LRU 大小
- **期望值:** 在后续扫描中为 60-80%
#### 📦 **文件扫描量**
- **类型:** 按端点的气泡图
- **洞察:** 比较不同主机的扫描工作负载
- **用例:** 识别异常值并进行容量规划
#### 📊 **扫描进度**
- **类型:** 时间序列(按小时存储桶)
- **洞察:** 实时可视化扫描进展
- **用例:** 监控活动扫描并估计完成时间
#### ⏱️ **扫描时间指标**
- **类型:** 多指标显示
- **指标:**
- 平均扫描时间:1.149 分钟
- 最大扫描时间:5.909 分钟
- 最短扫描时间:8 秒
- **用例:** SLA 合规性和性能基准测试
#### 📈 **容量与背压对比**
- **类型:** 面积图(索引至 100)
- **洞察:** 随时间变化的队列深度与处理能力对比
- **用例:** 检测瓶颈并扩展工作线程
- **健康状态:** 容量稳定且背压极小

#### 🎬 **已启动的扫描**
- **类型:** 仪表盘 (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), 逆向工具