make sure to save server challenge bytes

This commit is contained in:
Conor Hunt 2012-11-10 15:57:24 -05:00
parent d5082d0f01
commit 949b63ef3e
6 changed files with 42 additions and 35 deletions

View File

@ -67,7 +67,9 @@ func ParseChallengeMessage(body []byte) (*Challenge, error) {
var err error var err error
challenge.TargetName, err = ReadStringPayload(12, body) challenge.TargetName, err = ReadStringPayload(12, body)
if err != nil { return nil, err } if err != nil {
return nil, err
}
challenge.NegotiateFlags = binary.LittleEndian.Uint32(body[20:24]) challenge.NegotiateFlags = binary.LittleEndian.Uint32(body[20:24])
@ -76,7 +78,9 @@ func ParseChallengeMessage(body []byte) (*Challenge, error) {
challenge.Reserved = body[32:40] challenge.Reserved = body[32:40]
challenge.TargetInfoPayloadStruct, err = ReadBytePayload(40, body) challenge.TargetInfoPayloadStruct, err = ReadBytePayload(40, body)
if err != nil { return nil, err } if err != nil {
return nil, err
}
challenge.TargetInfo = ReadAvPairs(challenge.TargetInfoPayloadStruct.Payload) challenge.TargetInfo = ReadAvPairs(challenge.TargetInfoPayloadStruct.Payload)
@ -84,7 +88,9 @@ func ParseChallengeMessage(body []byte) (*Challenge, error) {
if NTLMSSP_NEGOTIATE_VERSION.IsSet(challenge.NegotiateFlags) { if NTLMSSP_NEGOTIATE_VERSION.IsSet(challenge.NegotiateFlags) {
challenge.Version, err = ReadVersionStruct(body[offset : offset+8]) challenge.Version, err = ReadVersionStruct(body[offset : offset+8])
if err != nil { return nil, err } if err != nil {
return nil, err
}
offset = offset + 8 offset = offset + 8
} }
@ -116,7 +122,7 @@ func (c *Challenge) Bytes() []byte {
buffer.Write(c.TargetInfoPayloadStruct.Bytes()) buffer.Write(c.TargetInfoPayloadStruct.Bytes())
payloadOffset += uint32(c.TargetInfoPayloadStruct.Len) payloadOffset += uint32(c.TargetInfoPayloadStruct.Len)
if(c.Version != nil) { if c.Version != nil {
buffer.Write(c.Version.Bytes()) buffer.Write(c.Version.Bytes())
} else { } else {
buffer.Write(make([]byte, 8)) buffer.Write(make([]byte, 8))

View File

@ -89,7 +89,7 @@ func (n *V2ServerSession) GenerateChallengeMessage() (cm *messages.Challenge, er
flags := uint32(0) flags := uint32(0)
flags = messages.NTLMSSP_NEGOTIATE_KEY_EXCH.Set(flags) flags = messages.NTLMSSP_NEGOTIATE_KEY_EXCH.Set(flags)
// NOTE: Unsetting this in order for the signatures to work // NOTE: Unsetting this in order for the signatures to work
// flags = messages.NTLMSSP_NEGOTIATE_VERSION.Set(flags) flags = messages.NTLMSSP_NEGOTIATE_VERSION.Set(flags)
flags = messages.NTLMSSP_NEGOTIATE_EXTENDED_SESSIONSECURITY.Set(flags) flags = messages.NTLMSSP_NEGOTIATE_EXTENDED_SESSIONSECURITY.Set(flags)
flags = messages.NTLMSSP_NEGOTIATE_TARGET_INFO.Set(flags) flags = messages.NTLMSSP_NEGOTIATE_TARGET_INFO.Set(flags)
flags = messages.NTLMSSP_NEGOTIATE_IDENTIFY.Set(flags) flags = messages.NTLMSSP_NEGOTIATE_IDENTIFY.Set(flags)
@ -101,7 +101,8 @@ func (n *V2ServerSession) GenerateChallengeMessage() (cm *messages.Challenge, er
flags = messages.NTLMSSP_NEGOTIATE_UNICODE.Set(flags) flags = messages.NTLMSSP_NEGOTIATE_UNICODE.Set(flags)
cm.NegotiateFlags = flags cm.NegotiateFlags = flags
cm.ServerChallenge = randomBytes(8) n.serverChallenge = randomBytes(8)
cm.ServerChallenge = n.serverChallenge
cm.Reserved = make([]byte, 8) cm.Reserved = make([]byte, 8)
// Create the AvPairs we need // Create the AvPairs we need
@ -115,7 +116,7 @@ func (n *V2ServerSession) GenerateChallengeMessage() (cm *messages.Challenge, er
cm.TargetInfo = pairs cm.TargetInfo = pairs
cm.TargetInfoPayloadStruct, _ = messages.CreateBytePayload(pairs.Bytes()) cm.TargetInfoPayloadStruct, _ = messages.CreateBytePayload(pairs.Bytes())
cm.Version = &messages.VersionStruct{ProductMajorVersion: uint8(5), ProductMinorVersion: uint8(1), ProductBuild: uint16(2600), NTLMRevisionCurrent: uint8(10)} cm.Version = &messages.VersionStruct{ProductMajorVersion: uint8(6), ProductMinorVersion: uint8(0), ProductBuild: uint16(2600), NTLMRevisionCurrent: uint8(10)}
return cm, nil return cm, nil
} }