端点无文件攻击检测指南:基于 Anthropic-Cybersecurity-Skills 的 API 参考与实战落地方案
【免费下载链接】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
导读
本文围绕 Anthropic-Cybersecurity-Skills 仓库中detecting-fileless-attacks-on-endpoints技能的 API 参考文档 展开,系统讲解面向"完全驻留内存、不落盘写文件"的无文件(Fileless)攻击的检测工程方法。你将掌握关键事件源(PowerShell Script Block、Sysmon、WMI)的选取与解析、可疑脚本模式的正则设计、Splunk SPL 检测查询、AMSI 状态核查,以及如何结合仓库内附的 agent.py 与 process.py 自动化分析 EVTX 与 CSV 日志,输出带 MITRE ATT&CK 编号与严重级别的检测结果。
无文件攻击的检测思路:为什么传统 AV 会失手
无文件恶意软件(Fileless Malware)的典型特征是:攻击载荷只存在于内存、注册表或 WMI 仓库中,从不以可执行文件形式落盘,从而绕过以"文件扫描"为核心的传统防病毒产品。检测这类攻击必须转变思路——不盯"文件是什么",而是盯"进程在做什么、脚本在说什么、系统的遥测在记什么"。
从本技能的 SKILL.md 可以看出,其核心检测路径覆盖四类主流无文件手法:
- PowerShell 驱动的攻击:编码命令执行、下载器(download cradle)、AMSI 绕过;
- 反射式 DLL 注入(Reflective DLL Injection):DLL 直接从内存加载,不经过磁盘;
- 进程注入(Process Injection):包括进程镂空(hollowing)、APC 注入等;
- WMI 持久化:通过 WMI 事件订阅实现重启后的自动执行。
其参考的标准映射(见 standards.md)覆盖 MITRE ATT&CK 的 T1059.001(PowerShell 执行)、T1055(进程注入全子技术)、T1546.003(WMI 事件订阅持久化)与 T1620(反射式代码加载)。仓库的 ATTACK_COVERAGE.md 与 mappings/attack-navigator-layer.json 中亦记录了 T1055、T1059.001 等技术的技能映射关系,可作为威胁建模时的交叉参考。
关键事件源:六类"必须开"的遥测
api-reference 文档以表格形式给出了无文件攻击检测的核心事件源,这是整套检测体系的"地基"。下表为原文完整内容,并补充了每个事件对应的检测用途说明:
| Source | Event ID | Detection |
|---|---|---|
| PowerShell Script Block | 4104 | Malicious script content |
| Sysmon Process Create | 1 | Encoded command execution |
| Sysmon CreateRemoteThread | 8 | Reflective DLL injection |
| Sysmon WMI EventFilter | 19 | WMI persistence |
| Sysmon WMI EventConsumer | 20 | WMI persistence |
| Sysmon WMI Binding | 21 | WMI persistence |
结合 SKILL.md 中"Step 1: Enable Required Telemetry"的内容,可以补充如下关键点:
- Event ID 1(进程创建):记录进程的完整 CommandLine,是捕获
powershell -enc ...、下载器拼接命令等编码执行的关键入口; - Event ID 7(镜像加载):用于发现从不寻常路径加载的 DLL,是反射注入的重要旁证;
- Event ID 8(CreateRemoteThread):远程线程创建,直接指向注入行为;
- Event ID 10(进程访问):捕捉对 LSASS 等敏感进程的访问;
- Event ID 19/20/21(WMI 三件套):分别对应 EventFilter、EventConsumer 与二者的绑定,任何非预期的 WMI 事件订阅创建都应视为可疑。
开启这些遥测的 PowerShell 命令(来自 SKILL.md,属于 GPO 或注册表配置路径):
# Enable PowerShell Script Block Logging (GPO or registry) New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging" ` -Name EnableScriptBlockLogging -Value 1 -PropertyType DWORD -Force # Enable PowerShell Module Logging New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ModuleLogging" ` -Name EnableModuleLogging -Value 1 -PropertyType DWORD -Force # Enable PowerShell Transcription New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\Transcription" ` -Name EnableTranscripting -Value 1 -PropertyType DWORD -Force注意:Script Block Logging 之所以至关重要,是因为它记录的是去混淆后的脚本内容(Event 4104),攻击者精心编码的命令在执行前会被 PowerShell 引擎还原,从而被完整留存。若此项关闭,防御方将对去混淆后的命令"失明"。
解析 PowerShell 事件日志:python-evtx 实操
api-reference 文档给出了用python-evtx读取PowerShell-Operational.evtx并提取 Event 4104 中ScriptBlockText的最小示例:
import Evtx.Evtx as evtx with evtx.Evtx("PowerShell-Operational.evtx") as log: for record in log.records(): xml = record.xml() # Parse Event 4104 ScriptBlockText仓库中的 agent.py 将其落地为完整实现:parse_powershell_scriptblock()遍历记录,先以"<EventID>4104</EventID>"粗筛事件,再用正则从 XML 中提取ScriptBlockText与SystemTime,随后逐条匹配可疑模式并生成结构化 finding:
# 摘自 scripts/agent.py 的解析核心逻辑 script_block = re.search(r'<Data Name="ScriptBlockText">([^<]+)', xml) ... for pattern, (mitre, severity, desc) in SUSPICIOUS_PS_PATTERNS.items(): if re.search(pattern, script, re.IGNORECASE): findings.append({ "event_id": 4104, "timestamp": time_match.group(1) if time_match else "", "pattern": desc, "mitre": mitre, "severity": severity, "script_excerpt": script[:300], })这里的script_excerpt截取前 300 字符用于告警上下文展示,既能辅助研判,又避免告警体量过大。依赖未安装时,parse_powershell_scriptblock会返回{"error": "python-evtx not installed: pip install python-evtx"},提示先执行pip install python-evtx。
可疑 PowerShell 模式库:正则即检测逻辑
api-reference 文档定义了五类核心正则模式,覆盖无文件攻击中最具代表性的手法:
# Dynamic execution r"Invoke-Expression|IEX\s*\(" # Reflective loading r"System\.Reflection\.Assembly.*Load" # Memory injection APIs r"VirtualAlloc|VirtualProtect|CreateThread" # WMI persistence r"Register-WMI|__EventFilter|__EventConsumer" # Encoded commands r"-enc\s|-encodedcommand\s"在 agent.py 中,这套模式被扩展为带 MITRE 编号与严重级别的完整映射表SUSPICIOUS_PS_PATTERNS,检测语义比 api-reference 更为丰富:
| 正则模式(节选) | MITRE | 严重级别 | 检测语义 |
|---|---|---|---|
Invoke-Expression\|IEX\s*\( | T1059.001 | HIGH | 动态代码执行 |
Invoke-Mimikatz\|Invoke-Kerberoast | T1003 | CRITICAL | 凭据窃取工具 |
System\.Reflection\.Assembly.*Load | T1620 | HIGH | 反射式程序集加载 |
Net\.WebClient.*Download(String\|Data\|File) | T1105 | HIGH | 远程下载 |
VirtualAlloc\|VirtualProtect\|CreateThread | T1055 | CRITICAL | 内存注入 API |
-enc\s\|-encodedcommand\s | T1027 | HIGH | 编码 PowerShell |
Register-WMI\|__EventFilter\|__EventConsumer | T1546.003 | CRITICAL | WMI 持久化 |
HKCU:\\.*\\Run\|HKLM:\\.*\\Run | T1547.001 | HIGH | 注册表 Run 键 |
Add-MpPreference.*ExclusionPath | T1562.001 | HIGH | Defender 排除项 |
与 api-reference 中的示例对应关系:-enc/-encodedcommand是编码命令检测(Event 1 视角与 Event 4104 视角通用);VirtualAlloc系列直接命中内存注入;Register-WMI/__EventFilter/__EventConsumer则对应 WMI 持久化的三类关键对象。SKILL.md 还补充了 AMSI 绕过模式的检测建议:("Amsi"+"Utils") OR ("amsi"+"InitFailed") OR "SetValue.*amsi"。
另外,仓库提供了面向 CSV 导出的轻量扫描器 process.py,其FILELESS_PATTERNS采用(?i)不区分大小写写法,将模式归为七类:encoded_command、download_cradle、amsi_bypass、reflection、wmi_abuse、credential_access、invoke_expression。用法:
python process.py <powershell_logs.csv>脚本会按技术类型统计命中次数,并在日志同级目录生成fileless_detection_report.json(默认最多保留 100 条检测明细)。
Splunk SPL:把检测规则部署进 SIEM
api-reference 给出了一个精简的 Splunk 检测查询:
index=powershell EventCode=4104 | where match(ScriptBlockText, "(?i)(Invoke-Expression|IEX|VirtualAlloc|FromBase64)") | stats count by ScriptBlockText, Computer, UserIDSKILL.md 中提供了更完整的版本,二者结合可组成"检测 + 审计"双层查询:
index=windows source="WinEventLog:Microsoft-Windows-PowerShell/Operational" EventCode=4104 | where match(ScriptBlockText, "(?i)(iex|invoke-expression|downloadstring|net\.webclient|frombase64|bypass|amsi.utils)") | table _time host ScriptBlockText区别在于:match()正则支持更细粒度的模式(net.webclient、amsi.utils、bypass等),table输出便于研判,stats count则适合做聚合告警与基线统计。若环境中启用 Sysmon 并收集注册表写事件,还可叠加 SKILL.md 中的 Event 13 查询,识别写入 Run 键的超长 Base64 内容:
index=sysmon EventCode=13 | where match(Details, "[A-Za-z0-9+/=]{100,}") | table _time host TargetObject Details ImageAMSI:脚本执行前的"安检门"核查
api-reference 给出了 AMSI 的两条运维命令:
# Enable AMSI logging Set-MpPreference -EnableNetworkProtection Enabled # Check AMSI status Get-MpComputerStatus | Select AMServiceEnabled, AntispywareEnabledAMServiceEnabled反映 AMSI 服务是否开启,AntispywareEnabled反映反间谍软件保护是否生效。需要强调的是:AMSI 的价值在于脚本内容在执行前即被安全产品检查,但成熟攻击者会先尝试绕过 AMSI 再投递载荷(常见手法即 api-reference/SKILL.md 中模式库所覆盖的amsiutils、amsiInitFailed字符串)。因此,检测 AMSI 绕过尝试本身应作为高优先级告警,而不是只依赖 AMSI 的拦截结果。
WMI 持久化检测:三类对象的主动巡查
WMI 持久化依赖三个根命名空间root\Subscription下的对象:__EventFilter(触发条件)、__EventConsumer(执行动作)、__FilterToConsumerBinding(二者绑定)。api-reference 提供了完整的三条 PowerShell 巡查命令:
# List WMI event subscriptions Get-WMIObject -Namespace root\Subscription -Class __EventFilter Get-WMIObject -Namespace root\Subscription -Class __EventConsumer Get-WMIObject -Namespace root\Subscription -Class __FilterToConsumerBinding在 agent.py 中,parse_sysmon_wmi_persistence()实现了对 Sysmon Event 19/20/21 的自动解析,通过事件 ID 分发到WMI_PERSISTENCE_EVENTS字典(19=EventFilter 创建、20=EventConsumer 创建、21=EventConsumerToFilter 绑定),并从 XML 提取Name、Operation、Destination、User等字段,统一标记为CRITICAL级别、MITRE T1546.003。SKILL.md 中给出的人工排查建议是:任何 WMI 事件订阅的创建都应视为可疑,尤其当Consumer包含CommandLineEventConsumer或ActiveScriptEventConsumer时——这两个 Consumer 类分别用于执行命令行与脚本,是恶意持久化的高发载体。
CLI 实战:一键跑通 EVTX 检测流程
api-reference 文档末尾给出了 agent 的两种 CLI 调用方式,二者分别对应"纯 PowerShell 日志分析"与"多开关组合分析":
python agent.py --ps-log PowerShell-Operational.evtx python agent.py --sysmon-log Sysmon.evtx --check-wmi --check-injection对照 agent.py 的参数定义可完整解释其行为:
--ps-log:指定 PowerShell EVTX 路径,触发 Event 4104 脚本块扫描(parse_powershell_scriptblock);--sysmon-log:指定 Sysmon EVTX 路径,本身不直接触发分析,需配合下面两个开关;--check-wmi:解析 Event 19/20/21,检测 WMI 持久化(parse_sysmon_wmi_persistence);--check-injection:解析 Event 8,检测 CreateRemoteThread 注入迹象(parse_sysmon_injection)。
parse_sysmon_injection()对每个 Event 8 提取SourceImage与TargetImage,统一标记HIGH严重级别、MITRE T1055,描述为 "CreateRemoteThread - possible reflective injection"。执行结果以 JSON 输出,包含生成时间戳、findings数组与total_findings计数,便于直接接入下游告警管道或脚本解析。SKILL.md 还提示了 KQL(MDE)侧的等价检测,通过CreateRemoteThreadApiCall、NtAllocateVirtualMemoryApiCall动作类型,排除MsMpEng.exe、svchost.exe等已知合法来源后聚焦可疑进程。
从检测到运营:工作流与模板化交付
本技能还提供了两条"运营化"支撑:
端到端工作流(workflows.md):
[Enable telemetry] → [Build detection rules per technique] → [Deploy rules in SIEM] → [Threat hunt for historical fileless indicators] → [Triage alerts] → [Investigate memory for confirmed incidents] → [Extract IOCs from memory analysis] → [Tune detections]。即:遥测开启 → 按技术逐条建规则 → 部署 SIEM → 回溯狩猎历史指标 → 告警分级研判 → 对确认事件做内存取证(如 Volatility 3)→ 提取 IOC 反馈 → 迭代调优规则。检测模板(assets/template.md):提供三张表用于工程交付——Telemetry Status(记录 Sysmon、PowerShell Script Block、AMSI 是否启用及对应事件 ID)、Detection Rules(规则名、技术编号、SIEM 查询、状态)、Sign-Off(检测工程师与 SOC 负责人签字)。这使检测能力从"一段查询"升级为可评审、可交接的工程资产。
常见陷阱与规避要点
结合 SKILL.md 的 "Common Pitfalls" 与 api-reference 的事件源设计,落地时需警惕四类典型失误:
- 只依赖文件型 AV:文件扫描对纯内存攻击完全失效,必须叠加行为检测(EDR)与 AMSI 脚本内容检查;
- 关闭 PowerShell 日志:没有 Script Block Logging(Event 4104),去混淆后的命令对防御方完全不可见,检测等于盲打;
- 漏掉 AMSI 绕过信号:攻击者会在执行载荷前先绕过 AMSI,应将
amsiutils、amsiInitFailed等绕过特征作为最高优先级告警而非普通噪声; - 不监控 WMI 事件:WMI 持久化是 APT 组织偏爱的驻留手法,Sysmon 19–21 必须启用,否则持久化路径对 SIEM 不可见。
结语
无文件攻击检测的本质是"遥测驱动":以 PowerShell Script Block Logging(4104)与 Sysmon(1/7/8/10/19/20/21)为数据底座,以 AMSI 为脚本执行前的检查关口,以正则模式库为检测语义,以 Splunk/KQL/Python 为落地载体。Anthropic-Cybersecurity-Skills 的该技能将这条链路打包为可复用的 API 参考、源码脚本与运营模板,检测工程师既可通过 agent.py 快速扫描历史 EVTX 验证规则效果,也可借 assets/template.md 将规则纳入工程化评审,从而把"检测规则"真正变成可运营的防御能力。
【免费下载链接】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),仅供参考