adaudit
Questo script PowerShell è progettato per eseguire un audit completo di Microsoft Active Directory, concentrandosi sull'identificazione di vulnerabilità di sicurezza e debolezze comuni. La sua esecuzione facilita l'individuazione delle aree critiche che necessitano di rafforzamento, rendendo così più solida la tua infrastruttura contro le tattiche prevalenti utilizzate negli attacchi di movimento laterale o di escalation dei privilegi che mirano ad Active Directory.
_____ ____ _____ _ _ _
| _ | \ | _ |_ _ _| |_| |_
| | | | | | | | . | | _|
|__|__|____/ |__|__|___|___|_|_|
by phillips321
Se hai degli one-liner PowerShell validi che potrebbero essere utilizzati nello script, fammi sapere. Cerco di mantenere questo script come un singolo file senza dipendenze da strumenti esterni (a parte ntdsutil e cmd.exe).
Eseguito direttamente su un DC con un account DA. Se non ti fidi del codice, ti suggerisco di leggerlo prima: vedrai che è tutto innocuo! (Ma non dovresti farlo comunque con il codice che scarichi dalla rete e poi esegui come DA?)
Cosa fa questo script
- Informazioni sul dispositivo
- Audit del dominio
- 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
- Audit delle relazioni di trust del dominio
- Audit degli account utente
- Get-InactiveAccounts
- Get-DisabledAccounts
- Get-LockedAccounts
- Get-AdminAccountChecks
- Get-NULLSessions
- Get-PrivilegedGroupAccounts
- Get-ProtectedUsers
- Audit delle informazioni sulle password
- Get-AccountPassDontExpire
- Get-UserPasswordNotChangedRecently
- Get-PasswordPolicy
- Get-PasswordQuality
- Scarica NTDS.dit
- Audit degli oggetti computer
- Audit dei GPO (e verifica di SYSVOL per le password)
- Get-GPOtoFile
- Get-GPOsPerOU
- Get-SYSVOLXMLS
- Get-GPOEnum
- Verifica delle autorizzazioni AD generiche dei gruppi
- Verifica dell'esistenza di LAPS nel dominio
- Verifica dell'esistenza di Criteri di autenticazione e Silos
- Get-AuthenticationPoliciesAndSilos
- Verifica di zone DNS non sicure
- Verifica di utenti e gruppi creati di recente
- Verifica delle vulnerabilità ADCS, ESC1,2,3,4 e 8.
- Verifica degli account kerberoastable di alto valore
- Verifica degli account ASREPRoastable
- Verifica delle autorizzazioni ACL pericolose su Utenti, Gruppi e Computer.
- Verifica delle impostazioni LDAP e LDAPs (firma, sessioni nulle, ecc.)
Argomenti da riga di comando
I seguenti switch possono essere utilizzati in combinazione:
-installdeps installa le funzionalità opzionali (DSInternals)
-hostdetails recupera il nome host e altre informazioni utili per l'audit
-domainaudit recupera informazioni sull'AD come il livello funzionale
-trusts recupera informazioni su eventuali trust di dominio
-accounts identifica problemi degli account come scaduti, disabilitati, ecc.
-passwordpolicy recupera le informazioni sui criteri delle password
-ntds scarica il file NTDS.dit utilizzando ntdsutil
-oldboxes identifica SO obsoleti come XP/2003 aggiunti al dominio
-gpo esporta i GPO in XML e HTML per analisi successive
-ouperms verifica problemi di autorizzazioni OU generiche
-laps verifica se LAPS è installato
-authpolsilos verifica l'esistenza di criteri di autenticazione e silos
-insecurednszone verifica le zone DNS non sicure
-recentchanges verifica gli utenti e i gruppi creati di recente (ultimi 30 giorni)
-adcs verifica le vulnerabilità ADCS, ESC1,2,3,4 e 8.
-acl verifica le autorizzazioni ACL pericolose su Utenti, Gruppi e Computer.
-spn verifica gli account kerberoastable di alto valore
-asrep verifica gli account ASREPRoastable
-ldapsecurity verifica molteplici problemi LDAP
-exclude permette di escludere verifiche specifiche quando si usa adaudit.ps1 -all -exclude ouperms,ntds,adcs"
-select permette di selezionare verifiche specifiche quando si usa adaudit.ps1 -all "gpo,ntds,acl"
-all esegue tutte le verifiche, es. AdAudit.ps1 -all
Supporto per domini figlio
Lo script ora supporta completamente sia i domini radice della foresta che i domini figlio:
- Schema Admins ed Enterprise Admins vengono gestiti con garbo nei domini figlio (dove esistono solo nella radice della foresta)
- Lo script viene completato con successo con messaggi informativi appropriati per gruppi mancanti (presenti solo nella foresta radice)
- Nessun arresto anomalo o errore bloccante a causa di gruppi mancanti in scenari di dominio figlio
- Testato e convalidato su domini figlio di Windows Server 2022
Gestione degli errori e robustezza
Lo script implementa una gestione completa degli errori in tutto il codice:
- Le funzioni di audit opzionali falliscono in modo elegante senza bloccare l'esecuzione dello script
- Gli errori di generazione dei report GPO (es. GPO corrotti) non impediscono il completamento degli altri audit
- Controlli difensivi prevengono eccezioni di file non trovato su file di output opzionali
- Messaggi chiari di errore/avviso/informazione distinguono tra fallimenti critici e scenari previsti
- I moduli opzionali mancanti (DSInternals, LAPS, AdmPwd.PS) non impediscono le funzioni di audit principali
Output XML Nessus
- Genera XML Nessus valido e correttamente formattato senza richiedere post-elaborazione
- Tutti i caratteri speciali sono correttamente escaped alla fonte (&, <, >, ", ')
- Il file di output è pronto per l'importazione diretta in Nessus senza modifiche manuali
- Elimina la necessità di passaggi di post-elaborazione o file di output aggiuntivi
Ambienti testati
- Convalidato su Windows Server 2022 (sia dominio radice della foresta che dominio figlio)
- Supporta Windows Server 2008R2 fino al 2022
- Gestisce con successo ambienti di produzione complessi con GPO corrotti e configurazioni miste