# way to make the lib do things it wasn't designed to without touching # its code # # Author: # Dirk-jan Mollema / Fox-IT (https://www.fox-it.com) # Alberto Solino (@agsolino) # import sys from struct import unpack from impacket import LOG from ldap3 import Server, Connection, ALL, NTLM, MODIFY_ADD from ldap3.operation import bind try: from ldap3.core.results import RESULT_SUCCESS, RESULT_STRONGER_AUTH_REQUIRED except ImportError: LOG.fatal("ntlmrelayx requires ldap3 > 2.0. To update, use: 'python -m pip install ldap3 --upgrade'") sys.exit(1) from impacket.examples.ntlmrelayx.clients import ProtocolClient from impacket.nt_errors import STATUS_SUCCESS, STATUS_ACCESS_DENIED from impacket.ntlm import NTLMAuthChallenge, NTLMSSP_AV_FLAGS, AV_PAIRS, NTLMAuthNegotiate, NTLMSSP_NEGOTIATE_SIGN, NTLMSSP_NEGOTIATE_ALWAYS_SIGN, NTLMAuthChallengeResponse, NTLMSSP_NEGOTIATE_KEY_EXCH, NTLMSSP_NEGOTIATE_VERSION from impacket.spnego import SPNEGO_NegTokenResp PROTOCOL_CLIENT_CLASSES = ["LDAPRelayClient", "LDAPSRelayClient"] class LDAPRelayClientException(Exception): pass class LDAPRelayClient(ProtocolClient): PLUGIN_NAME = "LDAP" MODIFY_ADD = MODIFY_ADD
# Description: # LDAP client for relaying NTLMSSP authentication to LDAP servers # The way of using the ldap3 library is quite hacky, but its the best # way to make the lib do things it wasn't designed to without touching # its code # import sys from struct import unpack from impacket import LOG from ldap3 import Server, Connection, ALL, NTLM, MODIFY_ADD from ldap3.operation import bind try: from ldap3.core.results import RESULT_SUCCESS, RESULT_STRONGER_AUTH_REQUIRED except ImportError: LOG.fatal( "ntlmrelayx requires ldap3 > 2.0. To update, use: pip install ldap3 --upgrade" ) sys.exit(1) from impacket.examples.ntlmrelayx.clients import ProtocolClient from impacket.nt_errors import STATUS_SUCCESS, STATUS_ACCESS_DENIED from impacket.ntlm import NTLMAuthChallenge, NTLMAuthNegotiate, NTLMSSP_NEGOTIATE_SIGN from impacket.spnego import SPNEGO_NegTokenResp PROTOCOL_CLIENT_CLASSES = ["LDAPRelayClient", "LDAPSRelayClient"] class LDAPRelayClientException(Exception): pass
# # Description: # LDAP client for relaying NTLMSSP authentication to LDAP servers # The way of using the ldap3 library is quite hacky, but its the best # way to make the lib do things it wasn't designed to without touching # its code # import sys from struct import unpack from impacket import LOG from ldap3 import Server, Connection, ALL, NTLM, MODIFY_ADD from ldap3.operation import bind try: from ldap3.core.results import RESULT_SUCCESS, RESULT_STRONGER_AUTH_REQUIRED except ImportError: LOG.fatal("ntlmrelayx requires ldap3 > 2.0. To update, use: pip install ldap3 --upgrade") sys.exit(1) from impacket.examples.ntlmrelayx.clients import ProtocolClient from impacket.nt_errors import STATUS_SUCCESS, STATUS_ACCESS_DENIED from impacket.ntlm import NTLMAuthChallenge, NTLMAuthNegotiate, NTLMSSP_NEGOTIATE_SIGN from impacket.spnego import SPNEGO_NegTokenResp PROTOCOL_CLIENT_CLASSES = ["LDAPRelayClient", "LDAPSRelayClient"] class LDAPRelayClientException(Exception): pass class LDAPRelayClient(ProtocolClient): PLUGIN_NAME = "LDAP" MODIFY_ADD = MODIFY_ADD