240 likes | 665 Views
CH.05 커버로스 인증절차. 기존 시스템 로그인 과정의 문제점. 인증서버만 사용한 제 3 자 인증절차. 커버로스 v5 의 동작 절차. ( Authentication Service Exchange 과정 ) : TGT 와 K(A,tgs) 확보과정 ( Ticket-Granting Service Exchange 과정 ) : TGT 를 이용하여 세션 티켓과 세션키 확보과정 ( Client-Server Authentication Exchange 과정 ) : 상호인증과정
E N D
커버로스 v5의 동작 절차 (Authentication Service Exchange과정) : TGT와 K(A,tgs)확보과정 (Ticket-Granting Service Exchange 과정) : TGT를 이용하여 세션 티켓과 세션키 확보과정 (Client-Server Authentication Exchange과정) : 상호인증과정 1) AramiAS : (AP-REQ메시지) paData || kdc-options || Cname(=IDA) || Realm || Sname (=IDtgs)||Times || Nonce || HostAddr • paData = PreAuthentication Data = EKa [ A’s system time] • Times = key-expiration, authtime, starttime, endtime, renew-till 2) ASArami: (AP-REP메시지) CRealm || Cname(=IDA)|| TGT || EncASRepPart • TGT = tkt-vno || realm || Sname (=IDtgs )|| EncTicketPart • EncTicketPart = EKtgs[Flags || KA,tgs || Crealm || Cname || Times || Caddr || Authorization-data] • EncASRepPart = EKA [ KA,tgs || last-Req || Nonce || Times || SRealm || Sname || Caddr ]
Ticket-Granting Service Exchange 과정 (Ticket-Granting Service Exchange 과정) : TGT를 이용하여 세션 티켓과 세션키 확보과정 3) AramiTGS : (TGS-REQ메시지) paData || kdc-options || Cname(=IDA) || Realm || Sname (=IDB) ||Times || Nonce || HostAddr • paData = TGT || AP-Options || Authenticator(A,tgs) • Authenticator(A,tgs) = EK(A,tgs) [ vno || Crealm || Cname || Cksum || Ctime || Subkey || Seq-Number || aut-data, ] 4) TGS(A : (TGS-REP메시지) CRealm || Cname (=IDA) || SGT || EncTGSRepPart • SGT = tkt-vno || realm || Sname(=IDB)|| EncTicketPart • EncTicketPart = EKB[Flags || KA,B || Crealm || Cname || Times || Caddr || Authorization-data] • EncTGSRepPart = EK(A,tgs) [ KA,B || last-Req || Nonce || Times || SRealm || Sname || Caddr ]
Client-Server Authentication Exchange과정 (Client-Server Authentication Exchange과정) : 상호인증과정 5) AB : (AP-REQ메시지) SGT || AP-Options || AuthenticatorAB • AuthenticatorAB = EK(A,B)[vno || Crealm || Cname || Cksum || Ctime || Subkey || Seq-Number || aut-data,,, ] 6) BA: (AP-REP메시지) EncAPRepPart = EK(A,B) [Ctime ||subkey || Seq-Number ]
커버로스 동작 절차(1) Borami에 대한 SGT요청
커버로스 메시지 형식 AS-REQ(10) AS-REP(11) Pvno=5 Pvno=5 Message-type=10 Message-type=11 Response Body Pre-authentication Crealm= “WEST.COM” A’s system time (encrypted with Ka) Cname=“Arami” Request Body Ticket Granting Ticket KDC-options Cname=“Arami” tkt-vno=5 Realm=“West” Realm=“WEST.COM” Sname=“krbtgt”, ”West” Sname=“krbtgt”, “West.Com” Till=“2004-09..” Enc-part with Ktgs Rtime=“2004-09..” Nonce K(a, tgs) EncType={rc4-hmac, des-cbc-md5…} Cname Caddr Host Address = NetBios Address (:Arami ..”) Times CRealm EncASRepPart With Eka K(a, tgs) AP-REQ(14) IDtgs Times Pvno=5 Nonce Message-type=14 Realm AP-options Session Granting Ticket AP-REP(15) Pvno=5 Authenticator Encrypted with K(a,b) Message-type=15 vno EncAPRepPart With K(a,b) Crealm Cname Ctime Cksum Times subkey subkey Seq-number Seq-number auth-data
윈도우 커버로스의 동작 절차 BoramiCom AramiCom
AS-REQ메시지의 예 6a 82 01 2c ; [Application 10] 메시지로서, 데이터 부분의 길이는 0x12c바이트이다. 30 82 01 28 ; Sequence형식으로서, 데이터 부분의 길이는 0x128 바이트이다. a1 03 ; Context-specific [1] 형식이므로, pvno[1], 즉, version항목이고, 길이는 3이다. 02 01 05 ;정수형으로서 05이다. a2 03 ; Context-specific [2] tag를 가지므로, msg-type[2], 즉, 메시지 형식 항목, 길이는 3. 02 01 0a ; 정수형으로서, 0a = 10, 즉 KRB_AS_REQ를 지시한다. a3 5f ; padata[3] : 길이는 5f, 30 5d … ; …
TGS_REQ “BoramiCom”
TGS_REP “BORAMICOM$”
실험 • 도메인구성과 액티브 디렉터리 확인 • 사용자 등록(Arami, Borami) • Arami, Borami의 도메인 가입 설정 • Borami • 커버로스 인증기능을 지원하는 Web Server설정 • 커버로스 동작 절차 분석 • Arami의 로그온시 AS_REQ/AS_REP패킷 수집 및 분석 • Borami웹 서버에 접속시 TGS_REQ/TGS_REP/AP_REQ/AP_REP패킷 분석 • 도메인경계 인증실험 • Child Domain설정
Note • 사용자이름과 PC이름은 다르게 설정해야 한다. • Arami = 사용자이름 • AramiCom = PC이름