Kerberos认证协议分析
Kerberos认证协议流程
如上图:
* 第一步:client和认证服务器(AS)通信完成认证过程,如果认证成功AS返回给client一个TGT(用来向TGS获取ticket);
* 第二步:client和票据生成服务器(TGS)通信验证是否要去访问目标站点的权限,如果有返回一个ticket给client;
* 第三步:client带着这个票据访问待访问站点;
协议弱点
* Kerberos引入的时间戳,在时间内依然可以被重放;
* Kerberos协议对口令进行对称加密,尤其是当AS返回给client的消息使用client产生的Kc来加密,使用单向hash函数对口令运算口得到加密秘钥;
* 秘钥存储困难;
* 时间同步困难;
协议数据包分析值ASREQ
* kerberos-as-req特征Hex字符串 =》 6a8199308196a1030201
* Pvno协议版本号:05(Hex)十进制就是版本5
* 分割点 a2030201
* MSG-TYPE(krb-as-req)0a(Hex) 十进制就是10
* 分割点a3633061(内容可变,长度不变)
* PA-DATA 预认证数据
* a47a3078(内容可变,长度不变)
* a0070305(内容可变,长度不变)
* padding数据 00(Hex)
* KDC-OPTIONS:
* a112(可变后面两个Hex数字)
* CNAME 3017(3010)
* a0030201(分割点)
* name-type:krb5-NT-PRINCIPAL 01 ,也可以是其他
* a1093070(分割点,内容可变,长度不变)
* 1b05(后面两个数可以变,长度不变)
* kerberos-string:十六机制数
* 4个十六进制数分割值
* realname 服务域
* 2个十六进制数分割值
* 服务器名
* 4个十六进制数分割值
* 终止时间
* 4个十六进制数分割值
* 更新终止时间
* 4个十六进制数分割值
* 随机数
* 4个十六进制数分割值
* 加密类型
* 主机地址
协议数据包分析值ASREP
* record-mark : 4个十六进制数
* 4个十六进制数分割
* 8个16进制数,最后四个是a0030201
* Pvno版本号 :1个16进制数(05)
* a1030201
* msg-type:kr5-as-rep:11 0b (1个16进制数)
* 4个十六进制数分割
* pa-data 域认证数据
- padata-type => 13(Hex) KRB5-PADATA-ETYPE-INFO2
- 4个十六进制分隔符
- 6个十六进制分割
- etype(一个Hex)
- 4个十六进制分隔符
- 域名+账户
* 四个Hex分隔符
* 域名
* 二个Hex分隔符
* CNAME
- 六个Hex数
- name-type(一个Hex)
- 四个Hex数
- name-string
+ 两个Hex
+ 账户名
* ticket
- 八个Hex
- tkt-vno版本 05(一个hex)
- 四个hex
- 域名
- 两个Hex
- sname
+ 6个hex
+ name-type (1个hex)
+ name-string
- 2个hex
- kerberosstring
- 2个hex
- kerberosstring
- 4个hex
- enc-part
+ 8个hex
+ etype 加密算法1个hex
+ 4个hex
+ kvno 1个hex
+ 8个hex
+ cipher(秘钥)
* 4个hex
* enc-part
- 8个hex
- etype 加密算法 1个hex
- 4个hex
- kvno版本 1个hex
- 8个hex
- cipher(秘钥)