9.密码策略

1. 理论

在攻击 Active Directory 域时,直接针对账号通常是一个很好的起点。这可能为攻击者提供初始访问权限,并帮助其进行横向移动操作。最简单的获取账户控制的方法是进行密码猜测或密码喷洒攻击。这类攻击的效果通常取决于用户的安全意识水平。

然而,通常会有一些技术性防护措施到位,迫使攻击者在密码尝试的次数和速度之间做出权衡。

为了更好地调整攻击策略,攻击者可以获取目标系统的密码策略。这些策略有时可以通过空会话(即 7.MS-RPC > 2.2. 空会话LDAP 匿名绑定)来枚举获得。

1.1. linux利用

在类 UNIX 系统中,有多种工具可以用来获取密码策略,例如:

# polenum(通过 MS-RPC 获取密码策略)
polenum -d $DOMAIN -u $USER -p $PASSWORD -d $DOMAIN

# netexec(通过 MS-RPC 获取密码策略)
nxc smb $DOMAIN_CONTROLLER -d $DOMAIN -u $USER -p $PASSWORD --pass-pol

# ldapsearch-ad(通过 LDAP 获取密码策略)
ldapsearch-ad.py -l $LDAP_SERVER -d $DOMAIN -u $USER -p $PASSWORD -t all

# enum4linux-ng(通过 MS-RPC 获取密码策略)
enum4linux-ng -P -w -u $USER -p $PASSWORD $DOMAIN_CONTROLLER

1.2. windows下利用

# 从加入域的机器上,可以使用 net 命令获取密码策略
net accounts
net accounts /domain

# 从未加入域的机器上,可以使用 PowerView(PowerShell 工具)获取密码策略
Get-DomainPolicy

1.3. 其他

对于能触发账户锁定机制的账号,适合用 SprayHound 这种凭证喷洒攻击工具。因为喷洒攻击通常尝试少量密码,避免触发锁定机制,适合有锁定保护的账号环境。

对于没有账户锁定机制的账号,可以直接用 Kerbrute 进行暴力破解,因为不存在因多次失败而被锁定的问题,可以尽可能多地尝试密码。