adaudit
Dieses PowerShell-Skript wurde entwickelt, um eine umfassende Überprüfung von Microsoft Active Directory durchzuführen, wobei der Schwerpunkt auf der Identifizierung typischer Sicherheitslücken und Schwachstellen liegt. Die Ausführung erleichtert das Erkennen kritischer Bereiche, die einer Verstärkung bedürfen, und stärkt so Ihre Infrastruktur gegen gängige Taktiken der Lateral-Bewegung und Privilegienausweitung, die auf Active Directory abzielen.
_____ ____ _____ _ _ _
| _ | \ | _ |_ _ _| |_| |_
| | | | | | | | . | | _|
|__|__|____/ |__|__|___|___|_|_|
by phillips321
Wenn Sie brauchbare PowerShell-One-Liner haben, die im Skript verwendet werden könnten, lassen Sie es mich bitte wissen. Ich versuche, dieses Skript als einzelne Datei ohne Abhängigkeiten von externen Tools (außer ntdsutil und cmd.exe) zu halten.
Führen Sie es direkt auf einem DC mit einem DA aus. Wenn Sie dem Code nicht vertrauen, empfehle ich, ihn zuerst zu lesen – Sie werden sehen, dass alles harmlos ist! (Aber sollten Sie das nicht ohnehin bei Code tun, den Sie aus dem Netz herunterladen und dann als DA ausführen?)
Was dieses Skript macht
- Geräteinformationen
- Domänenprüfung
- Get-LastWUDate
- Get-DCEval
- Get-TimeSource
- Get-PrivilegedGroupMembership
- Get-MachineAccountQuota
- Get-DefaultDomainControllersPolicy
- Get-SMB1Support
- Get-FunctionalLevel
- Get-DCsNotOwnedByDA
- Get-ReplicationType
- Get-RecycleBinState
- Get-CriticalServicesStatus
- Get-RODC
- Prüfung der Domänenvertrauensstellungen
- Prüfung von Benutzerkonten
- Get-InactiveAccounts
- Get-DisabledAccounts
- Get-LockedAccounts
- Get-AdminAccountChecks
- Get-NULLSessions
- Get-PrivilegedGroupAccounts
- Get-ProtectedUsers
- Prüfung von Passwortinformationen
- Get-AccountPassDontExpire
- Get-UserPasswordNotChangedRecently
- Get-PasswordPolicy
- Get-PasswordQuality
- Exportiert die NTDS.dit-Datei
- Prüfung von Computerobjekten
- GPO-Prüfung (und Überprüfung von SYSVOL auf Passwörter)
- Get-GPOtoFile
- Get-GPOsPerOU
- Get-SYSVOLXMLS
- Get-GPOEnum
- Überprüfung generischer Gruppen-AD-Berechtigungen
- Prüfung auf Vorhandensein von LAPS in der Domäne
- Prüfung auf Vorhandensein von Authentifizierungsrichtlinien und Silos
- Get-AuthenticationPoliciesAndSilos
- Prüfung auf unsichere DNS-Zonen
- Prüfung auf neu erstellte Benutzer und Gruppen
- Prüfung auf ADCS-Schwachstellen (ESC1,2,3,4 und 8)
- Prüfung auf hochwertige kerberoastbare Konten
- Prüfung auf ASREPRoastbare Konten
- Prüfung auf gefährliche ACL-Berechtigungen für Benutzer, Gruppen und Computer
- Prüfung der LDAP- und LDAPs-Einstellungen (Signierung, Null-Sessions usw.)
Laufzeitargumente
Die folgenden Schalter können kombiniert verwendet werden:
-installdeps installiert optionale Features (DSInternals)
-hostdetails ruft Hostname und andere nützliche Prüfungsinformationen ab
-domainaudit ruft Informationen über die AD (z. B. funktionale Ebene) ab
-trusts ruft Informationen über Domänenvertrauensstellungen ab
-accounts identifiziert Kontoprobleme wie abgelaufene, deaktivierte usw.
-passwordpolicy ruft Informationen zur Passwortrichtlinie ab
-ntds exportiert die NTDS.dit-Datei mit ntdsutil
-oldboxes identifiziert veraltete Betriebssysteme wie XP/2003, die der Domäne beigetreten sind
-gpo exportiert die GPOs als XML und HTML für spätere Analysen
-ouperms prüft generische OU-Berechtigungsprobleme
-laps prüft, ob LAPS installiert ist
-authpolsilos prüft auf Vorhandensein von Authentifizierungsrichtlinien und Silos
-insecurednszone prüft auf unsichere DNS-Zonen
-recentchanges prüft auf neu erstellte Benutzer und Gruppen (letzte 30 Tage)
-adcs prüft auf ADCS-Schwachstellen (ESC1,2,3,4 und 8)
-acl prüft auf gefährliche ACL-Berechtigungen für Benutzer, Gruppen und Computer
-spn prüft auf hochwertige kerberoastbare Konten
-asrep prüft auf ASREPRoastbare Konten
-ldapsecurity prüft auf mehrere LDAP-Probleme
-exclude ermöglicht den Ausschluss bestimmter Prüfungen bei Verwendung von adaudit.ps1 -all -exclude ouperms,ntds,adcs
-select ermöglicht die Auswahl bestimmter Prüfungen bei Verwendung von adaudit.ps1 -all "gpo,ntds,acl"
-all führt alle Prüfungen aus, z. B. AdAudit.ps1 -all
Unterstützung von Unterdomänen
Das Skript unterstützt jetzt sowohl Stammdomänen der Gesamtstruktur als auch Unterdomänen vollständig:
- Schema-Admins und Organisations-Admins werden in Unterdomänen ordnungsgemäß behandelt (da sie nur in der Gesamtstruktur-Stammdomäne existieren)
- Das Skript wird erfolgreich mit angemessenen Informationsmeldungen für nicht vorhandene, reine Gesamtstrukturstammgruppen abgeschlossen
- Keine Abstürze oder blockierende Fehler aufgrund fehlender Gruppen in Unterdomänenszenarien
- Getestet und validiert auf Windows Server 2022-Unterdomänen
Fehlerbehandlung und Robustheit
Das Skript implementiert eine umfassende Fehlerbehandlung:
- Optionale Prüffunktionen scheitern ordnungsgemäß, ohne die Skriptausführung zu blockieren
- Fehler bei der GPO-Berichterstellung (z. B. beschädigte GPOs) verhindern nicht den Abschluss anderer Prüfungen
- Defensive Prüfungen verhindern Ausnahmen wegen nicht gefundener Dateien bei optionalen Ausgabedateien
- Klare Fehler-/Warnungs-/Informationsmeldungen unterscheiden zwischen kritischen Fehlern und erwarteten Szenarien
- Fehlende optionale Module (DSInternals, LAPS, AdmPwd.PS) verhindern nicht die Kernprüffunktionen
Nessus XML-Ausgabe
- Erzeugt gültiges, ordnungsgemäß formatiertes Nessus-XML ohne Nachbearbeitung
- Alle Sonderzeichen werden bereits an der Quelle korrekt maskiert (&, <, >, ", ')
- Die Ausgabedatei ist direkt für den Import in Nessus bereit, ohne manuelle Änderungen
- Macht Nachbearbeitungsschritte oder zusätzliche Ausgabedateien überflüssig
Getestete Umgebungen
- Validierte Umgebungen: Windows Server 2022 (sowohl Gesamtstruktur-Stamm- als auch Unterdomänen)
- Unterstützt Windows Server 2008R2 bis 2022
- Erfolgreiche Handhabung komplexer Produktionsumgebungen mit beschädigten GPOs und gemischten Konfigurationen