
Strumenti di exploit PowerShell per MachineAccountQuota e DNS

L'impostazione predefinita dell'attributo ms-DS-MachineAccountQuota di Active Directory consente a tutti gli utenti del dominio di aggiungere fino a 10 account macchina a un dominio. Powermad include un set di funzioni per sfruttare ms-DS-MachineAccountQuota senza collegare un sistema reale ad AD.
Questa funzione può restituire i valori popolati in un attributo di un account macchina.
Get-MachineAccountAttribute -MachineAccount test -Attribute discriptionQuesta funzione sfrutta la proprietà ms-DS-CreatorSID sugli account macchina per restituire un elenco di nomi utente o SID e l'account macchina associato. La proprietà ms-DS-CreatorSID viene popolata solo quando un account macchina viene creato da un utente non privilegiato.
Get-MachineAccountCreatorQuesta funzione può disabilitare un account macchina aggiunto tramite New-MachineAccount. Questa funzione dovrebbe essere utilizzata con lo stesso utente che ha creato l'account macchina.
Disable-MachineAccount -MachineAccount testQuesta funzione può abilitare un account macchina disabilitato tramite Disable-MachineAccount. Questa funzione dovrebbe essere utilizzata con lo stesso utente che ha creato l'account macchina.
Enable-MachineAccount -MachineAccount testQuesta funzione può aggiungere un nuovo account macchina direttamente tramite una richiesta di aggiunta LDAP a un controller di dominio, senza influenzare lo stato di connessione del sistema host ad Active Directory.
La richiesta di aggiunta LDAP è modellata sulla richiesta di aggiunta utilizzata quando si unisce un sistema a un dominio. Vengono impostati i seguenti attributi (per lo più convalidati dal DC):
Un nuovo account macchina può essere utilizzato per attività come sfruttare i privilegi concessi al gruppo 'Domain Computers' o come account aggiuntivo per l'enumerazione del dominio, exploit DNS, ecc. Per impostazione predefinita, gli account macchina non hanno il permesso di accesso locale. È possibile utilizzare strumenti/client che accettano direttamente credenziali di rete o tramite l'uso di 'runas /netonly' o Invoke-UserImpersonation/Invoke-RevertToSelf di @harmj0y inclusi in PowerView.
Gli account macchina creati con utenti standard avranno mS-DS-CreatorSID popolato con il SID dell'utente standard.
Si noti che ms-DS-MachineAccountQuota non fornisce la possibilità agli utenti autenticati di eliminare gli account macchina aggiunti da AD. Sarà necessario acquisire privilegi elevati per rimuovere l'account se si desidera evitare di delegare l'attività al proprio client.
Aggiungi un nuovo account macchina
New-MachineAccount -MachineAccount test
Utilizza l'account aggiunto con runas /netonly
runas /netonly /user:domain\test$ powershell
Questa funzione rimuove un account macchina con un account privilegiato.
Remove-MachineAccount -MachineAccount test -Credential $domainadminQuesta funzione può popolare alcuni attributi per un account aggiunto tramite New-MachineAccount, se un utente ha accesso in scrittura. Questa funzione dovrebbe essere utilizzata con lo stesso utente che ha creato l'account macchina.
Ecco un elenco di alcuni dei soliti attributi con accesso in scrittura abilitato:
Rimuovi il '$' finale dall'attributo SamAccountName
Set-MachineAccountAttribute -MachineName test -Attribute SamAccountName -Value test
Utilizza l'account modificato con runas /netonly
runas /netonly /user:domain\test powershell
Questa funzione sfrutta New-MachineAccount per creare ricorsivamente quanti più account macchina possibile da un singolo account non privilegiato tramite MachineAccountQuota. Vedi il seguente post del blog per i dettagli:
Per impostazione predefinita, gli utenti autenticati hanno il permesso 'Crea tutti gli oggetti figlio' sulla zona DNS integrata in Active Directory (ADIDNS). La maggior parte dei record che non esistono attualmente in una zona AD possono essere aggiunti/eliminati.
Questa funzione può essere utilizzata per aggiungere/eliminare record DNS dinamici se l'impostazione predefinita di aggiornamenti dinamici sicuri abilitati è configurata su un controller di dominio. I record A, AAAA, CNAME, MX, PTR, SRV e TXT sono attualmente supportati. Invoke-DNSUpdate è modellato sullo strumento nsupdate di BIND quando si utilizzano le opzioni '-g' o 'gsstsig'.
Aggiungi un record A
Invoke-DNSUpdate -DNSType A -DNSName www -DNSData 192.168.100.125
Elimina un record A
Invoke-DNSUpdate -DNSType A -DNSName www.test.local
Aggiungi un record SRV
Invoke-DNSUpdate -DNSType SRV -DNSName _autodiscover._tcp.test.local -DNSData system.test.local -DNSPriority 100 -DNSWeight 80 -DNSPort 443
Questa funzione può contrassegnare come tombstone un nodo ADIDNS.
Questa funzione può trasformare un nodo contrassegnato come tombstone in un record valido.
Enable-ADIDNSNode -Node *Questa funzione può restituire i valori popolati in un attributo di un nodo DNS.
Get-ADIDNSNodeAttribute -Node test -Attribute dnsRecordQuesta funzione può restituire il proprietario di un nodo ADIDNS.
Get-ADIDNSNodeOwner -Node testQuesta funzione ottiene la DACL di un nodo o di una zona ADIDNS.
Ottieni la DACL per la zona predefinita integrata in Active Directory da un sistema collegato al dominio.
Get-ADIDNSPermission
Ottieni la DACL per un nodo DNS chiamato test da un sistema collegato al dominio.
Get-ADIDNSPermission -Node test
Questa funzione può restituire le zone ADIDNS.
Get-ADIDNSZoneQuesta funzione aggiunge un ACE alla DACL di un nodo o di una zona DNS.
Grant-ADIDNSPermission -Node * -Principal "authenticated users"Questa funzione aggiunge un nodo DNS a una zona DNS integrata in Active Directory (ADIDNS) tramite una richiesta di aggiunta LDAP crittografata.
New-ADIDNSNode -Node * -TombstoneQuesta funzione crea un array di byte valido per l'attributo dnsRecord.
New-DNSRecordArray -Data 192.168.0.1Questa funzione ottiene il numero di serie SOA corrente per una zona DNS e lo incrementa dell'importo impostato.
New-SOASerialNumberArrayQuesta funzione può rinominare un nodo DNS.
Rename-ADIDNSNode -Node test -NodeNew test2Questa funzione può rimuovere un nodo DNS.
Remove-ADIDNSNode -Node *Questa funzione rimuove un ACE dalla DACL di un nodo o di una zona DNS.
Revoke-ADIDNSPermission -Node * -Principal user1 -Access GenericAllQuesta funzione può aggiungere, popolare o sovrascrivere valori in un attributo di un nodo DNS.
Set-ADIDNSNodeAttribute -Node test -Attribute description -Value "do not delete"Questa funzione può impostare il proprietario di un nodo DNS. Si noti che è richiesto un token con SeRestorePrivilege.
Set-ADIDNSNodeOwner -Node test -Principal user1Questa funzione può generare chiavi Kerberos AES 256 e 128 a partire da un nome utente e una password noti. Può essere utilizzata per testare pass-the-hash in Invoke-DNSUpdate.
Get-KerberosAESKey -Salt TEST.LOCALuser