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(秘鑰)
協議數據包分析值TGSREQ