Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
LDAPPER — LDAP 查询,不再糟糕 | Kitploit
工具/GitHubGitHub/shellster/ldapper
权限提升侦察密码攻击信息收集渗透测试身份验证
GitHubshellster/ldapper

LDAPPER

LDAP 查询,不再糟糕

查看仓库
1141731年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Introduction

本工具旨在解决我在使用 ldapsearch 以及与 AD 交互过程中遇到的许多问题。具体来说,该工具解决了以下我遇到过的痛点:

  1. 无法从 AD 返回超过一千个结果。本工具支持 LDAP 记录分页,并绕过了其他 AD 缺陷,允许检索任意数量的记录。

  2. 无法以直观的方式使用 NTLM 凭据进行身份验证。您可以提供 NETBIOS 域名、用户名和密码来向 Windows DC 进行身份验证。

  3. 无法精确控制返回的记录数量、返回速度以及每次拉取的记录数。本工具允许您控制所有这些参数,包括在每次分页调用之间添加延迟。此外,可以指定多个 DC 以实现轮询查询。

  4. 无法以易于消化的形式返回结果。本工具目前支持三种格式:

  • plain:美观、可读的文本版本,子项会缩进显示。
  • json:JSON 输出,包含额外的空格以便于阅读。
  • json_tiny:去除所有额外空格的 JSON 输出。
  1. 无法只返回您关心的属性。本工具允许您返回所有属性,或仅返回您需要的属性。

  2. 无法保存自定义的常用查询列表。

Installation

root@kitploit:~
git clone ...
pip install -r requirements.txt

Directions

root@kitploit:~
# python3 ldapper.py
    usage: ldapper.py [-h] --domain DOMAIN --user USER --password PASSWORD
                      --server SERVER [--basedn BASEDN] --search SEARCH
                      [--maxrecords MAXRECORDS] [--pagesize PAGESIZE]
                      [--delay DELAY] [--format {plain,json,json_tiny}]
                      [--encryption {1,2,3}]
                      [--advanced [ADVANCED [ADVANCED ...]]] [--outfile OUTFILE]
                      [--engine {ldap3,impacket}]
                      [attribute [attribute ...]]

    AD LDAP 命令行搜索工具,不再糟糕。

    positional arguments:
      attribute             要返回的属性(对于自定义查询默认为全部。对于预设查询,传递 "*" 可获取所有属性而非默认值。)

    optional arguments:
      -h, --help            显示此帮助信息并退出
      --domain DOMAIN, -D DOMAIN
                            域名
      --user USER, -U USER  用户名
      --password PASSWORD, -P PASSWORD
                            密码或 LM:NTLM 格式的哈希
      --server SERVER, -S SERVER
                            DC 的 IP 或可解析名称
      --basedn BASEDN, -b BASEDN
                            基础 DN 通常应为 "dc=",后跟长域名,其中句点替换为 ",dc="。如果未提供,将尝试从 LDAP 服务器推导。
      --search SEARCH, -s SEARCH
                            LDAP 搜索字符串或数字,表示从“自定义搜索”列表中选择的搜索项。使用 "-" 表示从标准输入读取。
      --maxrecords MAXRECORDS, -m MAXRECORDS
                            要返回的最大记录数(默认为 100),0 表示全部。
      --pagesize PAGESIZE, -p PAGESIZE
                            每次拉取返回的记录数(默认为 10)。应小于等于最大记录数。
      --delay DELAY, -d DELAY
                            分页请求之间的延迟(毫秒,默认为 0)。
      --format {plain,json,json_tiny}, -f {plain,json,json_tiny}
                            输出格式(默认为 "plain")。可选:plain, json, json_tiny。
      --encryption {1,2,3}, -n {1,2,3}
                            3) 连接到 636 TLS(默认);2) 连接到 389 不启用 TLS,但尝试 STARTTLS 并在需要时回退(impacket 不可用);1) 连接到 389,强制明文。
      --advanced [ADVANCED [ADVANCED ...]], -a [ADVANCED [ADVANCED ...]]
                            高级方式:为需要额外输入的预设搜索传递参数(如有多个提示,请按提示顺序传递参数)。
      --outfile OUTFILE, -o OUTFILE
                            输出文件(如果指定,输出将定向到文件而非标准输出 [可防止 Windows 中的编码错误])。
      --engine {ldap3,impacket}, -e {ldap3,impacket}
                            选择使用的引擎(默认为 "ldap3")。请参阅 OPSEC 注意事项!

    Custom Searches:
              1) 获取所有用户
                      1.1) 获取特定用户(会提示您输入用户名)
              2) 获取所有组(及其成员)
                      2.1) 获取特定组(会提示您输入组名)
              3) 获取所有打印机
              4) 获取所有计算机
                      4.1) 获取特定计算机(会提示您输入计算机名)
              5) 获取域/企业管理员
              6) 获取域信任关系
              7) 搜索不受约束的 SPN 委派(潜在权限提升)
              8) 搜索不需要预认证的帐户(ASREPROAST)
              9) 搜索用户 SPN(KERBEROAST)
                      9.1) 搜索特定用户 SPN(会提示您输入用户主体名称)
             10) 显示所有可见的 LAPS LA 密码
                     10.1) 搜索特定工作站的 LAPS 密码(会提示您输入工作站名称)
            *11) 搜索常见的明文密码属性(UserPassword、UnixUserPassword、unicodePwd 和 msSFU30Password)
             12) 显示所有 Quest 双因素种子(如果您有访问权限)
             13) Oracle "orclCommonAttribute" SSO 密码哈希
            *14) Oracle "userPassword" SSO 密码哈希
             15) 获取 SCCM 服务器
             16) 搜索不需要密码的帐户(PasswordNotRequired)

    带星号的项目从未在实际环境中经过验证,如果它们有效,请告知我。

