Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
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
LDAPPER — Query LDAP senza il fastidio | Kitploit
Strumenti/GitHubGitHub/shellster/ldapper
Escalation di PrivilegiRicognizioneAttacchi alle PasswordRaccolta InformazioniPenetration TestingAutenticazione
GitHubshellster/ldapper

LDAPPER

Query LDAP senza il fastidio

Vedi Repository
114171 anno 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

Introduzione

Questo strumento è stato scritto per risolvere molti dei problemi che riscontravo con ldapsearch e l'interazione con AD in generale. In particolare, lo strumento affronta i seguenti problemi:

  1. Impossibilità di restituire più di mille risultati da AD. Questo strumento supporta la paginazione dei record LDAP e aggira altri bug di AD per consentire il recupero di un numero arbitrario di record.

  2. Impossibilità di utilizzare le credenziali NTLM in modo intuitivo per l'autenticazione. Puoi fornire il nome del dominio NETBIOS, il nome utente e la password per autenticarti a un Windows DC.

  3. Impossibilità di controllare con precisione il numero di record restituiti, la velocità con cui vengono restituiti e il numero di record prelevati alla volta. Questo strumento ti consente di controllare tutti questi elementi, inclusa l'aggiunta di ritardi tra ogni chiamata paginata. Inoltre, è possibile specificare più DC per il round-robin delle query.

  4. Impossibilità di restituire i risultati in forme facilmente fruibili. Questo strumento supporta attualmente tre formati:

  • plain: una versione testuale leggibile dei dati con sottoelementi indentati.
  • json: output JSON, con spazi bianchi extra per una facile leggibilità.
  • json_tiny: output JSON con tutti gli spazi bianchi extra rimossi.
  1. Impossibilità di restituire solo gli attributi che ti interessano. Questo strumento ti consente di restituire tutti gli attributi o solo quelli che desideri.

  2. Impossibilità di avere un elenco di query predefinite e comunemente utilizzate salvato.

Installazione

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

Istruzioni

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 ...]]

    Ricerca da riga di comando AD LDAP che non fa schifo.

    argomenti posizionali:
      attribute             Attributi da restituire (predefinito: tutti per query personalizzate. Per query predefinite, passa "*" per ottenere tutti gli attributi invece di quelli predefiniti.)

    argomenti opzionali:
      -h, --help            mostra questo messaggio di aiuto ed esci
      --domain DOMAIN, -D DOMAIN
                            Dominio
      --user USER, -U USER  Nome utente
      --password PASSWORD, -P PASSWORD
                            Password o hash in formato LM:NTLM
      --server SERVER, -S SERVER
                            IP del DC o nome risolvibile
      --basedn BASEDN, -b BASEDN
                            Base DN dovrebbe essere tipicamente "dc=", seguito dal nome di dominio lungo con i punti sostituiti da ",dc=". Se non fornito, tenterà di derivarlo dal server LDAP.
      --search SEARCH, -s SEARCH
                            Stringa di ricerca LDAP o numero che indica una ricerca personalizzata dall'elenco "Ricerche personalizzate". Usa "-" per leggere da stdin.
      --maxrecords MAXRECORDS, -m MAXRECORDS
                            Numero massimo di record da restituire (predefinito: 100), 0 significa tutti.
      --pagesize PAGESIZE, -p PAGESIZE
                            Numero di record da restituire per ogni prelievo (predefinito: 10). Dovrebbe essere <= max records.
      --delay DELAY, -d DELAY
                            Ritardo in millisecondi tra le richieste di paginazione (predefinito: 0).
      --format {plain,json,json_tiny}, -f {plain,json,json_tiny}
                            Formato di output (predefinito: "plain"), può essere: plain, json, json_tiny
      --encryption {1,2,3}, -n {1,2,3}
                            3) Connessione a 636 TLS (predefinito); 2) Connessione 389 senza TLS, ma tenta STARTTLS e fallback se necessario (non disponibile con impacket); 1) Connessione a 389, forza testo non crittografato
      --advanced [ADVANCED [ADVANCED ...]], -a [ADVANCED [ADVANCED ...]]
                            Metodo avanzato per passare opzioni per ricerche predefinite che richiedono input aggiuntivo (per più richieste, passa gli argomenti nell'ordine delle richieste)
      --outfile OUTFILE, -o OUTFILE
                            File di output (se specificato, l'output verrà indirizzato qui invece che su stdout [Può prevenire errori di codifica in Windows])
      --engine {ldap3,impacket}, -e {ldap3,impacket}
                            Scegli il motore da utilizzare (predefinito: "ldap3"). VEDI NOTE OPSEC!

    Ricerche personalizzate:
              1) Ottieni tutti gli utenti
                      1.1) Ottieni un utente specifico (ti verrà chiesto il nome utente)
              2) Ottieni tutti i gruppi (e i loro membri)
                      2.1) Ottieni un gruppo specifico (ti verrà chiesto il nome del gruppo)
              3) Ottieni tutte le stampanti
              4) Ottieni tutti i computer
                      4.1) Ottieni un computer specifico (ti verrà chiesto il nome del computer)
              5) Ottieni gli amministratori di dominio/impresa
              6) Ottieni i trust di dominio
              7) Cerca delegazioni SPN senza vincoli (potenziale escalation privilegi)
              8) Cerca account in cui PreAuth non è richiesto (ASREPROAST)
              9) Cerca SPN utente (KERBEROAST)
                      9.1) Cerca SPN utente specifico (ti verrà chiesto il nome principale dell'utente)
             10) Mostra tutte le password LAPS LA (che puoi vedere)
                     10.1) Cerca la password LAPS di una workstation specifica (ti verrà chiesto il nome della workstation)
            *11) Cerca attributi di password in testo normale comuni (UserPassword, UnixUserPassword, unicodePwd e msSFU30Password)
             12) Mostra tutti i seed per l'autenticazione a due fattori Quest (se hai accesso)
             13) Hash della password SSO Oracle "orclCommonAttribute"
            *14) Hash della password SSO Oracle "userPassword"
             15) Ottieni server SCCM
             16) Cerca account per cui la password non è richiesta (PasswordNotRequired)

    Gli elementi contrassegnati da asterisco non sono mai stati testati in un ambiente in cui potessero essere verificati, quindi per favore fatemi sapere se funzionano.

