WORKGROUP環境だとKerberos認証が使えない??

スポンサーリンク

Windows における認証には 2 つの代表的な認証方式が存在します。それぞれ

・NTLM 認証

・Kerberos 認証

ActiveDirectory のドメイン環境を構築すると、ログオンやファイルサーバのアクセスに対する認証は基本的に Kerberos 認証が使用されます。

Kerberos 認証の大きな特徴はドメイン環境においてSSO(シングルサインオン)を提供することです。

そのため、ワークグループ環境では、Kerberos認証が使えないというようなイメージをどうしても無意識的に作ってしまいがちです。

かくいう私もWORKGROUP環境ではKerberos認証が使えないと思っておりました。

しかし、WORKGROUP環境でもKerberos認証は使用することができます!

実際にパケットをキャプチャして見てみましょう。

下記の図のアクセスを行います。

net use コマンドを使用した際のパケットを見てみます。

またユーザーの指定の仕方でNTLM認証かKerberos認証か変わってきますので、ユーザーの指定の仕方にも着目していただけたらと思います。

またパケットを貼り付けていますが、見にくいと思いますので、メモ帳などに貼り付けるなどしていただけたらと思います。

検証環境がある場合には、実際にパケットを採取してみるのが一番だと思います。

■実行コマンド①

net use \\LabServer1.contoso.com\share /User:administrator P@ssw0rd

3	192.168.2.1	labserver1.contoso.com	DNS	DNS:QueryId = 0x8998, QUERY (Standard query), Query  for labserver1.contoso.com of type Host Addr on class Internet
4	labserver1.contoso.com	192.168.2.1	DNS	DNS:QueryId = 0x8998, QUERY (Standard query), Response - Success, 192.168.1.1
5	192.168.2.1	labserver1.contoso.com	TCP	TCP:Flags=CE....S., SrcPort=49183, DstPort=Microsoft-DS(445), PayloadLen=0, Seq=3658226447, Ack=0, Win=8192 ( Negotiating scale factor 0x8 ) = 8192
6	labserver1.contoso.com	192.168.2.1	TCP	TCP:Flags=.E.A..S., SrcPort=Microsoft-DS(445), DstPort=49183, PayloadLen=0, Seq=3310703929, Ack=3658226448, Win=8192 ( Negotiated scale factor 0x8 ) = 2097152
7	192.168.2.1	labserver1.contoso.com	TCP	TCP:Flags=...A...., SrcPort=49183, DstPort=Microsoft-DS(445), PayloadLen=0, Seq=3658226448, Ack=3310703930, Win=4106 (scale factor 0x8) = 1051136
8	192.168.2.1	labserver1.contoso.com	SMB	SMB:C; Negotiate, Dialect = PC NETWORK PROGRAM 1.0, LANMAN1.0, Windows for Workgroups 3.1a, LM1.2X002, LANMAN2.1, NT LM 0.12, SMB 2.002, SMB 2.???
9	labserver1.contoso.com	192.168.2.1	SMB2	SMB2:R   NEGOTIATE (0x0), GUID={0AFB6FC7-A61F-BB94-4D79-D2108D5C036B}
10	192.168.2.1	labserver1.contoso.com	SMB2	SMB2:C   NEGOTIATE (0x0), GUID={25C8005D-1500-B980-11E4-F1FF367E01C7}
11	labserver1.contoso.com	192.168.2.1	SMB2	SMB2:R   NEGOTIATE (0x0), GUID={0AFB6FC7-A61F-BB94-4D79-D2108D5C036B}
12	192.168.2.1	labserver1.contoso.com	SMB2	SMB2:C   SESSION SETUP (0x1)
13	labserver1.contoso.com	192.168.2.1	SMB2	SMB2:R  - NT Status: System - ERROR, Code = (22) STATUS_MORE_PROCESSING_REQUIRED  SESSION SETUP (0x1), SessionFlags=0x0
14	192.168.2.1	labserver1.contoso.com	SMB2	SMB2:C   SESSION SETUP (0x1)
15	labserver1.contoso.com	192.168.2.1	SMB2	SMB2:R   SESSION SETUP (0x1), SessionFlags=0x0

