
LDAP-Abfragen ohne den Nervfaktor
Dieses Tool wurde entwickelt, um viele der Probleme zu lösen, die ich mit ldapsearch und der AD-Interaktion im Allgemeinen hatte. Insbesondere adressiert dieses Tool die folgenden Probleme:
Unfähigkeit, mehr als tausend Ergebnisse von AD zurückzugeben. Dieses Tool unterstützt LDAP-Record-Paging und umgeht andere AD-Fehler, um eine beliebige Anzahl von Datensätzen abrufen zu können.
Unfähigkeit, NTLM-Anmeldeinformationen intuitiv zur Authentifizierung zu verwenden. Sie können den NETBIOS-Domänennamen, Benutzernamen und das Passwort angeben, um sich an einem Windows-DC zu authentifizieren.
Unfähigkeit, die Anzahl der zurückgegebenen Datensätze, die Geschwindigkeit, mit der sie zurückgegeben werden, und die Anzahl der jeweils abgerufenen Datensätze präzise zu steuern. Dieses Tool ermöglicht Ihnen die Kontrolle über alle diese Parameter, einschließlich der Einfügung von Verzögerungen zwischen den einzelnen paginierten Aufrufen. Zudem können mehrere DCs für Round-Robin-Abfragen angegeben werden.
Unfähigkeit, die Ergebnisse in leicht verständlichen Formaten zurückzugeben. Dieses Tool unterstützt derzeit drei Formate:
Unfähigkeit, nur die Attribute zurückzugeben, die Sie interessieren. Dieses Tool ermöglicht es Ihnen, entweder alle Attribute zurückzugeben oder nur die gewünschten.
Unfähigkeit, eine Liste vorgefertigter, häufig verwendeter Abfragen zu speichern.
git clone ...
pip install -r requirements.txt
# 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 Kommandozeilen-Suche, die nicht nervt.
positional arguments:
attribute Rückzugebende Attribute (Standard: alle bei benutzerdefinierter Abfrage. Bei vorgefertigten Abfragen übergeben Sie "*", um alle Attribute statt der Standardattribute zu erhalten.)
optional arguments:
-h, --help show this help message and exit
--domain DOMAIN, -D DOMAIN
Domäne
--user USER, -U USER Benutzername
--password PASSWORD, -P PASSWORD
Passwort oder LM:NTLM-Hash
--server SERVER, -S SERVER
DC-IP oder auflösbarer Name
--basedn BASEDN, -b BASEDN
Base DN sollte normalerweise "dc=" sein, gefolgt vom vollständigen Domänennamen mit Punkten, die durch ",dc=" ersetzt werden. Bei Nichtangabe wird versucht, es vom LDAP-Server abzuleiten.
--search SEARCH, -s SEARCH
LDAP-Suchstring oder Zahl, die eine benutzerdefinierte Suche aus der Liste "Custom Searches" angibt. Verwenden Sie "-" für das Lesen von stdin.
--maxrecords MAXRECORDS, -m MAXRECORDS
Maximale Anzahl zurückzugebender Datensätze (Standard: 100), 0 bedeutet alle.
--pagesize PAGESIZE, -p PAGESIZE
Anzahl der Datensätze, die pro Abruf zurückgegeben werden (Standard: 10). Sollte <= max records sein.
--delay DELAY, -d DELAY
Verzögerung in Millisekunden zwischen Paging-Anfragen (Standard: 0).
--format {plain,json,json_tiny}, -f {plain,json,json_tiny}
Ausgabeformat (Standard: "plain"), mögliche Werte: plain, json, json_tiny
--encryption {1,2,3}, -n {1,2,3}
3) Verbindung zu 636 TLS (Standard); 2) Verbindung zu 389 ohne TLS, aber versuche STARTTLS mit Fallback (bei impacket nicht verfügbar); 1) Verbindung zu 389, Erzwinge Klartext
--advanced [ADVANCED [ADVANCED ...]], -a [ADVANCED [ADVANCED ...]]
Erweiterte Möglichkeit, Optionen für vorgefertigte Suchvorgänge zu übergeben, die nach zusätzlichen Eingaben fragen (bei mehreren Eingabeaufforderungen die Argumente in der Reihenfolge der Aufforderung übergeben)
--outfile OUTFILE, -o OUTFILE
Ausgabedatei (falls angegeben, wird die Ausgabe hierhin umgeleitet statt nach stdout [kann Kodierungsfehler unter Windows verhindern])
--engine {ldap3,impacket}, -e {ldap3,impacket}
Wählen Sie die zu verwendende Engine (Standard: "ldap3"). BEACHTEN SIE DIE OPSEC-HINWEISE!
Custom Searches:
1) Alle Benutzer abrufen
1.1) Bestimmten Benutzer abrufen (Sie werden nach dem Benutzernamen gefragt)
2) Alle Gruppen (und deren Mitglieder) abrufen
2.1) Bestimmte Gruppe abrufen (Sie werden nach dem Gruppennamen gefragt)
3) Alle Drucker abrufen
4) Alle Computer abrufen
4.1) Bestimmten Computer abrufen (Sie werden nach dem Computernamen gefragt)
5) Domänen-/Enterprise-Administratoren abrufen
6) Domänenvertrauensstellungen abrufen
7) Nach uneingeschränkten SPN-Delegationen suchen (Potentielle Privilegienausweitung)
8) Nach Konten suchen, bei denen PreAuth nicht erforderlich ist (ASREPROAST)
9) Nach Benutzer-SPNs suchen (KERBEROAST)
9.1) Nach einem bestimmten Benutzer-SPN suchen (Sie werden nach dem User Principal Name gefragt)
10) Alle sichtbaren LAPS-LA-Passwörter anzeigen
10.1) Nach einem bestimmten Workstation-LAPS-Passwort suchen (Sie werden nach dem Workstation-Namen gefragt)
*11) Nach häufigen Klartext-Passwort-Attributen suchen (UserPassword, UnixUserPassword, unicodePwd und msSFU30Password)
12) Alle Quest-Zwei-Faktor-Seeds anzeigen (falls Zugriff vorhanden)
13) Oracle "orclCommonAttribute" SSO-Passwort-Hash
*14) Oracle "userPassword" SSO-Passwort-Hash
15) SCCM-Server abrufen
16) Nach Konten suchen, bei denen kein Passwort erforderlich ist (PasswordNotRequired)
Mit Sternchen markierte Einträge wurden noch nie in einer Umgebung getestet, in der sie verifiziert werden konnten. Bitte teilen Sie mir mit, ob sie funktionieren.
Für diese Beispiele gehen wir von Folgendem aus:
NETBIOS NAME: EMP
FULL DOMAIN NAME: EXAMPLE.LOCAL
DC IPs: 10.0.0.2, 10.0.0.3
USERNAME: bob
PASSWORD: password
Alle Datensätze abrufen und nur das cn-Attribut zurückgeben:
python ldapper.py -D 'EMP' -U 'bob' -P 'password' -S '10.0.0.2,10.0.0.3' -m 0 -s '(cn=*)' cn
Details zu einem bestimmten Benutzer abrufen (Sie werden nach dem Benutzernamen gefragt):
python ldapper.py -D 'EMP' -U 'bob' -P 'password' -S '10.0.0.2,10.0.0.3' -m 0 -s '1.1'
Details zu einem bestimmten Benutzer abrufen (Benutzername übergeben, damit keine Eingabeaufforderung erscheint):
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'
Die ersten 100 Benutzer-Kerberos-SPNs abrufen, maximal fünf gleichzeitig, mit zwei Sekunden Verzögerung zwischen den Seitenanfragen im kompakten JSON-Format: