本项目是 Impacket 中 ldap_shell 的一个分支。它通过 LDAP/LDAPS 协议为 Active Directory 的枚举和操作提供了一个交互式 shell,对系统管理员和安全专业人员都很有用。
这些工具仅兼容 Python 3.5+。从 GitHub 克隆仓库,安装依赖项即可使用。 使用 pip 安装:
git clone https://github.com/PShlyundin/ldap_shell.git
cd ldap_shell
python3 -m pip install .
使用 uv 安装:
uv venv
uv pip install .
# 使用密码进行基本身份认证
ldap_shell domain.local/user:password
# 指定域控制器 IP 地址
ldap_shell domain.local/user:password -dc-ip 192.168.1.2
# 使用 NTLM 哈希进行身份认证
ldap_shell domain.local/user -hashes aad3b435b51404eeaad3b435b51404ee:aad3b435b51404eeaad3b435b51404e1
# 使用 TGT 进行 Kerberos 身份认证
export KRB5CCNAME=/home/user/ticket.ccache
ldap_shell -k -no-pass domain.local/user
获取信息
dump [output_dir] - 导出域信息
get_group_users group - 获取某个组中的所有用户
get_laps_gmsa [target] - 检索与指定账户 (sAMAccountName) 关联的 LAPS 和 GMSA 密码,或检索所有账户。支持 LAPS 2.0
get_maq [user] - 获取计算机账户配额以及允许的用户
get_user_groups user - 递归检索该用户所属的所有组
search ldap_filter [attributes] - 搜索 AD 对象
滥用 ACL
add_user_to_group user group - 将用户添加到组
change_password user [password] - 尝试更改指定用户的密码。需要 LDAPS。
clear_rbcd target [grantee] - 清除目标计算机的 RBCD 权限
dacl_modify target grantee action mask - 修改目标对象的 DACL 条目
del_dcsync target - 通过删除域 DACL 中的 ACE 来移除用户/计算机的 DCSync 权限
del_user_from_group user group - 从组中删除用户
get_ntlm target - 使用影子凭据攻击获取 NTLM 哈希(需要对 msDS-KeyCredentialLink 具有写入权限)
set_dcsync target - 如果对域对象具有写入权限,则为选定的用户分配 DS-Replication 权限
set_dontreqpreauth target flag - 定向 AsRepRoast 攻击。为目标用户设置或取消 DONT_REQUIRE_PREAUTH 标志。
set_genericall target [grantee] - 为目标对象设置 GenericAll 权限
set_owner target [grantee] - 为目标对象设置新所有者
set_rbcd target grantee - 配置目标计算机的 RBCD 权限
set_spn target action [spn] - 列出、添加或删除目标对象的 SPN
杂项
add_computer computer_name [password] [target_dn] - 向域添加新的计算机账户
add_group group_name [target_dn] - 向 Active Directory 添加新组
add_user username [password] [target_dn] - 向域添加新的用户账户
del_computer computer_name - 从域中删除计算机账户
del_group group_name - 从 Active Directory 中删除组
del_user username - 从域中删除用户账户
disable_account username - 在域中禁用用户账户
enable_account username - 在域中启用用户账户
start_tls - 使用 LDAP 服务器启动 TLS 连接
switch_user username [password] - 将当前用户切换到另一个用户
其他
help [command] - 显示帮助
exit - 退出 shell
Apache License 2.0