
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.
Get-ADIDNSPermission