【发布时间】:2012-11-03 20:42:33
【问题描述】:
我正在尝试学习和实施 SMB2 服务器。我非常有兴趣学习GSS-API (NTLMSSP, NTLMSSP_AUTH)里面。所以,我正在用我自己的 GSS-API 组件做实验。我在 RFC4178 & RFC2478 中阅读了 mechListMIC 的描述。但我不明白如何计算 'SessionSetup Response, Unknown message type' 响应的 mechListMIC。
其实我可以为‘NegotiateProtocol Response’的negTokenInit阶段生成mechListMIC。但问题是,当客户端发送 'SessionSetup Request, NTLMSSP_AUTH, User: Domain\Administrator, Unknown message type' 请求时,我无法理解它是如何生成 'mechListMIC: 01 00 00 00 78 1E E9 4A DB 99 7F E9 00 00 00 00' 以及我应该如何在 'SessionSetup Response, Unknown message type' 中用相应的 mechListMIC 发回响应strong> 基于之前的 SessionSetup 请求。
我尝试了以下信息: SMB2.CSessionSetup.securityBlob.GSSAPI.InitialContextToken.InnerContextToken.SpnegoToken.NegTokenInit.MechTypes ,十六进制数据 = 30 0C 06 0A 2B 06 01 04 01 82 37 02 02 0A
与 SMB2.CSessionSetup.securityBlob.GSSAPI.NegotiationToken.NegTokenResp.MechListMic,十六进制数据 = 01 00 00 00 78 1E E9 4A DB 99 7F E9 00 00 00 00
SecBuffer SignBuffers[2];
SignBufferDesc.ulVersion = SECBUFFER_VERSION; // SECBUFFER_VERSION = 0
SignBufferDesc.cBuffers = 2;
SignBufferDesc.pBuffers = SignBuffers;
SignBuffers[0] = 30 0C 06 0A 2B 06 01 04 01 82 37 02 02 0A;
SignBuffers[1] = 01 00 00 00 78 1E E9 4A DB 99 7F E9 00 00 00 00;
SignBuffers[0].BufferType = SECBUFFER_DATA; // SECBUFFER_DATA = 1
SignBuffers[1].BufferType = SECBUFFER_TOKEN; // SECBUFFER_TOKEN = 2
谁能告诉我我需要在 HMAC-MD5 (key, data) 算法中使用哪些信息来生成 mechListMIC for SessionSetup Response 以及如何使用?
如果可以使用我的测试用例创建一个分步示例来计算 'SessionSetup Response, Unknown message type' 响应的 mechListMIC,那将对我很有帮助。如果您需要任何进一步的信息,请告诉我。
谢谢,
希希尔
【问题讨论】: