|
View:
New views
20 Messages
—
Rating Filter:
Alert me
|
| < Prev | 1 - 2 | Next > |
|
|
raw NTLMSSP tokens in GSS-API/SPNEGO?I am requesting correction assitance regarding NTLM authentication
using SPNEGO: When NTLM authentication is negotiated over SPNEGO, Windows clients do not properly wrap the initial NTLM token inside a GSS-API InitialContextToken (described in RFC 2743 section 3.1). RFC 4178 is somewhat vague on this matter, but a close reading reveals that the first mechToken/responseToken sent by the initiator must be wrapped in a GSS-API InitialContextToken. In particular, RFC 4178 section 3.2 item (c) states: If the initiator's preferred mechanism is accepted, and an optimistic mechanism token was included, this mechanism token MUST be passed to the selected mechanism by invoking GSS_Accept_sec_context(). If a response mechanism token is returned, it MUST be included in the response negotiation token. Otherwise, the target will not generate a response mechanism token in the first reply. Given that the initial inner token is passed to GSS_Accept_sec_context(), it must be a GSS-API InitialContextToken. Windows clients follow this behavior when Kerberos is negotiated, but not when NTLM is negotiated. When NTLM is in use, they send a raw NTLM message, not contained in an InitialContextToken. I can provide SMB traces of this behavior if desired. I haven't been able to find mention of this Microsoft-specific behavior in MS-SPNG or in MS-NLMP. The one thing I did find that could potentially be considered to explain this behavior is in item <8> in Appendix A of MS-SPNG: For backward compatibility and historical reasons, a Windows implementation of SPNEGO has the following behavior: it accepts raw Kerberos messages that are based on [RFC4121] and [RFC4120], and it accepts raw NTLM messages that are not embedded in [RFC4178] SPNEGO messages. This behavior is known as the universal receiver behavior. I find this passage slightly strange--for Kerberos, this seems to be standard behavior, and not a Windows extension. Any conforming GSS-API implementation that supports both SPNEGO and Kerberos should accept InitialContextTokens containing either SPNEGO or Kerberos tokens. Therefore, the Windows behavior could perhaps best be described not by the statement above, but by "the Windows GSS-API implementation accepts as the first token a raw NTLM message that is not embedded in an [RFC2743] InitialContextToken." This wording could also be considered to explain the fact that Windows servers accept the a raw NTLM token in the SPNEGO mechToken. Did I miss something in the documentation, or could it be updated to describe this deviation from the standard? -- Adam Simpkins simpkins@... _______________________________________________ cifs-protocol mailing list cifs-protocol@... https://lists.samba.org/mailman/listinfo/cifs-protocol |
|
|
RE: raw NTLMSSP tokens in GSS-API/SPNEGO?Good afternoon Mr. Simpkins. First, I apologize for my late response.
I have created a new case for your questions concerning the [MS-NLSP] document. Myself, or one of my team members will taking ownership of the case and contact you soon. Thank you for your forbearance of my mistake in not responding sooner. Regards, Bill Wesse MCSE / Escalation Engineer, US-CSS DSC PROTOCOL TEAM 8055 Microsoft Way Charlotte, NC 28273 TEL: 980-776-8200 CELL: 704-661-5438 FAX: 704-665-9606 We're Hiring http://members.microsoft.com/careers/search/details.aspx?JobID=A976CE32-B0B9-41E3-AF57-05A82B88383E&start=1&interval=10&SortCol=DatePosted -----Original Message----- From: Adam Simpkins [mailto:simpkins@...] Sent: Friday, August 01, 2008 8:12 PM To: Interoperability Documentation Help Cc: cifs-protocol@... Subject: raw NTLMSSP tokens in GSS-API/SPNEGO? I am requesting correction assitance regarding NTLM authentication using SPNEGO: When NTLM authentication is negotiated over SPNEGO, Windows clients do not properly wrap the initial NTLM token inside a GSS-API InitialContextToken (described in RFC 2743 section 3.1). RFC 4178 is somewhat vague on this matter, but a close reading reveals that the first mechToken/responseToken sent by the initiator must be wrapped in a GSS-API InitialContextToken. In particular, RFC 4178 section 3.2 item (c) states: If the initiator's preferred mechanism is accepted, and an optimistic mechanism token was included, this mechanism token MUST be passed to the selected mechanism by invoking GSS_Accept_sec_context(). If a response mechanism token is returned, it MUST be included in the response negotiation token. Otherwise, the target will not generate a response mechanism token in the first reply. Given that the initial inner token is passed to GSS_Accept_sec_context(), it must be a GSS-API InitialContextToken. Windows clients follow this behavior when Kerberos is negotiated, but not when NTLM is negotiated. When NTLM is in use, they send a raw NTLM message, not contained in an InitialContextToken. I can provide SMB traces of this behavior if desired. I haven't been able to find mention of this Microsoft-specific behavior in MS-SPNG or in MS-NLMP. The one thing I did find that could potentially be considered to explain this behavior is in item <8> in Appendix A of MS-SPNG: For backward compatibility and historical reasons, a Windows implementation of SPNEGO has the following behavior: it accepts raw Kerberos messages that are based on [RFC4121] and [RFC4120], and it accepts raw NTLM messages that are not embedded in [RFC4178] SPNEGO messages. This behavior is known as the universal receiver behavior. I find this passage slightly strange--for Kerberos, this seems to be standard behavior, and not a Windows extension. Any conforming GSS-API implementation that supports both SPNEGO and Kerberos should accept InitialContextTokens containing either SPNEGO or Kerberos tokens. Therefore, the Windows behavior could perhaps best be described not by the statement above, but by "the Windows GSS-API implementation accepts as the first token a raw NTLM message that is not embedded in an [RFC2743] InitialContextToken." This wording could also be considered to explain the fact that Windows servers accept the a raw NTLM token in the SPNEGO mechToken. Did I miss something in the documentation, or could it be updated to describe this deviation from the standard? -- Adam Simpkins simpkins@... _______________________________________________ cifs-protocol mailing list cifs-protocol@... https://lists.samba.org/mailman/listinfo/cifs-protocol |
|
|
Status: raw NTLMSSP tokens in GSS-API/SPNEGO? SRX080803600053Good morning Mr. Simpkins. Bill Wesse here from the Protocols Documentation team.
I have taken ownership of the new case (SRX080803600053) I created for your question. I will begin my investigation this morning and update you on my progress before the end of the day. Regards, Bill Wesse MCSE / Escalation Engineer, US-CSS DSC PROTOCOL TEAM 8055 Microsoft Way Charlotte, NC 28273 TEL: 980-776-8200 CELL: 704-661-5438 FAX: 704-665-9606 We're Hiring http://members.microsoft.com/careers/search/details.aspx?JobID=A976CE32-B0B9-41E3-AF57-05A82B88383E&start=1&interval=10&SortCol=DatePosted -----Original Message----- From: Bill Wesse Sent: Sunday, August 03, 2008 2:12 PM To: 'Adam Simpkins'; Interoperability Documentation Help Cc: cifs-protocol@... Subject: RE: raw NTLMSSP tokens in GSS-API/SPNEGO? Good afternoon Mr. Simpkins. First, I apologize for my late response. I have created a new case for your questions concerning the [MS-NLSP] document. Myself, or one of my team members will taking ownership of the case and contact you soon. Thank you for your forbearance of my mistake in not responding sooner. Regards, Bill Wesse MCSE / Escalation Engineer, US-CSS DSC PROTOCOL TEAM 8055 Microsoft Way Charlotte, NC 28273 TEL: 980-776-8200 CELL: 704-661-5438 FAX: 704-665-9606 We're Hiring http://members.microsoft.com/careers/search/details.aspx?JobID=A976CE32-B0B9-41E3-AF57-05A82B88383E&start=1&interval=10&SortCol=DatePosted -----Original Message----- From: Adam Simpkins [mailto:simpkins@...] Sent: Friday, August 01, 2008 8:12 PM To: Interoperability Documentation Help Cc: cifs-protocol@... Subject: raw NTLMSSP tokens in GSS-API/SPNEGO? I am requesting correction assitance regarding NTLM authentication using SPNEGO: When NTLM authentication is negotiated over SPNEGO, Windows clients do not properly wrap the initial NTLM token inside a GSS-API InitialContextToken (described in RFC 2743 section 3.1). RFC 4178 is somewhat vague on this matter, but a close reading reveals that the first mechToken/responseToken sent by the initiator must be wrapped in a GSS-API InitialContextToken. In particular, RFC 4178 section 3.2 item (c) states: If the initiator's preferred mechanism is accepted, and an optimistic mechanism token was included, this mechanism token MUST be passed to the selected mechanism by invoking GSS_Accept_sec_context(). If a response mechanism token is returned, it MUST be included in the response negotiation token. Otherwise, the target will not generate a response mechanism token in the first reply. Given that the initial inner token is passed to GSS_Accept_sec_context(), it must be a GSS-API InitialContextToken. Windows clients follow this behavior when Kerberos is negotiated, but not when NTLM is negotiated. When NTLM is in use, they send a raw NTLM message, not contained in an InitialContextToken. I can provide SMB traces of this behavior if desired. I haven't been able to find mention of this Microsoft-specific behavior in MS-SPNG or in MS-NLMP. The one thing I did find that could potentially be considered to explain this behavior is in item <8> in Appendix A of MS-SPNG: For backward compatibility and historical reasons, a Windows implementation of SPNEGO has the following behavior: it accepts raw Kerberos messages that are based on [RFC4121] and [RFC4120], and it accepts raw NTLM messages that are not embedded in [RFC4178] SPNEGO messages. This behavior is known as the universal receiver behavior. I find this passage slightly strange--for Kerberos, this seems to be standard behavior, and not a Windows extension. Any conforming GSS-API implementation that supports both SPNEGO and Kerberos should accept InitialContextTokens containing either SPNEGO or Kerberos tokens. Therefore, the Windows behavior could perhaps best be described not by the statement above, but by "the Windows GSS-API implementation accepts as the first token a raw NTLM message that is not embedded in an [RFC2743] InitialContextToken." This wording could also be considered to explain the fact that Windows servers accept the a raw NTLM token in the SPNEGO mechToken. Did I miss something in the documentation, or could it be updated to describe this deviation from the standard? -- Adam Simpkins simpkins@... _______________________________________________ cifs-protocol mailing list cifs-protocol@... https://lists.samba.org/mailman/listinfo/cifs-protocol |
|
|
RE: Status: raw NTLMSSP tokens in GSS-API/SPNEGO? SRX080803600053Good morning once again. You noted in your question that you can provide a network trace of the NTLM behavior you reported. I would deeply appreciate it if you would send one to me. Could you also note the OS versions of the client and server (just in case, even though the NtlmsspAuthenticaeMessage may contain a Version structure.
I do have some archival traces of NTLM authentication using the SMB SecurityBlob; however, these do not use GSSAPI. Hence my request; I want to make absolutely sure I analyze with respect to the exact scenario you are seeing. Thanks in advance! Regards, Bill Wesse MCSE / Escalation Engineer, US-CSS DSC PROTOCOL TEAM 8055 Microsoft Way Charlotte, NC 28273 TEL: 980-776-8200 CELL: 704-661-5438 FAX: 704-665-9606 We're Hiring http://members.microsoft.com/careers/search/details.aspx?JobID=A976CE32-B0B9-41E3-AF57-05A82B88383E&start=1&interval=10&SortCol=DatePosted -----Original Message----- From: Bill Wesse Sent: Monday, August 04, 2008 7:01 AM To: 'Adam Simpkins' Cc: 'cifs-protocol@...' Subject: Status: raw NTLMSSP tokens in GSS-API/SPNEGO? SRX080803600053 Good morning Mr. Simpkins. Bill Wesse here from the Protocols Documentation team. I have taken ownership of the new case (SRX080803600053) I created for your question. I will begin my investigation this morning and update you on my progress before the end of the day. Regards, Bill Wesse MCSE / Escalation Engineer, US-CSS DSC PROTOCOL TEAM 8055 Microsoft Way Charlotte, NC 28273 TEL: 980-776-8200 CELL: 704-661-5438 FAX: 704-665-9606 We're Hiring http://members.microsoft.com/careers/search/details.aspx?JobID=A976CE32-B0B9-41E3-AF57-05A82B88383E&start=1&interval=10&SortCol=DatePosted -----Original Message----- From: Bill Wesse Sent: Sunday, August 03, 2008 2:12 PM To: 'Adam Simpkins'; Interoperability Documentation Help Cc: cifs-protocol@... Subject: RE: raw NTLMSSP tokens in GSS-API/SPNEGO? Good afternoon Mr. Simpkins. First, I apologize for my late response. I have created a new case for your questions concerning the [MS-NLSP] document. Myself, or one of my team members will taking ownership of the case and contact you soon. Thank you for your forbearance of my mistake in not responding sooner. Regards, Bill Wesse MCSE / Escalation Engineer, US-CSS DSC PROTOCOL TEAM 8055 Microsoft Way Charlotte, NC 28273 TEL: 980-776-8200 CELL: 704-661-5438 FAX: 704-665-9606 We're Hiring http://members.microsoft.com/careers/search/details.aspx?JobID=A976CE32-B0B9-41E3-AF57-05A82B88383E&start=1&interval=10&SortCol=DatePosted -----Original Message----- From: Adam Simpkins [mailto:simpkins@...] Sent: Friday, August 01, 2008 8:12 PM To: Interoperability Documentation Help Cc: cifs-protocol@... Subject: raw NTLMSSP tokens in GSS-API/SPNEGO? I am requesting correction assitance regarding NTLM authentication using SPNEGO: When NTLM authentication is negotiated over SPNEGO, Windows clients do not properly wrap the initial NTLM token inside a GSS-API InitialContextToken (described in RFC 2743 section 3.1). RFC 4178 is somewhat vague on this matter, but a close reading reveals that the first mechToken/responseToken sent by the initiator must be wrapped in a GSS-API InitialContextToken. In particular, RFC 4178 section 3.2 item (c) states: If the initiator's preferred mechanism is accepted, and an optimistic mechanism token was included, this mechanism token MUST be passed to the selected mechanism by invoking GSS_Accept_sec_context(). If a response mechanism token is returned, it MUST be included in the response negotiation token. Otherwise, the target will not generate a response mechanism token in the first reply. Given that the initial inner token is passed to GSS_Accept_sec_context(), it must be a GSS-API InitialContextToken. Windows clients follow this behavior when Kerberos is negotiated, but not when NTLM is negotiated. When NTLM is in use, they send a raw NTLM message, not contained in an InitialContextToken. I can provide SMB traces of this behavior if desired. I haven't been able to find mention of this Microsoft-specific behavior in MS-SPNG or in MS-NLMP. The one thing I did find that could potentially be considered to explain this behavior is in item <8> in Appendix A of MS-SPNG: For backward compatibility and historical reasons, a Windows implementation of SPNEGO has the following behavior: it accepts raw Kerberos messages that are based on [RFC4121] and [RFC4120], and it accepts raw NTLM messages that are not embedded in [RFC4178] SPNEGO messages. This behavior is known as the universal receiver behavior. I find this passage slightly strange--for Kerberos, this seems to be standard behavior, and not a Windows extension. Any conforming GSS-API implementation that supports both SPNEGO and Kerberos should accept InitialContextTokens containing either SPNEGO or Kerberos tokens. Therefore, the Windows behavior could perhaps best be described not by the statement above, but by "the Windows GSS-API implementation accepts as the first token a raw NTLM message that is not embedded in an [RFC2743] InitialContextToken." This wording could also be considered to explain the fact that Windows servers accept the a raw NTLM token in the SPNEGO mechToken. Did I miss something in the documentation, or could it be updated to describe this deviation from the standard? -- Adam Simpkins simpkins@... _______________________________________________ cifs-protocol mailing list cifs-protocol@... https://lists.samba.org/mailman/listinfo/cifs-protocol |
|
|
Re: Status: raw NTLMSSP tokens in GSS-API/SPNEGO? SRX080803600053On Mon, Aug 04, 2008 at 04:17:29AM -0700, Bill Wesse wrote:
> Good morning once again. You noted in your question that you can > provide a network trace of the NTLM behavior you reported. I would > deeply appreciate it if you would send one to me. Could you also > note the OS versions of the client and server (just in case, even > though the NtlmsspAuthenticaeMessage may contain a Version > structure. Please find a trace attached. This was taken between a client running Windows XP SP3 and a server running Windows Server 2003 SP2 (Enterprise Edition). Frame 6 contains the initial SESSION_SETUP_ANDX request. This contains a GSS-API InitialContextToken that uses SPNEGO. The mechToken inside the SPNEGO NegTokenInit contains just raw NTLMSSP data. According to RFC 4178 section 3.2 item (c), this should be a GSS InitialContextToken. I have also included a trace of the same client and server, but using Kerberos over SPNEGO. In this trace, the mechToken is a GSS InitialContextToken. -- Adam Simpkins simpkins@... _______________________________________________ cifs-protocol mailing list cifs-protocol@... https://lists.samba.org/mailman/listinfo/cifs-protocol |
|
|
Re: Status: raw NTLMSSP tokens in GSS-API/SPNEGO? SRX080803600053On Mon, Aug 04, 2008 at 01:48:37PM -0700, Adam Simpkins wrote:
> On Mon, Aug 04, 2008 at 04:17:29AM -0700, Bill Wesse wrote: > > Good morning once again. You noted in your question that you can > > provide a network trace of the NTLM behavior you reported. I would > > deeply appreciate it if you would send one to me. Could you also > > note the OS versions of the client and server (just in case, even > > though the NtlmsspAuthenticaeMessage may contain a Version > > structure. Here's another trace of a Windows XP SP3 client sending raw NTLMSSP (no SPNEGO) to a server. This server is just a proxy in front of a Windows Server 2003 machine, but I configured it to strip off the securit blob from the server's NEGOTIATE response before sending it to the client. This causes the client to send raw NTLMSSP instead of SPNEGO. Based on the documentation in MS-SMB 2.2.4 and MS-SMB 3.2.4.2.3, I would expect the client to send a GSS authentication token here (i.e., an InitialContextToken). However, in this case the client sends raw NTLMSSP data. A resonable explanation for this would be that Microsoft's GSS-API implementation accepts raw NTLMSSP data for the first token, in addition to normal GSS InitialContextTokens. I think this is what item <8> of MS-SPNG Appendix A is trying to explain, but it mentions this as an extension of SPNEGO, not GSS-API. Assuming that this is a general extension that Microsoft has made to their GSS-API implementation, this would also explain the lack of the InitialContextToken for NTLMSSP when SPNEGO is used. Another related point that should probably be documented is that Windows servers do not seem to accept well-formed GSS InitialContextTokens containing NTLMSSP. I have attached a trace of that, too. (The server is the same Windows Server 2003 system as in the other traces.) -- Adam Simpkins simpkins@... _______________________________________________ cifs-protocol mailing list cifs-protocol@... https://lists.samba.org/mailman/listinfo/cifs-protocol |
|
|
RE: Status: raw NTLMSSP tokens in GSS-API/SPNEGO? SRX080803600053Thank you sir! I will begin my investigation this morning!
Regards, Bill Wesse MCSE / Escalation Engineer, US-CSS DSC PROTOCOL TEAM 8055 Microsoft Way Charlotte, NC 28273 TEL: 980-776-8200 CELL: 704-661-5438 FAX: 704-665-9606 We're Hiring http://members.microsoft.com/careers/search/details.aspx?JobID=A976CE32-B0B9-41E3-AF57-05A82B88383E&start=1&interval=10&SortCol=DatePosted -----Original Message----- From: Adam Simpkins [mailto:simpkins@...] Sent: Monday, August 04, 2008 4:49 PM To: Bill Wesse Cc: 'cifs-protocol@...' Subject: Re: Status: raw NTLMSSP tokens in GSS-API/SPNEGO? SRX080803600053 On Mon, Aug 04, 2008 at 04:17:29AM -0700, Bill Wesse wrote: > Good morning once again. You noted in your question that you can > provide a network trace of the NTLM behavior you reported. I would > deeply appreciate it if you would send one to me. Could you also note > the OS versions of the client and server (just in case, even though > the NtlmsspAuthenticaeMessage may contain a Version structure. Please find a trace attached. This was taken between a client running Windows XP SP3 and a server running Windows Server 2003 SP2 (Enterprise Edition). Frame 6 contains the initial SESSION_SETUP_ANDX request. This contains a GSS-API InitialContextToken that uses SPNEGO. The mechToken inside the SPNEGO NegTokenInit contains just raw NTLMSSP data. According to RFC 4178 section 3.2 item (c), this should be a GSS InitialContextToken. I have also included a trace of the same client and server, but using Kerberos over SPNEGO. In this trace, the mechToken is a GSS InitialContextToken. -- Adam Simpkins simpkins@... _______________________________________________ cifs-protocol mailing list cifs-protocol@... https://lists.samba.org/mailman/listinfo/cifs-protocol |
|
|
RE: Status: raw NTLMSSP tokens in GSS-API/SPNEGO? SRX080803600053Thanks you again!
Regards, Bill Wesse MCSE / Escalation Engineer, US-CSS DSC PROTOCOL TEAM 8055 Microsoft Way Charlotte, NC 28273 TEL: 980-776-8200 CELL: 704-661-5438 FAX: 704-665-9606 We're Hiring http://members.microsoft.com/careers/search/details.aspx?JobID=A976CE32-B0B9-41E3-AF57-05A82B88383E&start=1&interval=10&SortCol=DatePosted -----Original Message----- From: Adam Simpkins [mailto:simpkins@...] Sent: Monday, August 04, 2008 7:23 PM To: Bill Wesse Cc: 'cifs-protocol@...' Subject: Re: Status: raw NTLMSSP tokens in GSS-API/SPNEGO? SRX080803600053 On Mon, Aug 04, 2008 at 01:48:37PM -0700, Adam Simpkins wrote: > On Mon, Aug 04, 2008 at 04:17:29AM -0700, Bill Wesse wrote: > > Good morning once again. You noted in your question that you can > > provide a network trace of the NTLM behavior you reported. I would > > deeply appreciate it if you would send one to me. Could you also > > note the OS versions of the client and server (just in case, even > > though the NtlmsspAuthenticaeMessage may contain a Version > > structure. Here's another trace of a Windows XP SP3 client sending raw NTLMSSP (no SPNEGO) to a server. This server is just a proxy in front of a Windows Server 2003 machine, but I configured it to strip off the securit blob from the server's NEGOTIATE response before sending it to the client. This causes the client to send raw NTLMSSP instead of SPNEGO. Based on the documentation in MS-SMB 2.2.4 and MS-SMB 3.2.4.2.3, I would expect the client to send a GSS authentication token here (i.e., an InitialContextToken). However, in this case the client sends raw NTLMSSP data. A resonable explanation for this would be that Microsoft's GSS-API implementation accepts raw NTLMSSP data for the first token, in addition to normal GSS InitialContextTokens. I think this is what item <8> of MS-SPNG Appendix A is trying to explain, but it mentions this as an extension of SPNEGO, not GSS-API. Assuming that this is a general extension that Microsoft has made to their GSS-API implementation, this would also explain the lack of the InitialContextToken for NTLMSSP when SPNEGO is used. Another related point that should probably be documented is that Windows servers do not seem to accept well-formed GSS InitialContextTokens containing NTLMSSP. I have attached a trace of that, too. (The server is the same Windows Server 2003 system as in the other traces.) -- Adam Simpkins simpkins@... _______________________________________________ cifs-protocol mailing list cifs-protocol@... https://lists.samba.org/mailman/listinfo/cifs-protocol |
|
|
|