Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
sopa — Un client pratico per ADWS in Golang. | Kitploit
Strumenti/GitHubGitHub/macmod/sopa
RicognizioneRaccolta InformazioniPenetration TestingUtilità e FrameworkAutenticazioneRed Teaming
GitHubmacmod/sopa

sopa

Un client pratico per ADWS in Golang.

Vedi Repository
552121 mese faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

sopa

Un client pratico per ADWS in Golang.

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

Sopa implementa lo stack di protocollo ADWS (MS-NNS + MC-NMF + SOAP), esponendo le seguenti funzionalità da riga di comando:

  • Ricerca e recupero oggetti
    • query: esegue ricerche con filtro LDAP tramite il loop WS-Enumeration Enumerate + Pull con proiezione di attributi, controllo dello scope (Base/OneLevel/Subtree) e paginazione
    • get: recupera un singolo oggetto per DN tramite WS-Transfer Get
  • Ciclo di vita degli oggetti
    • create: crea oggetti tramite WS-Transfer ResourceFactory (tipi incorporati: user, computer, group, OU, container; oppure oggetti personalizzati da un template YAML tramite IMDA AddRequest)
    • delete: rimuove un oggetto per DN tramite WS-Transfer Delete
  • Modifica degli attributi
    • attr: aggiunge, sostituisce o rimuove singoli valori di attributo su un oggetto esistente tramite WS-Transfer Put
  • Gestione account
    • set-password: imposta una password dell'account tramite MS-ADCAP SetPassword
    • change-password: cambia una password dell'account (richiede la vecchia password) tramite MS-ADCAP ChangePassword
  • Azioni personalizzate ADCAP
    • translate-name: converte tra formati DN e nome canonico tramite TranslateName
    • groups: elenca le appartenenze ai gruppi o i gruppi di autorizzazione di un principal tramite GetADPrincipalGroupMembership / GetADPrincipalAuthorizationGroup
    • members: enumera i membri del gruppo (opzionalmente ricorsivi) tramite GetADGroupMember
    • optfeature: attiva/disattiva le funzionalità AD opzionali (es. Cestino) tramite ChangeOptionalFeature
    • info: recupera metadati di topologia (versione, dominio, foresta, elenco DC) tramite GetVersion, GetADDomain, GetADForest, GetADDomainControllers
  • Metadati del servizio
    • mex: recupera metadati dell'endpoint del servizio ADWS tramite una richiesta WS-MetadataExchange non autenticata

Installazione

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

Utilizzo

# I flag di autenticazione (-u, -p, -d, -k, -H, -c, ...) sono omessi per brevità - vedere la sezione Autenticazione.

# Cerca oggetti per filtro LDAP
$ sopa [auth_flags] query --dc <DC> --filter '(objectClass=*)'

# Recupera un singolo oggetto per DN
$ sopa [auth_flags] get --dc <DC> --dn '<DN>'

# Elimina un oggetto per DN
$ sopa [auth_flags] delete --dc <DC> --dn '<DN>'

# Modifica valori degli attributi
$ 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>

# Crea oggetti
$ 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>

# Imposta / cambia password dell'account (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>

# Traduci DN <-> nome canonico (MS-ADCAP)
# (questa chiamata è per lo più inutile ma mantenuta per completezza 😄)
$ sopa [auth_flags] translate-name --dc <DC> --offered DistinguishedName --desired CanonicalName '<DN>'

# Appartenenze ai gruppi del principal (MS-ADCAP)
$ sopa [auth_flags] groups --dc <DC> --dn '<DN>' --membership --authz

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

# Attiva/disattiva funzionalità AD opzionale, es. Cestino (MS-ADCAP)
$ sopa [auth_flags] optfeature --dc <DC> --feature-id <FEATURE_GUID> --enable

# Informazioni sulla topologia (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>

# Metadati dell'endpoint del servizio ADWS (non autenticato - i flag di autenticazione non sono necessari)
$ sopa mex --dc <DC>

Shell interattiva

Esegui sopa senza un sottocomando per aprire una shell interattiva. Riutilizza una singola connessione per tutti i comandi e fornisce completamento tramite tab.

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

sopa v1.1.0
Connesso a  dc.corp.local  domain=corp.local  user=Administrator
Digita 'help' per i comandi o 'exit' per uscire.

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

Usa exit, quit o Ctrl-D per uscire dalla shell.

Creazione di oggetti personalizzati

Esempio di template: examples/custom-create.example.yaml

Schema del template (YAML):

  • parentDN (stringa, obbligatorio): DN del contenitore
  • rdn (stringa, obbligatorio): DN relativo per il nuovo oggetto (es. CN=Foo)
  • attributes (lista, obbligatorio): ogni elemento ha:
    • name (stringa, obbligatorio): nome dell'attributo (cn o addata:cn)
    • type (stringa, opzionale): string|int|bool|base64|hex (oppure esplicito xsd:*), predefinito string
    • oppure value (stringa) o values (lista di stringhe)

Note:

  • Non includere ad:relativeDistinguishedName o ad:container-hierarchy-parent nel template (vengono inseriti automaticamente).
  • I valori hex vengono convertiti in xsd:base64Binary.
  • Per impostare esplicitamente una stringa vuota, usa value: "".

Scoperta del DC e DNS

--dc accetta un FQDN, un indirizzo IP, o può essere omesso. Poiché il nome host del DC a volte non è disponibile dal DNS predefinito della rete, si consiglia vivamente di passare sempre --dns <DC-IP> in modo che sopa utilizzi il proprio server DNS del DC per tutte le ricerche:

# Opzione 1: lascia che sopa risolva tutto tramite il DNS del DC
$ sopa query --dns 192.168.1.10 -d corp.local -u user -p pass --filter '(objectClass=user)'

Quando --dc viene omesso e --domain viene fornito, sopa scopre automaticamente un DC interrogando i record SRV:

_ldap._tcp.<domain>        (provato per primo)
_kerberos._tcp.<domain>    (fallback)

Viene utilizzato il target del record con priorità più alta. Ciò richiede che il server DNS indicato da --dns possa rispondere a quelle query SRV - il server DNS integrato del DC (quando presente) dovrebbe essere in grado di farlo.

Scarica lo strumento