Esempio

Ai fini di questi esempi, supponiamo quanto segue:

root@kitploit:~
NOME NETBIOS: EMP
NOME DOMINIO COMPLETO: EXAMPLE.LOCAL
IP DC: 10.0.0.2, 10.0.0.3
NOME UTENTE: bob
PASSWORD: password

Recupera tutti i record restituendo solo l'attributo 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

Recupera i dettagli su un utente specifico (ti verrà chiesto il nome utente):

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'

Recupera i dettagli su un utente specifico (passa il nome utente in modo da non ricevere richieste):

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'

Recupera i primi 100 SPN Kerberos degli utenti, non più di cinque alla volta, con due secondi tra ogni richiesta di pagina in formato JSON compatto:

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

Recupera manualmente tutti i record delle stampanti e mostra tutti gli attributi correlati:

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)'

Cerca delegazioni SPN senza vincoli senza sforzo:

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

Avvertenze OPSEC

  1. Quando si utilizza il motore Impacket e non si fornisce un baseDN, lo strumento tenterà un'autenticazione SMB e una connessione al controller di dominio per acquisire il nome NETBIOS del dominio, al fine di derivare il baseDN. Questo comportamento potrebbe portare a un rilevamento in un ambiente altamente sensibile. Non utilizzare Impacket in un ambiente del genere, oppure specificare sempre il baseDN.

  2. Impacket effettuerà una connessione LDAPS completa o una connessione completamente non crittografata. Attualmente non può utilizzare STARTTLS, quindi se una connessione LDAP in chiaro potrebbe essere rilevata, tenta solo una connessione TLS completa o non utilizzare il motore Impacket.

  3. Impacket non fornisce il massimo controllo sulla velocità di prelievo dei record. Pertanto, l'opzione "--delay" è solo parzialmente implementata. Se il ritardo nel prelievo dei record è critico, non utilizzare il motore Impacket.

Riferimenti

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

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

Abuso di deleghe senza vincoli: http://www.harmj0y.net/blog/activedirectory/the-most-dangerous-user-right-you-probably-have-never-heard-of/

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

Dati token secondo fattore Qwest/Defender/Oneidentity: http://support-public.cfm.quest.com/43565_Defender_5.9_AdminGuide.pdf

Password in testo comune: https://www.blackhillsinfosec.com/domain-goodness-learned-love-ad-explorer/

Registro delle modifiche

Versione 1.7

  1. Controllo degli account che non necessitano di password, per gentile concessione di @nyxgeek.

Versione 1.6

  1. Aggiunto Impacket come alternativa a LDAP3 perché LDAP3 non funziona sempre (e anche Impacket non funziona sempre).

  2. Rimossa la selezione di più server LDAP in quanto questa funzionalità non è realmente necessaria e non esiste realmente in Impacket.

  3. Rifattorizzato tutto.

Versione 1.5

  1. Corretto un bug minore di paginazione che poteva causare la mancata restituzione di alcuni record.

Versione 1.4

  1. Aggiunta la funzione di ricerca SCCM.

  2. Aggiunta l'opzione per il file di output.

  3. Risolti alcuni problemi di formattazione dell'output.

Versione 1.3

  1. Aggiunta la possibilità di ricevere la query LDAP da stdin.

  2. Racchiude automaticamente la query tra parentesi se l'utente non lo ha già fatto.

  3. Corretto un bug di supporto per Python 2.

Piani futuri

Se hai delle enumerazioni di ricerca comuni che utilizzi, fammelo sapere così posso aggiungerle all'elenco.

  1. Forse creare una ricerca/analisi offline dei dati precedentemente recuperati?

...

Crediti e contatti

Scritto da Shelby Spencer (shellster). Contattami per bug o richieste di funzionalità.

Scarica lo strumento