Wireshark Kerberos解密报错"missing keytype 18"但keytab已包含对应密钥
问题原因
出现missing keytype 18报错但keytab中已存在对应密钥,通常有以下几类原因:
- Wireshark读取的keytab路径错误:首选项中配置的keytab路径并非你校验的目标文件,实际加载了不包含对应密钥的旧文件
- 主体标识不匹配:keytab中keytype 18(即aes256-cts-hmac-sha1-96)密钥绑定的SPN/UPN,和流量中Kerberos票据的目标主体不一致,Wireshark无法找到对应主体的密钥就会判定为缺失
- 密钥版本号(KVNO)不匹配:keytab中密钥的KVNO和流量票据携带的KVNO不一致,Wireshark会自动跳过版本不符的密钥
- Wireshark版本兼容问题:部分3.0之前的旧版本Wireshark对AES256类型keytab的解析存在bug,无法正确识别已存在的keytype 18密钥
- 读取权限不足:Wireshark进程没有keytab文件的读取权限,导致无法正常加载密钥内容
排查解决步骤
- 第一步:校验Wireshark Kerberos配置路径
打开Wireshark「编辑」→「首选项」→「协议」→「Kerberos」,确认keytab file填写的路径和你校验的keytab路径完全一致,不存在拼写错误、软链接指向旧文件的问题 - 第二步:核对keytab条目与流量的匹配性
执行klist -ket <keytab文件路径>命令输出keytab全量条目,确认目标SPN的keytype 18条目的KVNO,和流量中Kerberos Ticket字段的kvno值完全相同正确的keytype 18条目示例:
3 2024-05-20T12:34:56 HTTP/app.example.com@EXAMPLE.COM (aes256-cts-hmac-sha1-96) - 第三步:校验keytab读取权限
Linux环境下执行ls -l <keytab路径>确认Wireshark运行用户有读取权限,可执行chmod 644 <keytab路径>临时授权;Windows环境下在文件属性的安全面板中,给当前运行Wireshark的用户添加读取权限 - 第四步:升级Wireshark到最新稳定版
旧版本的Kerberos协议解析模块存在keytype识别缺陷,升级到最新稳定版可解决绝大多数兼容问题 - 第五步:手动校验密钥有效性
提取流量中Kerberos票据的密文部分,用keytab中的keytype 18密钥手动解密,确认密钥本身可正常解密对应流量,排除密钥生成错误的问题
内容的提问来源于stack exchange,提问作者Vishnu Gopalakrishnan
相关产品推荐
相关产品推荐

