Add fallback to SIMPLE bind when NTLM fails (e.g. userWorkstations restriction) #1971
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
While working in an Active Directory environment, I encountered an issue where Impacket tools like
rbcd.py
failed to perform an LDAP bind, even though the credentials were valid.The tool was returning:
After investigation, I found that the failure was caused by the
userWorkstations
LDAP attribute being set for the user. This attribute restricts which machines the user can log on from. Since NTLM authentication includes the client's hostname, the Domain Controller applied this restriction and rejected the bind.Example of a user with
userWorkstations: dc02
set:As a workaround, I modified the
_init_ldap_connection()
function to:data 531
) and fallback to a SIMPLE bind.This allowed the bind to succeed, as shown here:
Summary of changes:
ldap3.SIMPLE
if NTLM failsdacledit.py
andowneredit.py
, to improve reliability in similar environments.