Enumerating the Password Policy - from Linux

Credentialed

With valid domain credentials, the password policy can also be obtained remotely using tools such as CrackMapExec or rpcclient.

crackmapexec smb 172.16.5.5 -u avazquez -p Password123 --pass-pol

SMB NULL Sessions

When creating a domain in earlier versions of Windows Server, anonymous access was granted to certain shares, which allowed for domain enumeration. An SMB NULL session can be enumerated easily. For enumeration, we can use tools such as enum4linuxCrackMapExecrpcclient, etc.

We can use rpcclient to check a Domain Controller for SMB NULL session access.

Once connected, we can issue an RPC command such as querydominfo to obtain information about the domain and confirm NULL session access.

rpcclient -U "" -N 172.16.5.5
rpcclient $> querydominfo

#Obtain password policy
rpcclient $> getdompwinfo

Let's try this using enum4linuxenum4linux is a tool built around the Samba suite of tools nmblookupnetrpcclient and smbclient to use for enumeration of windows hosts and domains. It can be found pre-installed on many different penetration testing distros, including Parrot Security Linux. Below we have an example output displaying information that can be provided by enum4linux. Here are some common enumeration tools and the ports they use:

Tool Ports
nmblookup 137/UDP
nbtstat 137/UDP
net 139/TCP, 135/TCP, TCP and UDP 135 and 49152-65535
rpcclient 135/TCP
smbclient 445/TCP

The tool enum4linux-ng is a rewrite of enum4linux in Python, but has additional features such as the ability to export data as YAML or JSON files which can later be used to process the data further or feed it to other tools.

enum4linux -P 172.16.5.5

enum4linux-ng -P 172.16.5.5 -oA ilfreight

LDAP Anonymous Bind

LDAP anonymous binds allow unauthenticated attackers to retrieve information from the domain, such as a complete listing of users, groups, computers, user account attributes, and the domain password policy.

This is a legacy configuration, and as of Windows Server 2003, only authenticated users are permitted to initiate LDAP requests.

With an LDAP anonymous bind, we can use LDAP-specific enumeration tools such as windapsearch.pyldapsearchad-ldapdomaindump.py, etc., to pull the password policy. With ldapsearch,

ldapsearch -h 172.16.5.5 -x -b "DC=INLANEFREIGHT,DC=LOCAL" -s sub "*" | grep -m 1 -B 10 pwdHistoryLength