0xPersist/Avery
GitHub: 0xPersist/Avery
面向威胁猎人的自主APT检测平台,通过多层遥测采集和行为关联分析检测主动规避的高级持续性威胁。
Stars: 0 | Forks: 0
# AVERY **用于侦察与产出的自主警戒引擎** *APT 检测基础设施。为威胁猎人构建,而非仪表盘。*
[](https://almalinux.org) [](https://tailscale.com) []()
## 概述 AVERY 是一个自建的安全运营平台,旨在检测处于主动规避状态下的高级持续性威胁 (APT)。该平台同时获取网络、主机和被动传感器层的全保真度遥测数据,实时应用行为关联分析,并将威胁情报置于检测层而非下游的富化步骤。所有服务间通信均通过经认证的零信任覆盖网络进行。没有任何服务监听公共接口。 本代码库是构建并当前运行该生产部署的自动化层。 ## 背景 大多数组织检测高级对手的方式问题不在于单个工具的质量,而在于这些工具是如何连接的,或者更准确地说,其架构中嵌入的假设如何限制了它们的发现能力。 围绕签名匹配构建的检测堆栈假设对手的行为方式与先前编录的操作一致。基于阈值的异常检测假设恶意活动在统计上与基线不同,且这种差异既是可测量的,也能与合法变化区分开来。这些假设在面对非复杂威胁时相当有效。但面对一个资源充足且正在进行针对性操作的行为者时,这些假设代表了对手被设计用来超越的底线。 APT 攻击活动的定义在于其刻意的操作安全,这是专门针对防御者能力进行校准的。基础设施的轮换速度快于指标源。TTP(战术、技术和程序)经过选择和修改,以避开已知的行为签名。驻留时间被管理在异常检测系统的噪声底限之内。横向移动的节奏经过调整,以避免产生触发警报的统计方差。对手并不是试图避开被你的工具发现。他们是在试图避开被你的分析师发现,这种区别很重要,因为大多数工具呈现的是它们被设计去寻找的东西,而不是实际存在的东西。 结果是传统检测架构所能发现的内容与一个耐心、资源充足的对手所能隐藏的内容之间存在结构性差距。这种差距不是配置问题。它不能通过添加更多数据源或调整现有规则来解决。它反映了大多数平台实施的检测模型与高级对手实际代表的威胁模型之间的类别差异。 AVERY 围绕一种不同的检测模型构建。其操作假设是对手已经阅读了相关的威胁情报文献,了解常见的检测方法,并已明确决定抑制哪些信号类别。在该假设下,检测需要寻找即使在对手刻意规避、且无法轻易抑制(除非改变其操作的根本性质)的情况下仍然存在的行为模式。这些模式是什么,以及如何识别它们,在此不作记录。 ## 平台架构 四个功能层。每一层的具体实现未公开记录。 ``` +------------------------------------------------------------------+ | TELEMETRY COLLECTION | | | | Network Edge . Host-Based Agents . Passive Sensors | | | | Simultaneous ingestion across all visibility layers. No | | single telemetry source is required for detection coverage. | | Suppressing or losing any individual source degrades | | fidelity but does not eliminate detection capability. | | Telemetry is normalized and timestamped at collection. | +------------------------------+-----------------------------------+ | +------------------------------v-----------------------------------+ | | | BEHAVIORAL CORRELATION ENGINE | | | | Real-time analysis across the full telemetry stream. | | Detections are confidence-weighted and mapped to MITRE | | ATT&CK. The correlation model is tuned for behavioral | | patterns consistent with known APT operational profiles. | | Signatures and static thresholds are not the primary | | detection mechanism. | | | +------------+---------------------------+--------------------------+ | | +------------v-----------+ +----------v-----------+ | | | | | THREAT INTELLIGENCE | | ORCHESTRATION & | | INTEGRATION | | RESPONSE | | | | | | Structured CTI with | | Workflow engine | | full indicator | | with configurable | | lifecycle management.| | autonomy spectrum. | | Correlation runs | | Alert delivery | | against live | | with ATT&CK | | telemetry — not | | context and | | queued alerts. | | confidence | | Campaign tracking | | scoring. Response | | and infrastructure | | from assisted to | | attribution across | | fully automated | | the full indicator | | per environment | | lifecycle. | | and policy. | +------------------------+ +----------------------+ All communication runs over an authenticated zero-trust overlay. No public listeners. No host-network firewall rules protecting inter-service communication — the network path does not exist without explicit overlay provisioning. The attack surface is bounded by mesh membership, not access control list accuracy. ``` ## 检测方法 **关于行为信号与指标** 失陷指标 (IoC) 是遗留产物。它们描述了特定工具或操作在特定时间点留下的痕迹。一个轮换基础设施、修改工具并意识到公开指标生态系统的对手,可以以相对较低的操作成本抑制大多数基于指标的检测。指标变得陈旧的速度快于威胁行为者改变行为的速度。 行为检测在不同的基础上运行。感兴趣的模式不是特定工具的遗留产物,而是操作本身的属性——植入物如何相对于周围流量基线进行通信,被入侵主机的进程树如何随时间演变,由持久访问机制发起的网络会话与合法用户做类似事情时发起的会话有何不同。这些模式更难抑制,因为抑制它们需要改变操作的基本机制,而不仅仅是交换二进制文件或轮换 IP。 实际意义在于,行为检测比指标匹配需要更深的遥测深度和更复杂的关联模型。这种权衡是值得的。指标匹配告诉你曾有某物存在。行为检测告诉你某事正在发生。 **关于遥测覆盖** 单一来源的遥测会产生单一来源的盲点。识别出收集机制并在其可见范围之外操作的对手,实际上在不触发任何警报的情况下使检测能力失效。AVERAGE 同时收集网络元数据、完整会话数据、主机遥测和被动传感器源。每一层提供的特定覆盖范围是互补而非重复的,关联引擎设计为跨所有层同时运行。明确避免依赖任何单一层的检测逻辑。 这对检测质量之外也有操作意义。当一个遥测源不可用时——无论是由于基础设施问题、刻意抑制还是对手行动——检测能力会优雅降级,而不是完全失败。关联模型考虑了数据源缺失的情况,而不是假设所有源始终存在。 **关于情报集成** 在警报触发后对其进行富化的威胁情报,与首先决定检测内容的威胁情报之间存在重大的架构区别。大多数平台实施的是前者。当生成警报时查询情报源,附加额外的上下文,分析师收到更丰富的通知。这对分流和调查很有用。它不会改变检测到了什么或是否被检测到。 AVERY 实施的是后者。情报上下文——当前的威胁行为者基础设施、活动攻击指标、从已报告操作中得出的行为概况——被持续维护,并在做出检测决策之前集成到关联过程中。警报生成时已包含其情报上下文,而非事后附加。这种区别在入侵的早期阶段最为重要,此时信号最弱,事后富化模型的帮助最小。 **关于响应自主性** 安全运营中的自动响应不是一种二元能力。适当的自动化水平取决于环境、检测的置信度、响应操作的可逆性以及组织的操作风险承受能力。适用于隔离测试环境中高置信度检测的响应操作,可能完全不适合生产金融系统中的中等置信度检测。 AVERY 的编排层旨在支持完整的自主性谱系,而不偏向其中的任何特定点。辅助响应和自动响应之间的阈值是一个策略参数,而非架构约束。该平台不假设自动化总是更好,也不假设人工审查总是必要的。它假设正确答案取决于上下文,并为该决策提供上下文。 ## 运营基础设施 生产部署在正常条件下无需人工干预即可持续运行。健康监控层每五分钟检查一次每个服务,跟踪状态转换,并在故障和恢复时发送 Slack 通知,带有冷却逻辑以在长时间中断期间抑制冗余警报。无论冷却状态如何,首次故障事件和每次恢复总是会被通知。 容器资源管理由每分钟的看门狗处理,它评估整个服务堆栈的内存利用率。当利用率达到容器配置限制的 80% 时,看门狗会在任何硬资源上限生效之前触发优雅重启和通知。这种方法避免了容器触及硬限制时发生的突然进程终止,这在有状态服务中可能导致数据丢失并需要人工恢复。选择 80% 阈值是为了提供有意义的提前预警,同时仍允许正常的利用峰值在无需干预的情况下清除。 基于主机的扫描每天以最低可用的 CPU 和 IO 调度优先级运行,使用 `nice -n 19` 和 `ionice -c 3`。扫描范围明确限于根据 CISA 指南与利用后活动具有记录的历史相关性的文件系统位置。容器卷、软件包仓库和高吞吐量数据目录被排除在外。所有匹配事件均结构化为 JSONL 并通过标准警报管道路由。在正常情况下,扫描器不会影响检测堆栈性能。 此代码库中的每个自动化脚本都是幂等的且具备回滚能力。没有任何理论上的东西。一切都在生产部署上运行。 ## 代码库结构 ``` AVERY/ | +-- wazuh/ | +-- setup-syslog-listener.sh # Overlay-scoped syslog ingestion setup | +-- install-rules.sh # Idempotent detection rule installer | +-- integrations/ | +-- custom-slack.py # ATT&CK-enriched structured alert delivery | +-- agents/ | +-- avery-telemetry.sh # Network edge telemetry agent (POSIX sh) | +-- monitor/ | +-- soc_monitor.sh # Stack health monitor with state tracking | +-- shuffle_watchdog.sh # Container memory watchdog | +-- avery_yara_scan.sh # Scheduled host scanner | +-- config/ | +-- .env.example # Required environment variables | +-- docs/ +-- VISION.md # Research direction +-- assets/ +-- avery-banner.svg ``` ## 脚本 ### `wazuh/setup-syslog-listener.sh` 在运行时检测覆盖网络接口和分配的地址。将作用域限定的 `
标签:AlmaLinux, APT检测, Beacon Object File, Cutter, DNS 反向解析, DNS 解析, IP 地址批量处理, Tailscale, 主动规避, 全保真遥测, 威胁情报, 子域名变形, 安全运营平台, 实时关联, 开发者工具, 异常检测, 红队对抗, 结构化查询, 网络传感器, 自主防御, 自动化安全, 请求拦截, 逆向工具, 隐蔽攻击, 零信任架构, 高级持续性威胁