基于 Anthropic-Cybersecurity-Skills 的端点日志防规避检测实战:事件 ID、正则规则与 EVTX 解析全解析
【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATT&CK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF & MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI & 20+ platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills
在 MITRE ATT&CK 战术体系中,防御规避(TA0005)是攻击者在入侵生命周期中最常使用、也最难捕捉的一类行为:清理日志、篡改时间戳、注入进程、禁用安全工具。本文基于 Anthropic-Cybersecurity-Skills 仓库中的 detecting-evasion-techniques-in-endpoint-logs 技能,围绕其 API 参考文档 展开,系统讲解如何通过 Windows 事件 ID、python-evtx 解析、正则检测模式与 Splunk SPL 查询,构建一套可落地的端点防规避检测方案。读完本文,你将掌握关键事件 ID 的映射关系、基于源码的检测规则实现细节,以及配套脚本的实际用法。
技能与 API 参考文档概览
该技能是一个面向 AI Agent 的结构化网络安全能力单元,专门用于在端点日志中发现攻击者的防御规避行为,包括日志篡改(log tampering)、时间戳伪造(timestomping)、进程注入(process injection)和安全工具禁用(security tool disabling)。它覆盖 MITRE ATT&CK TA0005 战术下的多个技术点,并关联了 NIST CSF、D3FEND 等框架的映射。
技能的完整元数据定义在 SKILL.md 的 frontmatter 中:
- domain/subdomain:cybersecurity / endpoint-security
- tags:endpoint、edr、threat-hunting、defense-evasion、MITRE-ATT&CK、detection-engineering
- MITRE ATT&CK 映射:T1055(进程注入)、T1547(启动项持久化)、T1059(命令与脚本解释器)、T1036(伪装)、T1027(混淆文件或信息)
- NIST CSF 映射:PR.PS-01、PR.PS-02(系统与网络安全保护)、DE.CM-01(持续监控)、PR.IR-01
API 参考文档 是这套检测能力的“快速查表”,浓缩了事件 ID 对照、解析代码、正则模式、MITRE 映射、SPL 查询与 CLI 用法六个核心要素。下文将以这六要素为骨架,结合仓库中的 agent.py 与 process.py 源码做纵深展开。
关键 Windows 事件 ID:防规避检测的“信号源”
API 参考文档给出了五组最核心的事件 ID 对照表,这是所有检测规则的地基:
| Event ID | Source | Evasion Technique |
|---|---|---|
| 1102 | Security | Audit log cleared (T1070.001) |
| Sysmon 2 | Sysmon | Timestomping (T1070.006) |
| Sysmon 8 | Sysmon | CreateRemoteThread (T1055) |
| Sysmon 10 | Sysmon | Process Access / LSASS (T1003) |
| 4688 | Security | Process creation with cmdline |
从源码 agent.py 可以看到这套事件 ID 在实现层面的完整映射:
EVASION_EVENT_IDS = { 1102: {"name": "Audit Log Cleared", "severity": "CRITICAL", "mitre": "T1070.001"}, 4688: {"name": "Process Creation", "severity": "INFO", "mitre": "T1059"}, 4689: {"name": "Process Termination", "severity": "INFO", "mitre": ""}, } SYSMON_EVASION_IDS = { 1: "Process Create", 2: "File creation time changed (Timestomping)", 8: "CreateRemoteThread", 10: "Process Access", 12: "Registry Object Create/Delete", 13: "Registry Value Set", }每个事件 ID 都被赋予了对应的**严重级别(severity)**与MITRE 技术 ID,这是自动化告警分级的基础。除了 API 参考中的五类,父文档 SKILL.md 还补充了更完整的信号矩阵,供构建规则时按需取用:
- Security 1102:安全审计日志被清除(T1070.001),严重级别为 CRITICAL;
- System 104:事件日志被清除;
- Sysmon 1:进程创建(含完整命令行),用于捕捉
wevtutil cl、Clear-EventLog等日志清理命令; - Sysmon 2:文件创建时间被修改(T1070.006 时间戳伪造);
- Sysmon 8:CreateRemoteThread(T1055 进程注入),需要过滤
csrss.exe、lsass.exe等合法进程; - Sysmon 10:进程访问,
GrantedAccess命中0x1F0FFF、0x1FFFFF、0x001F0FFF等全访问掩码时高度可疑(PROCESS_ALL_ACCESS),常被用于 LSASS 凭据转储(T1003); - Sysmon 11:文件创建,配合事件 ID 2 可交叉验证时间戳伪造;
- Sysmon 13:注册表值设置,用于检测
DisableAntiSpyware、DisableRealtimeMonitoring等禁用安全功能的注册表项; - Sysmon 25:进程篡改(Image is replaced),是进程镂空(process hollowing)的典型信号。
从源码结构看,agent.py 采用“事件 ID 分类 + 正则内容匹配”的双重判定逻辑:先按事件 ID 决定是否进入特定检测分支,再对命令行内容做正则匹配,从而兼顾广度(不漏事件)与精度(识别具体技术)。
python-evtx 解析:从原始 EVTX 到结构化 XML
API 参考文档给出了使用 python-evtx 库遍历事件日志记录的最小实现:
import Evtx.Evtx as evtx with evtx.Evtx("Sysmon.evtx") as log: for record in log.records(): xml = record.xml() # Parse EventID, CommandLine, SourceImage, TargetImage这一用法在 agent.py 的analyze_evtx_for_evasion函数中被完整落地。源码展示了如何从 XML 中抽取关键字段:
with evtx.Evtx(filepath) as log: for record in log.records(): xml = record.xml() event_id_match = re.search(r'<EventID[^>]*>(\d+)</EventID>', xml) if not event_id_match: continue event_id = int(event_id_match.group(1)) time_match = re.search(r'SystemTime="([^"]+)"', xml) timestamp = time_match.group(1) if time_match else ""其中几个解析细节值得注意:
- 事件 ID 提取:使用正则
<EventID[^>]*>(\d+)</EventID>兼容带属性的 EventID 标签(如EventID Qualifiers="0"); - 时间戳提取:从
SystemTime="..."属性中获取事件产生时间; - 命令行提取:对事件 ID 1/4688,优先匹配
<Data Name="CommandLine">,若字段缺失则回退到<Data Name="NewProcessName">,保证不同 Sysmon/安全日志版本下都能拿到进程信息; - 进程注入字段:对事件 ID 8(CreateRemoteThread),提取
SourceImage与TargetImage两个 Data 字段,用于溯源注入的源进程与目标进程。
依赖说明:agent.py 对 python-evtx 采用惰性导入(try: import Evtx.Evtx as evtx except ImportError: evtx = None)。若未安装,analyze_evtx_for_evasion会返回{"error": "python-evtx not installed: pip install python-evtx"},而不是直接崩溃。运行前需执行pip install python-evtx。
解析后,每条命中会生成结构化的 findings 对象,例如事件 ID 1102 的命中结构如下(见 agent.py):
{ "event_id": 1102, "timestamp": timestamp, "severity": "CRITICAL", "mitre": "T1070.001", "description": "Security audit log was cleared", }防规避检测正则模式库:模式、源码与实战语义
API 参考文档整理了三大类正则检测模式,分别覆盖日志清理、安全工具禁用、AMSI 绕过。仓库源码 process.py 中的EVASION_PATTERNS字典将这套模式扩展为完整的六类检测目录,下面逐类展开。
日志清理(T1070.001)
API 参考中的核心模式:
r"wevtutil\s+(cl|clear-log)" r"Clear-EventLog"在 agent.py 中,LOG_CLEARING_COMMANDS进一步扩展为五个维度,覆盖命令行工具、PowerShell、文件删除与 WMIC 四种攻击路径:
LOG_CLEARING_COMMANDS = [ r"wevtutil\s+(cl|clear-log)", # wevtutil 清除日志 r"Clear-EventLog", # PowerShell 清除事件日志 r"Remove-EventLog", # PowerShell 移除日志源 r"del\s+.*\.evtx", # 直接删除 EVTX 文件 r"wmic\s+nteventlog.*clear", # WMIC 清空事件日志 ]安全工具禁用(T1562.001)
API 参考给出了针对 Windows Defender 与 AMSI 的禁用/绕过模式:
r"Set-MpPreference\s+-DisableRealtimeMonitoring\s+\$true" r"sc\s+(stop|delete)\s+WinDefend" r"[Ref].Assembly.GetType.*AMSI" r"amsiInitFailed"源码 agent.py 将禁用行为拆成SECURITY_TOOL_DISABLE与AMSI_BYPASS_PATTERNS两组,覆盖面更宽:
SECURITY_TOOL_DISABLE = [ r"(Stop|Disable)-Service.*(Windows Defender|WinDefend|MsMpSvc)", r"Set-MpPreference\s+-DisableRealtimeMonitoring\s+\$true", r"sc\s+(stop|delete)\s+(WinDefend|MsMpSvc|Sense)", r"netsh\s+advfirewall\s+set\s+.*state\s+off", r"reg\s+add.*DisableAntiSpyware.*1", r"taskkill.*/im\s+(MsMpEng|avp|avgui|mbam)", # 结束 AV 进程 ] AMSI_BYPASS_PATTERNS = [ r"amsi(Init|Scan)Buffer", r"AmsiUtils", r"amsiContext", r"[Ref].Assembly.GetType.*AMSI", ]从源码结构看,禁用检测覆盖了 PowerShell 服务控制、sc 命令行、防火墙关闭、注册表持久化禁用与进程强杀五个攻击面,命中即标记为 CRITICAL(T1562.001);AMSI 绕过则标记为 HIGH。值得注意的是agent.py对命中命令行做了cmd[:200]截断,避免超长命令污染告警输出——这是实战中控制日志体量的实用细节。
六类完整检测目录(process.py 扩展)
process.py 的EVASION_PATTERNS是面向 CSV 导出日志的完整模式库,将上述正则与事件 ID 组合成六类检测技术,每类都带技术名称、严重级别与检测条件:
| 技术 ID | 名称 | 严重级别 | 检测要点 |
|---|---|---|---|
| T1070.001 | 清除 Windows 事件日志 | high | wevtutil cl/clear-log、Clear-EventLog、Remove-EventLog、事件 ID 1102/104 |
| T1055 | 进程注入 | high | Sysmon 8/10/25、VirtualAllocEx、WriteProcessMemory、CreateRemoteThread、NtMapViewOfSection |
| T1562.001 | 禁用或修改安全工具 | critical | Set-MpPreference -Disable、sc stop/config、net stop、DisableAntiSpyware、DisableRealtimeMonitoring |
| T1036 | 伪装 | medium | 系统进程从非标准路径启动(svchost/csrss/lsass/smss/services.exe) |
| T1218 | 系统二进制代理执行(LOLBin) | high | mshta、certutil、regsvr32、rundll32、MSBuild、installutil 的滥用模式 |
| T1070.006 | 时间戳伪造 | medium | Sysmon 事件 ID 2 |
其中T1036 伪装检测采用“进程名 + 期望路径”的白名单比对逻辑(process.py):
"suspicious_paths": { "svchost.exe": r"C:\\Windows\\System32\\svchost\.exe", "csrss.exe": r"C:\\Windows\\System32\\csrss\.exe", "lsass.exe": r"C:\\Windows\\System32\\lsass\.exe", "smss.exe": r"C:\\Windows\\System32\\smss\.exe", "services.exe": r"C:\\Windows\\System32\\services\.exe", }当检测到进程名为这些系统进程、但完整路径不匹配C:\Windows\System32\下的标准路径时,即判定为伪装并输出“Masquerading: {proc_name} from unexpected path {image}”。
**LOLBin 滥用(T1218)**的正则模式非常具体(process.py),每条都对应一种已知滥用手法:
r"mshta\.exe.*https?://", # mshta 执行远程内容 r"mshta\.exe.*javascript:", # mshta 执行 JavaScript r"certutil\.exe.*-urlcache", # certutil 下载文件 r"certutil\.exe.*-decode", # certutil 解码载荷 r"regsvr32\.exe.*/s.*/n.*/u.*/i:", # regsvr32 执行 scriptlet r"rundll32\.exe.*javascript:", # rundll32 执行脚本 r"MSBuild\.exe(?!.*\.(sln|csproj|vbproj))", # MSBuild 运行内联任务(负向前瞻排除正常构建) r"installutil\.exe.*/logfile=", # installutil 安装程序集MSBuild模式使用了负向前瞻(?!.*\.(sln|csproj|vbproj)),即仅当命令行中不含.sln/.csproj/.vbproj时才命中——这是过滤正常编译场景、聚焦攻击性用法的关键技巧。
MITRE ATT&CK TA0005 技术映射
API 参考文档给出了五类核心技术与检测信号的映射表,这是将检测规则对齐到标准框架的索引:
| Technique | ID | Detection |
|---|---|---|
| Indicator Removal | T1070 | Log clearing, file deletion |
| Timestomping | T1070.006 | Sysmon Event ID 2 |
| Process Injection | T1055 | Sysmon Event ID 8 |
| Impair Defenses | T1562.001 | AV/EDR disabling commands |
| AMSI Bypass | T1562.001 | PowerShell AMSI patching |
结合 standards.md 的说明,TA0005 防御规避战术下包含 43 个技术和 80+ 子技术,本技能聚焦其中最高频的六类。从源码 process.py 的判定流程看,每条检测记录都会携带technique_id、technique_name与severity字段,输出格式如下:
{ "timestamp": timestamp, "technique_id": technique_id.split("-")[0], # 如 "T1070.001" -> "T1070.001" "technique_name": technique["name"], "severity": technique["severity"], "event_id": event_id, "process": image, "command_line": command_line[:300], "detail": detection_detail, "host": row.get("Computer", row.get("host", "")), }这意味着无论是 EVTX 解析(agent.py)还是 CSV 分析(process.py),输出的检测结果都保持一致的 MITRE 映射结构,可直接被下游 SIEM、SOAR 或威胁情报平台消费。
Splunk SPL 检测查询
API 参考文档提供了一个跨事件类型的聚合查询骨架:
index=sysmon (EventCode=2 OR EventCode=8 OR EventCode=10) | eval technique=case( EventCode=2, "Timestomping", EventCode=8, "Process Injection", EventCode=10, "Process Access") | stats count by technique, SourceImage, Computer该查询的核心思想是:用case()将不同事件 ID 归一化为统一的技术标签,再按技术、源进程、主机聚合计数。这种方式让不同信号源(时间戳修改、远程线程注入、进程访问)在一个结果集中对齐比较,是后续跨事件关联(correlation)的基础。
父文档 SKILL.md 进一步给出了各类技术的细粒度 SPL 查询,可直接替换到上述骨架中:
日志清理(T1070)检测:
index=windows (EventCode=1102 OR EventCode=104) OR (EventCode=1 CommandLine="*wevtutil*cl*") OR (EventCode=1 CommandLine="*Clear-EventLog*") | table _time host user CommandLine EventCode进程注入(T1055)检测——过滤合法系统进程后再聚合,并要求每个源-目标组合的出现次数小于 5,以降低误报:
index=sysmon EventCode=8 | where NOT match(SourceImage, "(?i)(csrss|svchost|MsMpEng|defender)") | stats count by SourceImage TargetImage host | where count < 5 | sort - count伪装(T1036)检测——用mvindex(split(Image,"\\"),-1)提取进程名后比对标准路径:
index=sysmon EventCode=1 | eval process_name=mvindex(split(Image,"\\"),-1) | where (process_name="svchost.exe" AND NOT match(Image,"(?i)C:\\\\Windows\\\\System32")) OR (process_name="csrss.exe" AND NOT match(Image,"(?i)C:\\\\Windows\\\\System32")) | table _time host Image ParentImage CommandLine User多信号关联规则(高置信度检测链)——这是 API 参考“单事件检测”的进阶形态:同一主机在 1 小时内出现 3 种以上规避技术,判定为疑似后渗透规避链:
index=sysmon host=* | eval technique=case( EventCode=2, "timestomping", EventCode=8 AND NOT match(SourceImage,"csrss|svchost"), "process_injection", EventCode=1 AND match(CommandLine,"(?i)wevtutil.*cl"), "log_clearing", EventCode=13 AND match(TargetObject,"DisableRealtimeMonitoring"), "security_disable", EventCode=1 AND match(CommandLine,"(?i)(mshta|certutil.*urlcache|regsvr32.*/s.*/n)"), "lolbin_abuse", true(), NULL ) | where isnotnull(technique) | bin _time span=1h | stats dc(technique) as technique_count values(technique) as techniques by host _time | where technique_count >= 3 | sort - technique_count该查询的bin _time span=1h将时间窗口分桶为 1 小时,dc(technique)统计不同技术种类数,technique_count >= 3作为触发阈值——这正是 SKILL.md 中“将多个弱信号组合为高置信度检测”思想的实现。
CLI 用法:从 API 参考到可运行脚本
API 参考文档给出了两个命令行入口:
python agent.py --evtx-file Sysmon.evtx python agent.py --evtx-file Security.evtxagent.py 的main()函数完整实现了该 CLI:--evtx-file为必填参数,运行后会输出 JSON 格式的检测结果,包含timestamp、source_file、findings、total_findings与by_severity统计字段:
python agent.py --evtx-file Sysmon.evtx输出示例(JSON 结构):
{ "timestamp": "2026-09-12T01:15:42.123456Z", "source_file": "Sysmon.evtx", "findings": [], "total_findings": 0, "by_severity": {} }仓库还提供了第二个分析入口 process.py,用于分析从 Sysmon 导出的 CSV 事件(如通过 Sysmon XML 转换工具导出),并在同目录生成{文件名}_evasion_report.json报告与终端汇总:
python process.py <sysmon_events.csv>CSV 分析函数analyze_sysmon_csv(process.py)对每行事件做多字段文本合并(Message + CommandLine + Image),再逐一匹配六类检测目录,输出按技术、严重级别、主机三维聚合的报告:
--- Evasion Detection Summary --- Total detections: 12 CRITICAL: 3 HIGH: 5 MEDIUM: 4 By technique: T1562.001: 4 T1055: 3 ...运行环境与限制:agent.py 依赖python-evtx(需pip install python-evtx);process.py 仅依赖 Python 标准库。两个脚本均针对 Windows 端点日志设计,输入必须是 Sysmon 或 Windows Security 的 EVTX/CSV 导出文件;检测基于正则模式匹配,可能存在漏报与误报,正式落地时需结合下文的工作流进行调优。
检测工作流与猎杀模板
API 参考是“静态规则库”,而 workflows.md 给出了三条操作化工作流,让静态规则进入动态运营循环:
- 工作流 1:规避技术威胁猎杀——选择猎杀目标技术(T1055/T1070/T1036/T1562),构造检测查询,回扫 30–90 天端点遥测,对结果执行“已知良好(加入白名单)→ 可疑(深度调查)→ 无结果(验证日志覆盖度)”三分流;
- 工作流 2:检测规则部署——创建 Sigma/SIEM 规则 → 历史数据测试 → 高误报则细化排除条件 → 告警模式部署 2 周 → 审查告警质量 → 提升为生产检测;
- 工作流 3:规避事件应急响应——检测命中后评估受影响端点范围、关联初始访问与持久化、判定攻击者是否达成目标,区分“活动入侵”(进入完整 IR)与“孤立事件”(修复端点并增强检测)。
配套的猎杀模板 template.md 提供了标准化的狩猎记录结构:猎杀信息(目标技术、假设、数据源、时间范围)、三种 SIEM 的检测查询、发现记录(时间戳/主机/技术/严重性/证据/真假阳性)、调优动作与签收流程。建议每次狩猎都按此模板留痕,保证检测规则的可追溯性与可复现性。
合规映射与常见陷阱
standards.md 将该技能的检测能力映射到主流合规框架,便于在合规审计中引用:
| Framework | Requirement | Detection Coverage |
|---|---|---|
| NIST 800-53 | SI-4 System Monitoring | 通过端点日志进行规避检测 |
| NIST 800-53 | AU-6 Audit Record Review | 针对篡改指标的日志分析 |
| PCI DSS 4.0 | 10.4.1 Audit log review | 自动化检测日志篡改 |
| ISO 27001 | A.12.4.1 Event logging | 安全日志完整性监控 |
最后,SKILL.md 总结了四条实战中极易踩坑的经验,直接关系到检测规则的有效性:
- 进程注入规则的告警疲劳:许多合法工具(杀毒软件、辅助功能)都会执行进程注入,必须维护已知良好源进程白名单;
- 缺失 Sysmon 事件 ID 8/10:默认 Sysmon 配置可能不采集 CreateRemoteThread 或 ProcessAccess,需使用 SwiftOnSecurity 或 Olaf Hartong 的完整配置;
- 忽略父进程上下文:可疑命令行只有在父进程同样可疑时才有意义(例如 Excel 派生 cmd.exe);
- 不做跨事件关联:单个事件往往是无害的,应将进程创建 + 网络连接 + 文件创建等多个弱信号组合成高置信度检测。
结语
从 API 参考文档 的事件 ID 对照表,到 agent.py 与 process.py 的正则模式库与解析实现,再到 Splunk SPL 的多信号关联查询,这套技能提供了一条从“看懂日志”到“自动检测规避行为”的完整链路。落地建议:先在隔离环境用历史 EVTX/CSV 数据验证规则命中率,再按“告警模式 → 调优 → 生产”的三阶段流程部署,并配合 template.md 的狩猎模板持续沉淀白名单与排除规则,最终形成覆盖 TA0005 主流技术的常态化检测能力。
【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATT&CK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF & MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI & 20+ platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考