Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
LDAPPER — Запросы LDAP без мучений | Kitploit
Инструменты/GitHubGitHub/shellster/ldapper
Повышение привилегийРазведкаАтаки на ПаролиСбор информацииТестирование на ПроникновениеАутентификация
GitHubshellster/ldapper

LDAPPER

Запросы LDAP без мучений

Репозиторий
114171 год назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Введение

Этот инструмент был написан для решения множества проблем, с которыми я сталкивался при использовании ldapsearch и взаимодействии с AD в целом. В частности, этот инструмент решает следующие проблемы:

  1. Невозможность получить более тысячи результатов из AD. Этот инструмент поддерживает постраничную загрузку записей LDAP и обходит другие ошибки AD, позволяя извлекать произвольное количество записей.

  2. Невозможность интуитивно понятной аутентификации с использованием учётных данных NTLM. Вы можете указать имя NETBIOS-домена, имя пользователя и пароль для аутентификации на контроллере домена Windows.

  3. Невозможность точно контролировать количество возвращаемых записей, скорость их получения и количество записей, загружаемых за один раз. Этот инструмент позволяет управлять всеми этими параметрами, включая добавление задержек между страничными вызовами. Кроме того, можно указать несколько контроллеров домена для циклического опроса.

  4. Невозможность получать результаты в удобной для восприятия форме. В настоящее время инструмент поддерживает три формата:

  • plain: Удобочитаемая текстовая версия данных с подэлементами, сдвинутыми табуляцией.
  • json: Вывод в формате JSON с дополнительными пробелами для удобства чтения.
  • json_tiny: Вывод в формате JSON без лишних пробелов.
  1. Невозможность возвращать только те атрибуты, которые вас интересуют. Этот инструмент позволяет либо возвращать все атрибуты, либо только выбранные.

  2. Невозможность сохранять список готовых, часто используемых запросов.

Установка

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

Инструкции

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 из командной строки, который не раздражает.

    Позиционные аргументы:
      attribute             Атрибуты для возврата (по умолчанию — все для пользовательского запроса. Для стандартных запросов передайте "*", чтобы получить все атрибуты вместо стандартных.)

    Необязательные аргументы:
      -h, --help            показать это справочное сообщение и выйти
      --domain DOMAIN, -D DOMAIN
                            Домен
      --user USER, -U USER  Имя пользователя
      --password PASSWORD, -P PASSWORD
                            Пароль или хэш в формате LM:NTLM
      --server SERVER, -S SERVER
                            IP-адрес или разрешимое имя контроллера домена
      --basedn BASEDN, -b BASEDN
                            Базовый DN обычно должен быть "dc=", за которым следует полное доменное имя с заменой точек на ",dc=". Если не указан, будет предпринята попытка вывести его из LDAP-сервера.
      --search SEARCH, -s SEARCH
                            Строка поиска LDAP или номер, указывающий на пользовательский поиск из списка "Пользовательские поиски". Используйте "-" для чтения из stdin.
      --maxrecords MAXRECORDS, -m MAXRECORDS
                            Максимальное количество записей для возврата (по умолчанию 100), 0 означает все.
      --pagesize PAGESIZE, -p PAGESIZE
                            Количество записей, возвращаемых за один запрос (по умолчанию 10). Должно быть <= max records.
      --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
                            Выходной файл (если указан, вывод будет направлен сюда вместо stdout [может предотвратить ошибки кодировки в Windows])
      --engine {ldap3,impacket}, -e {ldap3,impacket}
                            Выбор движка (по умолчанию "ldap3"). СМ. ПРИМЕЧАНИЯ ПО ОПСЕК!

    Пользовательские поиски:
              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) Хэш пароля SSO Oracle "orclCommonAttribute"
            *14) Хэш пароля SSO Oracle "userPassword"
             15) Получить серверы SCCM
             16) Поиск учётных записей, для которых пароль не требуется. (PasswordNotRequired)

    Пункты, отмеченные звёздочкой, никогда не тестировались в среде, где их можно было бы проверить, поэтому дайте мне знать, если они работают.

Пример

Для целей этих примеров предположим следующее:

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

  1. При использовании движка Impacket и отсутствии указания baseDN инструмент попытается выполнить аутентификацию по SMB и подключиться к контроллеру домена, чтобы получить имя NETBIOS домена для вывода baseDN. Это поведение может привести к обнаружению в высокочувствительной среде. Либо не используйте Impacket в такой среде, либо всегда указывайте baseDN.

  2. Impacket может выполнять либо полное LDAPS-подключение, либо полностью незашифрованное подключение. В настоящее время он не может использовать STARTTLS, поэтому, если незашифрованное LDAP-соединение будет зафиксировано, либо используйте только полное TLS-соединение, либо не используйте движок Impacket.

  3. Impacket не обеспечивает достаточного контроля над скоростью извлечения записей. Поэтому опция "--delay" реализована лишь частично. Если задержка при извлечении записей критична, не используйте движок Impacket.

Ссылки

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/

Журнал изменений

Версия 1.7

  1. Проверка учётных записей, не требующих пароля, предоставлено @nyxgeek.

Версия 1.6

  1. Добавлен Impacket в качестве альтернативы LDAP3, так как LDAP3 не всегда работает (как и Impacket).

  2. Удалён выбор нескольких LDAP-серверов, поскольку эта функция не особо нужна и не реализована в Impacket.

  3. Всё переработано.

Версия 1.5

  1. Исправлена небольшая ошибка пагинации, из-за которой некоторые записи могли не возвращаться.

Версия 1.4

  1. Добавлена функция поиска SCCM.

  2. Добавлена опция выходного файла.

  3. Исправлены некоторые проблемы с форматированием вывода.

Версия 1.3

  1. Добавлена возможность принимать LDAP-запрос из stdin.

  2. Автоматическое заключение запроса в скобки, если пользователь этого не сделал.

  3. Исправлена ошибка поддержки Python 2.

Планы на будущее

Если у вас есть часто используемые поисковые перечисления, сообщите мне, чтобы я мог добавить их в список.

  1. Возможно, сделать офлайн-поиск/анализатор ранее полученных данных?

...

Автор и контакты

Написано Шелби Спенсер (shellster). Свяжитесь со мной по поводу ошибок или запросов функций.

Скачать инструмент