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

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

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

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

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

Категории

Все категории
Loading categories
sopa — Практический клиент для ADWS на Golang. | Kitploit
Инструменты/GitHubGitHub/macmod/sopa
РазведкаСбор информацииТестирование на ПроникновениеУтилиты и фреймворкиАутентификацияRed Teaming
GitHubmacmod/sopa

sopa

Практический клиент для ADWS на Golang.

Репозиторий
552121 месяц назадПроверено Kitploit

Популярное

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

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

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

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

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

sopa

Практичный клиент для ADWS на Golang.

GitHub Release Go Version Code Size License Build Status Go Report Card GitHub Downloads Twitter Follow

Sopa реализует стек протоколов ADWS (MS-NNS + MC-NMF + SOAP), предоставляя следующие функции командной строки:

  • Поиск и извлечение объектов
    • query: выполняет поиск по LDAP-фильтру через цикл WS-Enumeration Enumerate + Pull с проекцией атрибутов, контролем области видимости (Base/OneLevel/Subtree) и пагинацией
    • get: получает один объект по DN через WS-Transfer Get
  • Жизненный цикл объектов
    • create: создаёт объекты через WS-Transfer ResourceFactory (встроенные типы: user, computer, group, OU, container; или пользовательские объекты из YAML-шаблона через IMDA AddRequest)
    • delete: удаляет объект по DN через WS-Transfer Delete
  • Редактирование атрибутов
    • attr: добавляет, заменяет или удаляет отдельные значения атрибутов существующего объекта через WS-Transfer Put
  • Управление учётными записями
    • set-password: устанавливает пароль учётной записи через MS-ADCAP SetPassword
    • change-password: изменяет пароль учётной записи (требуется старый пароль) через MS-ADCAP ChangePassword
  • Пользовательские действия ADCAP
    • translate-name: преобразует между форматами DN и канонического имени через TranslateName
    • groups: выводит членство в группах или группы авторизации участника через GetADPrincipalGroupMembership / GetADPrincipalAuthorizationGroup
    • members: перечисляет членов группы (опционально рекурсивно) через GetADGroupMember
    • optfeature: включает/отключает дополнительные функции AD (например, Корзину) через ChangeOptionalFeature
    • info: получает метаданные топологии (версия, домен, лес, список контроллеров домена) через GetVersion, GetADDomain, GetADForest, GetADDomainControllers
  • Метаданные службы
    • mex: получает метаданные конечной точки службы ADWS через неаутентифицированный запрос WS-MetadataExchange

Установка

$ go install github.com/Macmod/sopa/cmd/sopa@latest

Использование

# Auth flags (-u, -p, -d, -k, -H, -c, ...) are omitted for brevity - see Authentication section.

# Search objects by LDAP filter
$ sopa [auth_flags] query --dc <DC> --filter '(objectClass=*)'

# Fetch a single object by DN
$ sopa [auth_flags] get --dc <DC> --dn '<DN>'

# Delete an object by DN
$ sopa [auth_flags] delete --dc <DC> --dn '<DN>'

# Edit attribute values
$ sopa [auth_flags] attr add     --dc <DC> --dn '<DN>' --attr <ATTR> --value <VALUE>
$ sopa [auth_flags] attr replace --dc <DC> --dn '<DN>' --attr <ATTR> --value <VALUE>
$ sopa [auth_flags] attr delete  --dc <DC> --dn '<DN>' --attr <ATTR>

# Create objects
$ sopa [auth_flags] create user      --dc <DC> --name <CN> --pass <INITIAL_PASS>
$ sopa [auth_flags] create computer  --dc <DC> --name <CN>
$ sopa [auth_flags] create group     --dc <DC> --name <CN> --type GlobalSecurity
$ sopa [auth_flags] create ou        --dc <DC> --name <CN>
$ sopa [auth_flags] create container --dc <DC> --name <CN>
$ sopa [auth_flags] create custom    --dc <DC> --template <TEMPLATE.yaml>

