Anthropic-Cybersecurity-Skills 实战指南使用 regipy 与 python-evtx 分析 Windows USB 设备连接历史【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATTCK, 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仓库中 analyzing-usb-device-connection-history 技能 的 API 参考文档 为主体系统讲解如何利用regipy注册表解析器、python-evtx事件日志解析器与setupapi.dev.log日志重构 Windows 主机的 USB 设备连接历史、首次/末次接入时间戳与盘符映射。读完本文你将掌握一套可直接落地到取证调查脚本中的核心 API 用法并能够把 USBSTOR、MountedDevices、MountPoints2 等注册表证据与事件日志、驱动安装日志交叉关联用于追踪移动介质使用、设备溯源或构建疑似数据外泄时间线。仓库中配套的 agent.py 即为本文所讲 API 的完整工程化实现可对照阅读。一、证据源全景USB 取证要读哪些东西在深入 API 之前先明确 Windows 平台下 USB 设备连接痕迹的四大类证据源对应 SKILL.md 的 Workflow 与 Prerequisites证据源位置取证价值注册表 SYSTEM 配置单元Windows/System32/config/SYSTEMUSBSTOR已连接的 USB 大容量存储设备清单、MountedDevices盘符映射注册表 SOFTWARE 配置单元Windows/System32/config/SOFTWAREDeviceContainers设备元数据与时间戳、EMDMgmtReadyBoost 设备序列号注册表 NTUSER.DATUsers/*/NTUSER.DATMountPoints2按用户记录的卷访问历史SetupAPI 日志Windows/INF/setupapi.dev.log设备首次安装First Connected时间戳事件日志winevt/Logs/System.evtx、Microsoft-Windows-DriverFrameworks-UserMode%4Operational.evtx等USB 即插即用事件Event ID 20001/20003 等与安全事件6416取证前置条件还包括对 USB 设备标识体系VID/PID/序列号的基本理解——DiskVen_XProd_YRev_Z\Serial这一命名格式贯穿后续所有解析逻辑。二、regipy打开注册表配置单元并定位活动 ControlSetregipy是纯 Python 实现的注册表配置单元解析器API 参考文档给出的基础用法如下from regipy.registry import RegistryHive reg RegistryHive(/path/to/SYSTEM) key reg.get_key(ControlSet001\\Enum\\USBSTOR) for subkey in key.iter_subkeys(): print(subkey.name, subkey.header.last_modified) for val in subkey.iter_values(): print(f {val.name} {val.value})两个关键 API 的语义get_key(path)按绝对路径定位键返回RegistryKey对象路径分隔符使用\\iter_subkeys()/iter_values()惰性迭代子键与值配合key.header.last_modifiedFILETIME 时间戳即可获得键的最后修改时间——这是判定设备末次连接时间的主要依据。关键不要硬编码 ControlSet 编号Windows 系统存在多个 ControlSet 副本必须通过SYSTEM\Select键确定当前激活的那一个。API 参考文档给出了标准做法select_key reg.get_key(Select) current select_key.get_value(Current) controlset fControlSet{current:03d}这与 agent.py 中parse_usbstor的实现完全一致——get_value(Current)返回活动 ControlSet 编号fControlSet{current:03d}将其格式化为三位的键名如ControlSet001。同时注意get_key在键不存在时可能抛出异常agent.py 中对 USBSTOR 的访问就使用了try/except包裹后返回空列表取证脚本应当保持同样的容错习惯。三、核心注册表路径速查表SYSTEM / NTUSER.DATAPI 参考文档整理的四条取证关键路径是脚本开发的地图路径配置单元说明ControlSet00X\Enum\USBSTORSYSTEMUSB 大容量存储设备标识符含厂商、型号、序列号MountedDevicesSYSTEM盘符到设备的映射关系ControlSet00X\Enum\USBSYSTEM全部 USB 设备不仅限于存储设备含 HID、复合设备等Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2NTUSER.DAT按用户记录的卷访问历史实战解读MountedDevices位于SYSTEM配置单元根下不在 ControlSet 内值名形如\DosDevices\E:当值数据长度大于 24 字节时通常是 UTF-16LE 编码的设备路径含USBSTOR或USB#标识即 USB 设备否则是固定磁盘的签名 偏移量二进制结构MountPoints2下的子键以卷 GUID 命名键的时间戳代表该用户最近一次访问该卷的时间——这是把设备连接与具体用户关联起来的关键桥梁。这两条路径在 agent.py 中分别由parse_mounted_devices与parse_mountpoints2实现其中对二进制数据的判断len(data) 24与解码data.decode(utf-16-le).strip(\x00)逻辑可直接复用。四、python-evtx从 System.evtx 提取 USB 插拔事件事件日志是补充注册表时间线的独立证据源。API 参考文档给出的python-evtx用法from evtx import PyEvtxParser import json parser PyEvtxParser(/path/to/System.evtx) for record in parser.records_json(): data json.loads(record[data]) event_id data[Event][System][EventID] if event_id in (20001, 20003): # USB plug events print(record[timestamp], event_id)要点说明PyEvtxParser(path)打开.evtx文件后通过records_json()逐条生成记录每条记录含timestamp与data字段data是嵌套 JSON 结构的字符串需json.loads后按Event → System → EventID路径读取事件 IDEvent → System → TimeCreated → #attributes → SystemTime可取得精确时间戳。从 SKILL.md 的 Step 4 可以确认更完整的 Event ID 集合DriverFrameworks-UserMode通道关注2003、2010、2100、2102System.evtx关注20001、20003、10000、10100安全日志中的6416识别到新的外部设备也值得纳入筛选。实际调查中建议将上述 ID 全部纳入候选集合再结合设备描述信息去噪。五、SetupAPI 日志还原首次连接时间戳注册表 USBSTOR 只能给出末次连接时间而首次连接时间来自驱动安装日志。API 参考文档中的核心解析模式import re with open(setupapi.dev.log, r, errorsignore) as f: content f.read() pattern rSection start (\d{4}/\d{2}/\d{2} \d{2}:\d{2}:\d{2}) for match in re.finditer(pattern, content): print(First install:, match.group(1))agent.py 给出了更强的组合正则以\s\[Device Install定位安装小节起始捕获Section start (时间戳)再通过(USBSTOR\\[^\s]|USB\\VID_\wPID_\w[^\s]*)提取设备 ID从而把首次安装时间与具体设备一一配对pattern r\s\[Device Install.*?\n.*?Section start (\d{4}/\d{2}/\d{2} \d{2}:\d{2}:\d{2}).*?\n(.*?) for match in re.finditer(pattern, content, re.DOTALL): timestamp, section match.group(1), match.group(2) dev_match re.search(r(USBSTOR\\[^\s]|USB\\VID_\wPID_\w[^\s]*), section) if dev_match: installs.append({first_install: timestamp, device_id: dev_match.group(1)})打开日志时务必使用errorsignore因为 setupapi.dev.log 是混合编码的文本直接按 UTF-8 读取可能抛异常。六、USB 取证注册表键详解从键名到证据含义API 参考文档最后给出了四组高频取证键下面逐一展开其结构与实战解读键数据/说明USBSTOR\DiskVen_XProd_YRev_Z\Serial设备类厂商/型号/固件版本与序列号FriendlyName值人类可读的设备名称如 Kingston DataTraveler 3.0DeviceContainersSOFTWARE设备元数据含时间戳EMDMgmtSOFTWAREReadyBoost 兼容设备的序列号与卷信息1. USBSTOR 键值解析VID/PID/序列号USBSTOR 下第一层子键按DiskVen_厂商Prod_型号Rev_版本组织。从 agent.py 可见其拆分逻辑parts device_class.name.split() vendor parts[1].replace(Ven_, ) if len(parts) 1 else Unknown product parts[2].replace(Prod_, ) if len(parts) 2 else Unknown revision parts[3].replace(Rev_, ) if len(parts) 3 else Unknown第二层子键名即设备序列号其键的header.last_modified就是设备末次连接时间。同一型号的多台设备正是靠序列号区分的注意部分厂商复用了序列号这是已知的取证局限。在 SKILL.md 的 Key Concepts 中VID/PID 被定义为唯一标识厂商与型号的编码序列号则是区分同型号不同个体的标识。2. FriendlyName 与设备参数遍历实例子键时FriendlyName值提供人类可读名称用于报告中呈现设备品牌与型号Device Parameters子键下的ClassGUID可用于确认设备类别。这两处取值在 agent.py 中均有try/except容错——并非所有设备实例都包含这些值。3. DeviceContainers 与 EMDMgmt两者均位于 SOFTWARE 配置单元DeviceContainers存放设备容器元数据包含比 USBSTOR 更细的时间戳信息可用于佐证设备的枚举/出现时间EMDMgmt记录 ReadyBoost 兼容设备含序列号与卷信息当调查目标涉及利用 USB 加速系统性能或异常介质时是补充证据源。七、从 API 到完整工作流五步取证闭环API 参考文档的各类 API 并非孤立使用SKILL.md 的 Workflow 给出了把它们串成闭环的五个步骤提取物证以只读方式挂载镜像mount -o ro,loop,offset$((2048*512))拷贝 SYSTEM、SOFTWARE、各用户的 NTUSER.DAT、setupapi.dev.log以及 System/DriverFrameworks/Partition 等.evtx日志解析 USBSTOR用上文 regipy 代码枚举设备清单输出usb_devices.json提取盘符与用户关联解析MountedDevices盘符 → 设备路径/磁盘签名与MountPoints2卷 GUID → 用户提取首次连接时间SetupAPI 日志正则 事件日志筛选Event ID 20001/20003/2003/2010/2100/2102/6416 等构建统一时间线与报告合并 USBSTOR 的末次连接、MountPoints2 的卷访问、SetupAPI 的首次安装等事件按时间戳排序导出 CSV。build_timeline与export_timeline_csv在 agent.py 中已有现成实现其中时间线条目统一为timestamp / source / device / serial / event / detail六字段结构跨证据源去重排序后即可交付。八、典型调查场景与输出范式SKILL.md 中给出了四个高频实战场景均直接建立在本文 API 能力之上离职员工数据外泄USBSTOR 全量设备清单 → 用 MountPoints2 确认用户访问 → 时间戳与文件访问日志、跳转列表、USN 日志交叉验证复制行为涉密系统出现未授权设备USBSTOR 与白名单比对按 VID/PID 识别未授权硬件追溯首次/末次连接并评估数据是否被转移USB 携带恶意软件将 USB 连接时间与 Prefetch/ShimCache 中的程序执行时间对齐检查可移动盘符上的可执行文件启动痕迹跨主机追踪特定 U 盘以设备序列号为线索在所有镜像的 USBSTOR 中检索同一序列号绘制设备在公司内部的移动路径。最终报告建议采用如下结构来自 SKILL.md 的 Output Format将设备清单 时间线 可疑发现分层呈现USB Device History Analysis: System: DESKTOP-ABC123 (Windows 10 Pro) Total USB Storage Devices: 12 Analysis Sources: USBSTOR, MountedDevices, MountPoints2, SetupAPI, Event Logs Device Inventory: 1. Kingston DataTraveler 3.0 (Serial: 0019E06B4521A2B0) First Connected: 2024-01-10 09:15:32 (SetupAPI) Last Connected: 2024-01-18 14:30:00 (USBSTOR) Drive Letter: E: User Access: suspect_user (MountPoints2) Suspicious Findings: - Kingston drive connected 15 times during investigation period - Unknown device (VID_1234PID_5678) connected 2024-01-17, no matching approved device Timeline: /cases/case-2024-001/analysis/usb_timeline.csv九、工具生态与扩展阅读SKILL.md 的 Tools Systems 一节还列出了可直接协同的现成工具USBDeviewNirSoft枚举系统连接过的所有 USB 设备、RegRipper的usbstor插件自动化提取、USB Forensic Tracker专项历史提取、Registry Explorer交互式分析、KAPE自动采集、Plaso/log2timeline统一时间线以及Velociraptor端点侧 USB 历史猎捕。这些工具可作为脚本化分析的交叉验证手段而本文所讲的 regipy/python-evtx API 更适合深度定制、批量处理和集成进自研取证流水线。如需继续深入可直接研读仓库中的 技能主文档完整工作流与场景、API 参考本文依据与 agent.py 实现可直接运行的命令行 Agent支持--system-hive、--ntuser、--setupapi-log、--output-dir等参数。本技能在 NIST CSF 中映射到 RS.AN-03、DE.AE-02、RS.MA-01在 MITRE ATTCK 中与 T1052.001通过外设的数据外泄、T1025可移动介质数据、T1091可移动介质复制、T1005本地数据收集、T1074.001本地暂存相关可作为事件响应与威胁猎捕场景的检测与取证支撑。【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATTCK, 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),仅供参考