MCPcopy Create free account
hub / github.com/PierreGode/Ragnar / _handleSessionChallenge_SMB1

Method _handleSessionChallenge_SMB1

pager_lib/smb/base.py:1924–1975  ·  view source on GitHub ↗
(self, message, ntlm_token)

Source from the content-addressed store, hash-verified

1922
1923
1924 def _handleSessionChallenge_SMB1(self, message, ntlm_token):
1925 assert message.hasExtendedSecurity
1926
1927 if message.uid and not self.uid:
1928 self.uid = message.uid
1929
1930 server_challenge, server_flags, server_info = ntlm.decodeChallengeMessage(ntlm_token)
1931 if self.use_ntlm_v2:
1932 self.log.info('Performing NTLMv2 authentication (with extended security) with server challenge "%s"', binascii.hexlify(server_challenge))
1933 nt_challenge_response, lm_challenge_response, session_key = ntlm.generateChallengeResponseV2(self.password,
1934 self.username,
1935 server_challenge,
1936 server_info,
1937 self.domain)
1938
1939 else:
1940 self.log.info('Performing NTLMv1 authentication (with extended security) with server challenge "%s"', binascii.hexlify(server_challenge))
1941 nt_challenge_response, lm_challenge_response, session_key = ntlm.generateChallengeResponseV1(self.password, server_challenge, True)
1942
1943 ntlm_data, signing_session_key = ntlm.generateAuthenticateMessage(server_flags,
1944 nt_challenge_response,
1945 lm_challenge_response,
1946 session_key,
1947 self.username,
1948 self.domain,
1949 self.my_name)
1950
1951 if self.log.isEnabledFor(logging.DEBUG):
1952 self.log.debug('NT challenge response is "%s" (%d bytes)', binascii.hexlify(nt_challenge_response), len(nt_challenge_response))
1953 self.log.debug('LM challenge response is "%s" (%d bytes)', binascii.hexlify(lm_challenge_response), len(lm_challenge_response))
1954
1955 blob = securityblob.generateAuthSecurityBlob(ntlm_data)
1956 self._sendSMBMessage(SMBMessage(ComSessionSetupAndxRequest__WithSecurityExtension(0, blob)))
1957
1958 if self.security_mode & NEGOTIATE_SECURITY_SIGNATURES_REQUIRE:
1959 self.log.info('Server requires all SMB messages to be signed')
1960 self.is_signing_active = (self.sign_options != SMB.SIGN_NEVER)
1961 elif self.security_mode & NEGOTIATE_SECURITY_SIGNATURES_ENABLE:
1962 self.log.info('Server supports SMB signing')
1963 self.is_signing_active = (self.sign_options == SMB.SIGN_WHEN_SUPPORTED)
1964 else:
1965 self.is_signing_active = False
1966
1967 if self.is_signing_active:
1968 self.log.info("SMB signing activated. All SMB messages will be signed.")
1969 self.signing_session_key = signing_session_key
1970 if self.capabilities & CAP_EXTENDED_SECURITY:
1971 self.signing_challenge_response = None
1972 else:
1973 self.signing_challenge_response = blob
1974 else:
1975 self.log.info("SMB signing deactivated. SMB messages will NOT be signed.")
1976
1977
1978 def _handleNegotiateResponse_SMB1(self, message):

Callers

nothing calls this directly

Calls 4

SMBMessageClass · 0.85
infoMethod · 0.80
debugMethod · 0.80

Tested by

no test coverage detected