Example

在这些示例中,假设以下信息:

root@kitploit:~
NETBIOS NAME: EMP
FULL DOMAIN NAME: EXAMPLE.LOCAL
DC IPs: 10.0.0.2, 10.0.0.3
USERNAME: bob
PASSWORD: password

检索所有记录,仅返回 cn 属性:

root@kitploit:~
python ldapper.py -D 'EMP' -U 'bob' -P 'password' -S '10.0.0.2,10.0.0.3' -m 0  -s '(cn=*)' cn

检索特定用户的详细信息(将提示输入用户名):

root@kitploit:~
python ldapper.py -D 'EMP' -U 'bob' -P 'password' -S '10.0.0.2,10.0.0.3' -m 0  -s '1.1'

检索特定用户的详细信息(传递用户名以避免交互提示):

root@kitploit:~
python ldapper.py -D 'EMP' -U 'bob' -P 'password' -S '10.0.0.2,10.0.0.3' -m 0  -s '1.1' -a 'alice'

检索前 100 个用户 Kerberos SPN,每次最多检索五个,每次分页请求间隔两秒,以紧凑 JSON 格式输出:

root@kitploit:~
python ldapper.py -D 'EMP' -U 'bob' -P 'password' -S '10.0.0.2,10.0.0.3' -m 100 -p 5 -d 2000 -f json_tiny -s '(&(objectcategory=user)(serviceprincipalname=*))' serviceprincipalname userprincipalname

手动检索所有打印机记录并显示所有相关属性:

root@kitploit:~
python ldapper.py -D 'EMP' -U 'bob' -P 'password' -S '10.0.0.2,10.0.0.3' -m 0  -s '(objectClass=printQueue)'

轻松搜索不受约束的 SPN 委派:

root@kitploit:~
python ldapper.py -D 'EMP' -U 'bob' -P 'password' -S '10.0.0.2,10.0.0.3' -m 0  -s 4

OPSEC Warnings

  1. 使用 Impacket 引擎且未提供 baseDN 时,该工具将尝试通过 SMB 身份验证并连接到域控制器以获取域的 NETBIOS 名称,从而推导出 baseDN。在高度敏感的环境中,此行为可能导致检测。请勿在此类环境中使用 Impacket,或者始终指定 baseDN。

  2. Impacket 要么进行完全 LDAPS 连接,要么进行完全未加密的连接。它目前无法使用 STARTTLS,因此如果明文 LDAP 连接会被检测到,请仅尝试完全 TLS 连接,或者不要使用 Impacket 引擎。

  3. Impacket 在控制记录拉取速度方面提供的控制能力有限。因此,“--delay”选项仅部分实现。如果延迟记录拉取至关重要,请勿使用 Impacket 引擎。

References

Kerberoast: https://adsecurity.org/?p=2293

ASREPRoast: http://www.harmj0y.net/blog/activedirectory/roasting-as-reps/

Unconstrained Delegation Abuse: http://www.harmj0y.net/blog/activedirectory/the-most-dangerous-user-right-you-probably-have-never-heard-of/

Oracle nonsense: https://blogs.oracle.com/mwilcox/entry/clarifying_ovd-ad_eus_password and http://onlineappsdba.com/index.php/2014/03/03/what-hashing-algorithm-oid-uses-to-store-user-password-ssha-or-md5/

Qwest/Defender/Oneidentity 2nd Factor Token Data: http://support-public.cfm.quest.com/43565_Defender_5.9_AdminGuide.pdf

Common plaintext passwords: https://www.blackhillsinfosec.com/domain-goodness-learned-love-ad-explorer/

Change Log

Version 1.7

  1. 检查不需要密码的帐户,感谢 @nyxgeek。

Version 1.6

  1. 添加了 Impacket 作为 LDAP3 的替代方案,因为 LDAP3 并不总是有效(Impacket 也是如此)。

  2. 移除了多 LDAP 服务器选择功能,因为该功能并非必需,且在 Impacket 中也不存在。

  3. 重构了所有内容。

Version 1.5

  1. 修复了可能导致部分记录未被返回的小型分页错误。

Version 1.4

  1. 添加了 SCCM 搜索功能。

  2. 添加了输出文件选项。

  3. 修复了一些格式输出问题。

Version 1.3

  1. 添加了从标准输入接收 LDAP 查询的功能。

  2. 如果用户未添加括号,则自动将查询包裹在括号中。

  3. 修复了 Python 2 支持错误。

Future Plans

如果您有一些常用的搜索枚举,请告诉我,以便我将其添加到列表中。

  1. 或许制作一个离线搜索/解析器来处理之前拉取的数据?

...

Credit and Contact

由 Shelby Spencer (shellster) 编写。如有错误或功能请求,请联系我。

下载工具