3.4はLabServer1.contoso.comの名前解決

5.6.7はTCPのスリーハンドシェイク

8.9.10.11はSMB通信のNegotiateで使用するSMBバージョンの決定などを行っています。

12.13.14.15はSMB通信のSessionを確立するシーケンスとなります。

ここではNTLM認証が使用されています。14番のパケットを細かく見ていくとNTLMのトークンを使用していることがわかります。(ここでは割愛します)

■ 実行コマンド②

net use \\LabServer1.contoso.com\share /User:contoso.com\administrator P@ssw0rd

8	192.168.2.1	labserver1.contoso.com	TCP	TCP:Flags=CE....S., SrcPort=49159, DstPort=Microsoft-DS(445), PayloadLen=0, Seq=936072081, Ack=0, Win=8192 ( Negotiating scale factor 0x8 ) = 8192
9	labserver1.contoso.com	192.168.2.1	TCP	TCP:Flags=.E.A..S., SrcPort=Microsoft-DS(445), DstPort=49159, PayloadLen=0, Seq=1090893484, Ack=936072082, Win=8192 ( Negotiated scale factor 0x8 ) = 2097152
10	192.168.2.1	labserver1.contoso.com	TCP	TCP:Flags=...A...., SrcPort=49159, DstPort=Microsoft-DS(445), PayloadLen=0, Seq=936072082, Ack=1090893485, Win=4106 (scale factor 0x8) = 1051136
11	192.168.2.1	labserver1.contoso.com	SMB	SMB:C; Negotiate, Dialect = PC NETWORK PROGRAM 1.0, LANMAN1.0, Windows for Workgroups 3.1a, LM1.2X002, LANMAN2.1, NT LM 0.12, SMB 2.002, SMB 2.???
12	labserver1.contoso.com	192.168.2.1	SMB2	SMB2:R   NEGOTIATE (0x0), GUID={EB6B2615-D913-47A6-48B2-BE8DAA9A06F6}
13	192.168.2.1	labserver1.contoso.com	SMB2	SMB2:C   NEGOTIATE (0x0), GUID={25C8005D-1500-B980-11E4-F1FF367E012E}
14	labserver1.contoso.com	192.168.2.1	SMB2	SMB2:R   NEGOTIATE (0x0), GUID={EB6B2615-D913-47A6-48B2-BE8DAA9A06F6}
15	192.168.2.1	labserver1.contoso.com	DNS	DNS:QueryId = 0x4E25, QUERY (Standard query), Query  for _kerberos._TCP.dc._msdcs.Contoso.com of type SRV on class Internet
16	labserver1.contoso.com	192.168.2.1	DNS	DNS:QueryId = 0x4E25, QUERY (Standard query), Response - Success, 192.168.1.1
17	192.168.2.1	labserver1.contoso.com	LDAPMessage	LDAPMessage:Search Request, MessageID: 1
18	labserver1.contoso.com	192.168.2.1	NetLogon	NetLogon:LogonSAMLogonResponseEX (SAM Response to SAM logon request): 23 (0x17)
19	192.168.2.1	labserver1.contoso.com	TCP	TCP:Flags=...A...., SrcPort=49159, DstPort=Microsoft-DS(445), PayloadLen=0, Seq=936072353, Ack=1090893989, Win=4104 (scale factor 0x8) = 1050624
20	192.168.2.1	labserver1.contoso.com	TCP	TCP:Flags=CE....S., SrcPort=49160, DstPort=Kerberos(88), PayloadLen=0, Seq=2250718752, Ack=0, Win=8192 ( Negotiating scale factor 0x8 ) = 8192
21	labserver1.contoso.com	192.168.2.1	TCP	TCP:Flags=.E.A..S., SrcPort=Kerberos(88), DstPort=49160, PayloadLen=0, Seq=3231919367, Ack=2250718753, Win=8192 ( Negotiated scale factor 0x8 ) = 2097152
22	192.168.2.1	labserver1.contoso.com	TCP	TCP:Flags=...A...., SrcPort=49160, DstPort=Kerberos(88), PayloadLen=0, Seq=2250718753, Ack=3231919368, Win=4106 (scale factor 0x8) = 1051136
23	192.168.2.1	labserver1.contoso.com	KerberosV5	KerberosV5:AS Request Cname: administrator Realm: Contoso.com Sname: krbtgt/Contoso.com
24	192.168.2.1	labserver1.contoso.com	TCP	TCP:[ReTransmit #23]Flags=...AP..., SrcPort=49160, DstPort=Kerberos(88), PayloadLen=235, Seq=2250718753 - 2250718988, Ack=3231919368, Win=4106 (scale factor 0x8) = 1051136
25	labserver1.contoso.com	192.168.2.1	KerberosV5	KerberosV5:KRB_ERROR  - KDC_ERR_PREAUTH_REQUIRED (25)
26	192.168.2.1	labserver1.contoso.com	TCP	TCP:Flags=...A...F, SrcPort=49160, DstPort=Kerberos(88), PayloadLen=0, Seq=2250718988, Ack=3231919527, Win=4105 (scale factor 0x8) = 1050880
27	192.168.2.1	labserver1.contoso.com	TCP	TCP:Flags=CE....S., SrcPort=49161, DstPort=Kerberos(88), PayloadLen=0, Seq=1750242782, Ack=0, Win=8192 ( Negotiating scale factor 0x8 ) = 8192
28	labserver1.contoso.com	192.168.2.1	TCP	TCP:Flags=...A...., SrcPort=Kerberos(88), DstPort=49160, PayloadLen=0, Seq=3231919527, Ack=2250718988, Win=4106 (scale factor 0x8) = 1051136
29	labserver1.contoso.com	192.168.2.1	TCP	TCP:Flags=.E.A..S., SrcPort=Kerberos(88), DstPort=49161, PayloadLen=0, Seq=1834935086, Ack=1750242783, Win=8192 ( Negotiated scale factor 0x8 ) = 2097152
30	labserver1.contoso.com	192.168.2.1	TCP	TCP:Flags=...A...., SrcPort=Kerberos(88), DstPort=49160, PayloadLen=0, Seq=3231919527, Ack=2250718989, Win=4106 (scale factor 0x8) = 1051136
31	labserver1.contoso.com	192.168.2.1	TCP	TCP:Flags=...A.R.., SrcPort=Kerberos(88), DstPort=49160, PayloadLen=0, Seq=3231919527, Ack=2250718989, Win=0 (scale factor 0x8) = 0
32	192.168.2.1	labserver1.contoso.com	TCP	TCP:Flags=...A...., SrcPort=49161, DstPort=Kerberos(88), PayloadLen=0, Seq=1750242783, Ack=1834935087, Win=4106 (scale factor 0x8) = 1051136
33	192.168.2.1	labserver1.contoso.com	KerberosV5	KerberosV5:AS Request Cname: administrator Realm: Contoso.com Sname: krbtgt/Contoso.com
34	labserver1.contoso.com	192.168.2.1	KerberosV5	KerberosV5:AS Response Ticket[Realm: CONTOSO.COM, Sname: krbtgt/CONTOSO.COM]
35	labserver1.contoso.com	192.168.2.1	TCP	TCP:[Continuation to #34]Flags=...AP..., SrcPort=Kerberos(88), DstPort=49161, PayloadLen=71, Seq=1834936547 - 1834936618, Ack=1750243094, Win=4106 (scale factor 0x8) = 1051136
36	192.168.2.1	labserver1.contoso.com	TCP	TCP:Flags=...A...., SrcPort=49161, DstPort=Kerberos(88), PayloadLen=0, Seq=1750243094, Ack=1834936618, Win=4106 (scale factor 0x8) = 1051136
37	192.168.2.1	labserver1.contoso.com	TCP	TCP:Flags=...A...F, SrcPort=49161, DstPort=Kerberos(88), PayloadLen=0, Seq=1750243094, Ack=1834936618, Win=4106 (scale factor 0x8) = 1051136
38	192.168.2.1	labserver1.contoso.com	TCP	TCP:Flags=CE....S., SrcPort=49162, DstPort=Kerberos(88), PayloadLen=0, Seq=492728649, Ack=0, Win=8192 ( Negotiating scale factor 0x8 ) = 8192
39	labserver1.contoso.com	192.168.2.1	TCP	TCP:Flags=.E.A..S., SrcPort=Kerberos(88), DstPort=49162, PayloadLen=0, Seq=2185727656, Ack=492728650, Win=8192 ( Negotiated scale factor 0x8 ) = 2097152
40	labserver1.contoso.com	192.168.2.1	TCP	TCP:Flags=...A...., SrcPort=Kerberos(88), DstPort=49161, PayloadLen=0, Seq=1834936618, Ack=1750243095, Win=4106 (scale factor 0x8) = 1051136
41	labserver1.contoso.com	192.168.2.1	TCP	TCP:Flags=...A.R.., SrcPort=Kerberos(88), DstPort=49161, PayloadLen=0, Seq=1834936618, Ack=1750243095, Win=0 (scale factor 0x8) = 0
42	192.168.2.1	labserver1.contoso.com	TCP	TCP:Flags=...A...., SrcPort=49162, DstPort=Kerberos(88), PayloadLen=0, Seq=492728650, Ack=2185727657, Win=4106 (scale factor 0x8) = 1051136
43	192.168.2.1	labserver1.contoso.com	KerberosV5	KerberosV5:TGS Request Realm: CONTOSO.COM Sname: cifs/labserver1.contoso.com
44	labserver1.contoso.com	192.168.2.1	TCP	TCP:Flags=...A...., SrcPort=Kerberos(88), DstPort=49162, PayloadLen=0, Seq=2185727657, Ack=492730267, Win=4106 (scale factor 0x8) = 1051136
45	labserver1.contoso.com	192.168.2.1	KerberosV5	KerberosV5:TGS Response Cname: Administrator
46	labserver1.contoso.com	192.168.2.1	TCP	TCP:[Continuation to #45]Flags=...AP..., SrcPort=Kerberos(88), DstPort=49162, PayloadLen=187, Seq=2185729117 - 2185729304, Ack=492730267, Win=4106 (scale factor 0x8) = 1051136
47	192.168.2.1	labserver1.contoso.com	TCP	TCP:Flags=...A...., SrcPort=49162, DstPort=Kerberos(88), PayloadLen=0, Seq=492730267, Ack=2185729304, Win=4106 (scale factor 0x8) = 1051136
48	192.168.2.1	labserver1.contoso.com	TCP	TCP:Flags=...A...F, SrcPort=49162, DstPort=Kerberos(88), PayloadLen=0, Seq=492730267, Ack=2185729304, Win=4106 (scale factor 0x8) = 1051136
49	labserver1.contoso.com	192.168.2.1	TCP	TCP:Flags=...A...., SrcPort=Kerberos(88), DstPort=49162, PayloadLen=0, Seq=2185729304, Ack=492730268, Win=4106 (scale factor 0x8) = 1051136
50	labserver1.contoso.com	192.168.2.1	TCP	TCP:Flags=...A.R.., SrcPort=Kerberos(88), DstPort=49162, PayloadLen=0, Seq=2185729304, Ack=492730268, Win=0 (scale factor 0x8) = 0
51	192.168.2.1	labserver1.contoso.com	TCP	TCP:Flags=CE....S., SrcPort=49163, DstPort=Kerberos(88), PayloadLen=0, Seq=602902016, Ack=0, Win=8192 ( Negotiating scale factor 0x8 ) = 8192
52	labserver1.contoso.com	192.168.2.1	TCP	TCP:Flags=.E.A..S., SrcPort=Kerberos(88), DstPort=49163, PayloadLen=0, Seq=657288898, Ack=602902017, Win=8192 ( Negotiated scale factor 0x8 ) = 2097152
53	192.168.2.1	labserver1.contoso.com	TCP	TCP:Flags=...A...., SrcPort=49163, DstPort=Kerberos(88), PayloadLen=0, Seq=602902017, Ack=657288899, Win=4106 (scale factor 0x8) = 1051136
54	192.168.2.1	labserver1.contoso.com	KerberosV5	KerberosV5:TGS Request Realm: CONTOSO.COM Sname: krbtgt/CONTOSO.COM
55	labserver1.contoso.com	192.168.2.1	KerberosV5	KerberosV5:TGS Response Cname: Administrator
56	labserver1.contoso.com	192.168.2.1	TCP	TCP:[Continuation to #55]Flags=...AP..., SrcPort=Kerberos(88), DstPort=49163, PayloadLen=18, Seq=657290359 - 657290377, Ack=602903466, Win=4106 (scale factor 0x8) = 1051136
57	192.168.2.1	labserver1.contoso.com	TCP	TCP:Flags=...A...., SrcPort=49163, DstPort=Kerberos(88), PayloadLen=0, Seq=602903466, Ack=657290377, Win=4106 (scale factor 0x8) = 1051136
58	192.168.2.1	labserver1.contoso.com	TCP	TCP:Flags=...A...F, SrcPort=49163, DstPort=Kerberos(88), PayloadLen=0, Seq=602903466, Ack=657290377, Win=4106 (scale factor 0x8) = 1051136
59	labserver1.contoso.com	192.168.2.1	TCP	TCP:Flags=...A...., SrcPort=Kerberos(88), DstPort=49163, PayloadLen=0, Seq=657290377, Ack=602903467, Win=4106 (scale factor 0x8) = 1051136
60	labserver1.contoso.com	192.168.2.1	TCP	TCP:Flags=...A.R.., SrcPort=Kerberos(88), DstPort=49163, PayloadLen=0, Seq=657290377, Ack=602903467, Win=0 (scale factor 0x8) = 0
61	192.168.2.1	labserver1.contoso.com	SMB2	SMB2:C   SESSION SETUP (0x1)
62	labserver1.contoso.com	192.168.2.1	TCP	TCP:Flags=...A...., SrcPort=Microsoft-DS(445), DstPort=49159, PayloadLen=0, Seq=1090893989, Ack=936075497, Win=4106 (scale factor 0x8) = 1051136
63	labserver1.contoso.com	192.168.2.1	SMB2	SMB2:R   SESSION SETUP (0x1), SessionFlags=0x0

 

8.9.10はTCPのスリーハンドシェイク
11.12.13.14はSMB通信のNegotiateで使用するSMBバージョンの決定などを行っています。
15.16は _kerberos._TCP.dc._msdcs.Contoso.com の名前解決を行っています。KDC(Kerberos Distribution Center)の場所の探索ですね。
17.18は正直どのような意味を持っているのかわかりませんが、LDAPで通信してますね。DCとファイルサーバの役割を別々にしてみてどうなるかを見てみる必要があるかもしれません。今回は流します。
19はNegotiateのAckでしょうか。。ここもどのような意味を持っているかわかりません。

が今は流します。
20.21.22で再びTCPのスリーハンドシェイクを行っていますね。ポート番号は88番なのでKerberos認証が始まるんだということがわかります。

そしてポート番号に着目すれば 60 までKerberos認証の処理が行われていることがわかります。(Kerberos認証の詳しいシーケンスはまた今度記事にしようかなと思います。)

61.62でセッションを確立しようと、Kerberos認証で取得したサービスチケットをファイルサーバに送信しています。

63でそのサービスチケットが正しいことを確認して、セッションを確立しています。

→結果WORKGROUP環境でもKerberos認証が行われていますね。

ちなみにドメイン参加の際のパケットを見てみると、ここでもKerberos認証が行われていることがわかります。

先入観だけで物事を考えてるのはいけませんねという教訓になりました。

Comments

タイトルとURLをコピーしました