# Set / change account passwords (MS-ADCAP)
$ sopa [auth_flags] set-password    --dc <DC> --dn '<DN>' --new <NEW_PASS>
$ sopa [auth_flags] change-password --dc <DC> --dn '<DN>' --old <OLD_PASS> --new <NEW_PASS>

# Translate DN <-> canonical name (MS-ADCAP)
# (этот вызов в основном бесполезен, но сохранён для полноты 😄)
$ sopa [auth_flags] translate-name --dc <DC> --offered DistinguishedName --desired CanonicalName '<DN>'

# Principal group memberships (MS-ADCAP)
$ sopa [auth_flags] groups --dc <DC> --dn '<DN>' --membership --authz

# Group members (MS-ADCAP)
$ sopa [auth_flags] members --dc <DC> --dn '<GROUP_DN>' --recursive

# Toggle optional AD feature, e.g. Recycle Bin (MS-ADCAP)
$ sopa [auth_flags] optfeature --dc <DC> --feature-id <FEATURE_GUID> --enable

# Topology info (MS-ADCAP)
$ sopa [auth_flags] info version --dc <DC>
$ sopa [auth_flags] info domain  --dc <DC>
$ sopa [auth_flags] info forest  --dc <DC>
$ sopa [auth_flags] info dcs     --dc <DC>

# ADWS service endpoint metadata (unauthenticated - auth flags not needed)
$ sopa mex --dc <DC>

Интерактивная оболочка

Запустите sopa без подкоманды, чтобы открыть интерактивную оболочку. Она использует одно соединение для всех команд и поддерживает автодополнение.

$ sopa --dc <DC> -u <USER> -p <PASS> -d <DOMAIN>

sopa v1.1.0
Connected  dc.corp.local  domain=corp.local  user=Administrator
Type 'help' for commands or 'exit' to quit.

[corp.local]> query --filter '(objectClass=user)' --attrs sAMAccountName
[corp.local]> get --dn 'CN=Administrator,CN=Users,DC=corp,DC=local'
[corp.local]> exit

Используйте exit, quit или Ctrl-D для выхода из оболочки.

Создание пользовательских объектов

Пример шаблона: examples/custom-create.example.yaml

Схема шаблона (YAML):

  • parentDN (string, required): DN контейнера
  • rdn (string, required): относительное DN нового объекта (например, CN=Foo)
  • attributes (list, required): каждый элемент имеет:
    • name (string, required): имя атрибута (cn или addata:cn)
    • type (string, optional): string|int|bool|base64|hex (или явный xsd:*), по умолчанию string
    • либо value (string) или values (list of strings)

Примечания:

  • Не включайте ad:relativeDistinguishedName или ad:container-hierarchy-parent в шаблон (они добавляются автоматически).
  • Значения hex преобразуются в xsd:base64Binary.
  • Чтобы явно установить пустую строку, используйте value: "".

Обнаружение контроллера домена и DNS

--dc принимает FQDN, IP-адрес или может быть опущен. Поскольку имя хоста контроллера домена иногда недоступно из DNS сети по умолчанию, настоятельно рекомендуется всегда указывать --dns <DC-IP>, чтобы sopa использовала собственный DNS-сервер контроллера домена для всех запросов:

# Option 1: let sopa resolve everything through the DC's DNS
$ sopa query --dns 192.168.1.10 -d corp.local -u user -p pass --filter '(objectClass=user)'

Когда --dc опущен и указан --domain, sopa автоматически обнаруживает контроллер домена, запрашивая SRV-записи:

_ldap._tcp.<domain>        (tried first)
_kerberos._tcp.<domain>    (fallback)

Используется цель записи с наивысшим приоритетом. Это требует, чтобы DNS-сервер, указанный в --dns, мог отвечать на эти SRV-запросы — собственный интегрированный DNS-сервер контроллера домена (если он есть) должен быть на это способен.

# Option 2: provide DC explicitly without Kerberos
$ sopa info version --dc 192.168.1.10 --domain corp.local -u user -p pass
Скачать инструмент