Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
sopa — Un client pratique pour ADWS en Golang. | Kitploit
Outils/GitHubGitHub/macmod/sopa
ReconnaissanceCollecte d'InformationsTests d'IntrusionUtilitaires et FrameworksAuthentificationRed Teaming
GitHubmacmod/sopa

sopa

Un client pratique pour ADWS en Golang.

Voir le dépôt
55212il y a 1 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

sopa

Un client pratique pour ADWS en Golang.

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

Sopa implémente la pile de protocoles ADWS (MS-NNS + MC-NMF + SOAP), exposant les fonctionnalités en ligne de commande suivantes :

  • Recherche et récupération d'objets
    • query : exécute des recherches par filtre LDAP via une boucle WS-Enumeration Enumerate + Pull avec projection d'attributs, contrôle de portée (Base/OneLevel/Subtree) et pagination
    • get : récupère un seul objet par DN via WS-Transfer Get
  • Cycle de vie des objets
    • create : crée des objets via WS-Transfer ResourceFactory (types intégrés : user, computer, group, OU, container ; ou objets personnalisés à partir d'un modèle YAML via IMDA AddRequest)
    • delete : supprime un objet par DN via WS-Transfer Delete
  • Édition d'attributs
    • attr : ajoute, remplace ou supprime des valeurs d'attributs individuelles sur un objet existant via WS-Transfer Put
  • Gestion des comptes
    • set-password : définit un mot de passe de compte via MS-ADCAP SetPassword
    • change-password : change un mot de passe de compte (nécessite l'ancien mot de passe) via MS-ADCAP ChangePassword
  • Actions personnalisées ADCAP
    • translate-name : convertit entre les formats DN et nom canonique via TranslateName
    • groups : liste les appartenances aux groupes ou les groupes d'autorisation d'un principal via GetADPrincipalGroupMembership / GetADPrincipalAuthorizationGroup
    • members : énumère les membres d'un groupe (optionnellement récursif) via GetADGroupMember
    • optfeature : active/désactive les fonctionnalités AD optionnelles (ex. Corbeille) via ChangeOptionalFeature
    • info : récupère les métadonnées de topologie (version, domaine, forêt, liste des DC) via GetVersion, GetADDomain, GetADForest, GetADDomainControllers
  • Métadonnées de service
    • mex : récupère les métadonnées du point de terminaison du service ADWS via une requête WS-MetadataExchange non authentifiée

Installation

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

Utilisation

# Les flags d'authentification (-u, -p, -d, -k, -H, -c, ...) sont omis par souci de concision - voir la section Authentification.

# Rechercher des objets par filtre LDAP
$ sopa [auth_flags] query --dc <DC> --filter '(objectClass=*)'

# Récupérer un seul objet par DN
$ sopa [auth_flags] get --dc <DC> --dn '<DN>'

# Supprimer un objet par DN
$ sopa [auth_flags] delete --dc <DC> --dn '<DN>'

# Modifier les valeurs d'attributs
$ 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>

# Créer des objets
$ 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>

# Définir / changer les mots de passe des comptes (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>

# Traduire DN <-> nom canonique (MS-ADCAP)
# (cet appel est surtout inutile mais conservé pour l'exhaustivité 😄)
$ sopa [auth_flags] translate-name --dc <DC> --offered DistinguishedName --desired CanonicalName '<DN>'

# Appartenances aux groupes d'un principal (MS-ADCAP)
$ sopa [auth_flags] groups --dc <DC> --dn '<DN>' --membership --authz

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

# Activer/désactiver une fonctionnalité AD optionnelle, ex. Corbeille (MS-ADCAP)
$ sopa [auth_flags] optfeature --dc <DC> --feature-id <FEATURE_GUID> --enable

# Informations de topologie (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>

# Métadonnées du point de terminaison du service ADWS (non authentifié - les flags d'auth ne sont pas nécessaires)
$ sopa mex --dc <DC>

Shell interactif

Lancez sopa sans sous-commande pour ouvrir un shell interactif. Il réutilise une seule connexion pour toutes les commandes et fournit l'autocomplétion par tabulation.

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

sopa v1.1.0
Connecté  dc.corp.local  domaine=corp.local  utilisateur=Administrator
Tapez 'help' pour les commandes ou 'exit' pour quitter.

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

Utilisez exit, quit ou Ctrl-D pour quitter le shell.

Création d'objets personnalisés

Exemple de modèle : examples/custom-create.example.yaml

Schéma du modèle (YAML) :

  • parentDN (chaîne, obligatoire) : DN du conteneur
  • rdn (chaîne, obligatoire) : DN relatif pour le nouvel objet (ex. CN=Foo)
  • attributes (liste, obligatoire) : chaque élément a :
    • name (chaîne, obligatoire) : nom de l'attribut (cn ou addata:cn)
    • type (chaîne, optionnel) : string|int|bool|base64|hex (ou explicite xsd:*), par défaut string
    • soit value (chaîne) soit values (liste de chaînes)

Remarques :

  • N'incluez pas ad:relativeDistinguishedName ou ad:container-hierarchy-parent dans le modèle (ils sont injectés automatiquement).
  • Les valeurs hex sont converties en xsd:base64Binary.
  • Pour définir explicitement une chaîne vide, utilisez value: "".

Découverte du DC et DNS

--dc accepte un FQDN, une adresse IP, ou peut être omis. Comme le nom d'hôte du DC n'est parfois pas disponible depuis le DNS par défaut du réseau, il est fortement recommandé de toujours passer --dns <DC-IP> afin que sopa utilise le propre serveur DNS du DC pour toutes les résolutions :

# Option 1 : laisser sopa tout résoudre via le DNS du DC
$ sopa query --dns 192.168.1.10 -d corp.local -u user -p pass --filter '(objectClass=user)'

Lorsque --dc est omis et que --domain est fourni, sopa découvre un DC automatiquement en interrogeant les enregistrements SRV :

_ldap._tcp.<domain>        (essayé en premier)
_kerberos._tcp.<domain>    (solution de repli)
Télécharger l’outil