<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT**](https://opensea.io/collection/the-peass-family) esclusivi
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
**Active Directory** funge da tecnologia fondamentale, consentendo agli **amministratori di rete** di creare e gestire in modo efficiente **domini**, **utenti** e **oggetti** all'interno di una rete. È progettato per scalare, facilitando l'organizzazione di un numero esteso di utenti in **gruppi** e **sottogruppi** gestibili, controllando nel contempo i **diritti di accesso** a vari livelli.
La struttura di **Active Directory** è composta da tre livelli principali: **domini**, **alberi** e **foreste**. Un **dominio** comprende una raccolta di oggetti, come **utenti** o **dispositivi**, che condividono un database comune. Gli **alberi** sono gruppi di questi domini collegati da una struttura condivisa, e una **foresta** rappresenta la collezione di alberi multipli, interconnessi tramite **relazioni di trust**, formando il livello più alto della struttura organizzativa. Specifici **diritti di accesso** e **comunicazione** possono essere designati a ciascuno di questi livelli.
1.**Directory** - Contiene tutte le informazioni relative agli oggetti di Active Directory.
2.**Oggetto** - Indica le entità all'interno della directory, inclusi **utenti**, **gruppi** o **cartelle condivise**.
3.**Dominio** - Serve come contenitore per gli oggetti della directory, con la capacità per più domini di coesistere all'interno di una **foresta**, ognuno mantenendo la propria raccolta di oggetti.
4.**Albero** - Un raggruppamento di domini che condividono un dominio radice comune.
5.**Foresta** - Il vertice della struttura organizzativa in Active Directory, composta da diversi alberi con **relazioni di trust** tra di loro.
**Active Directory Domain Services (AD DS)** comprende una serie di servizi fondamentali per la gestione centralizzata e la comunicazione all'interno di una rete. Questi servizi comprendono:
1.**Servizi di dominio** - Centralizza l'archiviazione dei dati e gestisce le interazioni tra **utenti** e **domini**, inclusi le funzionalità di **autenticazione** e **ricerca**.
2.**Servizi di certificazione** - Sovrintende alla creazione, distribuzione e gestione di **certificati digitali** sicuri.
3.**Servizi di directory leggeri** - Supporta le applicazioni abilitate per la directory tramite il protocollo **LDAP**.
4.**Servizi di federazione della directory** - Fornisce capacità di **accesso singolo** per autenticare gli utenti su più applicazioni web in una singola sessione.
5.**Gestione dei diritti** - Aiuta a proteggere il materiale con copyright regolando la sua distribuzione e utilizzo non autorizzati.
6.**Servizio DNS** - Cruciale per la risoluzione dei **nomi di dominio**.
Puoi consultare [https://wadcoms.github.io/](https://wadcoms.github.io) per avere una rapida panoramica dei comandi che puoi eseguire per enumerare/sfruttare un AD.
* Scansiona la rete, trova macchine e porte aperte e cerca di **sfruttare vulnerabilità** o **estrarre credenziali** da esse (ad esempio, [le stampanti potrebbero essere bersagli molto interessanti](ad-information-in-printers.md)).
* L'enumerazione del DNS potrebbe fornire informazioni su server chiave nel dominio come web, stampanti, condivisioni, VPN, media, ecc.
*`gobuster dns -d domain.local -t 25 -w /opt/Seclist/Discovery/DNS/subdomain-top2000.txt`
* Dai un'occhiata alla [**Metodologia generale di Pentesting**](../../generic-methodologies-and-resources/pentesting-methodology.md) per trovare ulteriori informazioni su come fare questo.
* **Verifica l'accesso nullo e ospite sui servizi SMB** (questo non funzionerà su versioni moderne di Windows):
*`enum4linux -a -u "" -p "" <DC IP> && enum4linux -a -u "guest" -p "" <DC IP>`
* **Enum Kerbrute**: Quando viene richiesto un **nome utente non valido**, il server risponderà utilizzando il codice di errore **Kerberos** _KRB5KDC\_ERR\_C\_PRINCIPAL\_UNKNOWN_, consentendoci di determinare che il nome utente era invalido. I **nomi utente validi** produrranno una risposta **TGT in una risposta AS-REP** o l'errore _KRB5KDC\_ERR\_PREAUTH\_REQUIRED_, indicando che all'utente è richiesta la pre-autenticazione.
Se hai trovato uno di questi server nella rete, puoi anche eseguire **l'enumerazione degli utenti** su di esso. Ad esempio, potresti utilizzare lo strumento [**MailSniper**](https://github.com/dafthack/MailSniper):
Puoi trovare elenchi di nomi utente in [**questo repository di GitHub**](https://github.com/danielmiessler/SecLists/tree/master/Usernames/Names) e in questo ([**statistically-likely-usernames**](https://github.com/insidetrust/statistically-likely-usernames)).
Tuttavia, dovresti avere il **nome delle persone che lavorano nell'azienda** dalla fase di ricognizione che dovresti aver eseguito prima di questa. Con il nome e il cognome potresti utilizzare lo script [**namemash.py**](https://gist.github.com/superkojiman/11076951) per generare potenziali nomi utente validi.
* [**ASREPRoast**](asreproast.md): Se un utente **non ha** l'attributo _DONT\_REQ\_PREAUTH_, puoi **richiedere un messaggio AS\_REP** per quell'utente che conterrà alcuni dati crittografati da una derivazione della password dell'utente.
* [**Password Spraying**](password-spraying.md): Prova le **password più comuni** con ciascuno degli utenti scoperti, forse qualche utente sta usando una password debole (tieni presente la politica delle password!).
* Nota che puoi anche **sprayare i server OWA** per cercare di accedere ai server di posta degli utenti.
Se sei riuscito a enumerare l'active directory, avrai **più email e una migliore comprensione della rete**. Potresti essere in grado di forzare attacchi di **relay NTML** per ottenere accesso all'ambiente AD.
Se puoi **accedere ad altri PC o condivisioni** con l'utente **null** o **guest**, potresti **inserire file** (come un file SCF) che, se accessibili in qualche modo, **provocheranno un'autenticazione NTML** nei tuoi confronti in modo da poter **rubare** la **sfida NTLM** per craccarla:
Per questa fase è necessario **compromettere le credenziali o una sessione di un account di dominio valido**. Se hai delle credenziali valide o una shell come utente di dominio, **ricorda che le opzioni fornite in precedenza sono comunque opzioni per compromettere altri utenti**.
Avere compromesso un account è un **grande passo per iniziare a compromettere l'intero dominio**, perché sarai in grado di iniziare l'**enumerazione di Active Directory**:
Riguardo a [**ASREPRoast**](asreproast.md), ora puoi trovare tutti gli utenti vulnerabili possibili, e riguardo a [**Password Spraying**](password-spraying.md) puoi ottenere un **elenco di tutti i nomi utente** e provare la password dell'account compromesso, password vuote e nuove password promettenti.
* Puoi utilizzare il [**CMD per eseguire una ricognizione di base**](../basic-cmd-for-pentesters.md#domain-info)
* Puoi anche utilizzare [**powershell per la ricognizione**](../basic-powershell-for-pentesters/) che sarà più stealth
* Puoi anche [**usare powerview**](../basic-powershell-for-pentesters/powerview.md) per estrarre informazioni più dettagliate
* Un altro strumento incredibile per la ricognizione in un active directory è [**BloodHound**](bloodhound.md). Non è molto stealth (a seconda dei metodi di raccolta che usi), ma **se non ti interessa**, dovresti assolutamente provarlo. Trova dove gli utenti possono fare RDP, trova il percorso verso altri gruppi, ecc.
* **Altri strumenti automatizzati di enumerazione AD sono:** [**AD Explorer**](bloodhound.md#ad-explorer)**,** [**ADRecon**](bloodhound.md#adrecon)**,** [**Group3r**](bloodhound.md#group3r)**,** [**PingCastle**](bloodhound.md#pingcastle)**.**
* [**Record DNS dell'AD**](ad-dns-records.md) in quanto potrebbero contenere informazioni interessanti.
* Uno **strumento con GUI** che puoi utilizzare per enumerare la directory è **AdExplorer.exe** della suite **SysInternal**.
* Puoi anche cercare nel database LDAP con **ldapsearch** per cercare credenziali nei campi _userPassword_ e _unixUserPassword_, o anche in _Description_. cf. [Password in AD User comment on PayloadsAllTheThings](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#password-in-ad-user-comment) per altri metodi.
* Se stai usando **Linux**, puoi anche enumerare il dominio utilizzando [**pywerview**](https://github.com/the-useless-one/pywerview).
* Puoi anche provare strumenti automatizzati come:
È molto facile ottenere tutti i nomi utente del dominio da Windows (`net user /domain`, `Get-DomainUser` o `wmic useraccount get name,sid`). In Linux, puoi usare: `GetADUsers.py -all -dc-ip 10.10.10.110 domain.com/username` o `enum4linux -a -u "user" -p "password" <DC IP>`
> Anche se questa sezione di Enumerazione sembra piccola, è la parte più importante di tutte. Accedi ai link (soprattutto quello di cmd, powershell, powerview e BloodHound), impara come enumerare un dominio e pratica fino a quando ti sentirai a tuo agio. Durante una valutazione, questo sarà il momento chiave per trovare la tua strada verso DA o per decidere che non si può fare nulla.
Il Kerberoasting consiste nell'ottenere i **biglietti TGS** utilizzati dai servizi legati agli account utente e craccare la loro crittografia, basata sulle password degli utenti, **offline**.
Una volta ottenute delle credenziali, puoi verificare se hai accesso a qualsiasi **macchina**. A tal proposito, puoi utilizzare **CrackMapExec** per tentare di connetterti a diversi server con protocolli diversi, in base alle scansioni delle porte.
Se hai credenziali compromesse o una sessione come utente di dominio regolare e hai **accesso** con questo utente a **qualsiasi macchina nel dominio**, dovresti cercare di trovare un modo per **aumentare i privilegi localmente e rubare le credenziali**. Questo perché solo con i privilegi di amministratore locale sarai in grado di **estrarre gli hash di altri utenti** dalla memoria (LSASS) e localmente (SAM).
In questo libro è presente una pagina completa sull'[**escalation dei privilegi locali in Windows**](../windows-local-privilege-escalation/) e una [**checklist**](../checklist-windows-privilege-escalation.md). Inoltre, non dimenticare di utilizzare [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite).
Se sei riuscito a enumerare l'active directory, avrai **più email e una migliore comprensione della rete**. Potresti essere in grado di forzare attacchi di [**relay NTML**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack)**.**
Ora che hai alcune credenziali di base, dovresti verificare se puoi **trovare** file **interessanti condivisi all'interno dell'AD**. Potresti farlo manualmente, ma è un compito molto noioso e ripetitivo (e ancora di più se trovi centinaia di documenti da controllare).
[**Segui questo link per conoscere gli strumenti che potresti utilizzare.**](../../network-services-pentesting/pentesting-smb/#domain-shared-folders-search)
Se puoi **accedere ad altri PC o condivisioni**, potresti **inserire file** (come un file SCF) che, se accessibili in qualche modo, **provocheranno un'autenticazione NTML nei tuoi confronti**, in modo da poter **rubare** la **challenge NTLM** per craccarla:
**Per le seguenti tecniche, un utente di dominio regolare non è sufficiente, hai bisogno di privilegi/credenziali speciali per eseguire questi attacchi.**
Sperabilmente sei riuscito a **compromettere un account di amministratore locale** utilizzando [AsRepRoast](asreproast.md), [Password Spraying](password-spraying.md), [Kerberoast](kerberoast.md), [Responder](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) compreso il relaying, [EvilSSDP](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md), [escalating privileges locally](../windows-local-privilege-escalation/).\
Quindi, è il momento di estrarre tutti gli hash dalla memoria e localmente.\
[**Leggi questa pagina per conoscere i diversi modi per ottenere gli hash.**](https://github.com/carlospolop/hacktricks/blob/it/windows-hardening/active-directory-methodology/broken-reference/README.md)
Una volta ottenuto l'hash di un utente, puoi usarlo per **impersonarlo**.\
Devi utilizzare uno **strumento** che **eseguirà** l'**autenticazione NTLM utilizzando** quell'**hash**, **oppure** puoi creare una nuova **sessionlogon** e **iniettare** quell'**hash** all'interno di **LSASS**, in modo che quando viene eseguita qualsiasi **autenticazione NTLM**, verrà utilizzato quell'**hash**. L'ultima opzione è ciò che fa mimikatz.\
[**Leggi questa pagina per ulteriori informazioni.**](../ntlm/#pass-the-hash)
Questo attacco mira a **utilizzare l'hash NTLM dell'utente per richiedere i biglietti Kerberos**, come alternativa al comune Pass The Hash tramite protocollo NTLM. Pertanto, ciò potrebbe essere particolarmente **utile nelle reti in cui il protocollo NTLM è disabilitato** e solo **Kerberos è consentito** come protocollo di autenticazione.
Nel metodo di attacco **Pass The Ticket (PTT)**, gli attaccanti **rubano il ticket di autenticazione di un utente** anziché la loro password o i valori hash. Questo ticket rubato viene quindi utilizzato per **impersonare l'utente**, ottenendo accesso non autorizzato a risorse e servizi all'interno di una rete.
Se un utente ha privilegi per **accedere alle istanze MSSQL**, potrebbe essere in grado di utilizzarle per **eseguire comandi** nell'host MSSQL (se in esecuzione come SA), **rubare** l'hash di NetNTLM o addirittura eseguire un **attacco di relay**.\
Inoltre, se un'istanza MSSQL è fidata (collegamento al database) da un'altra istanza MSSQL. Se l'utente ha privilegi sul database fidato, sarà in grado di **utilizzare la relazione di fiducia per eseguire query anche nell'altra istanza**. Queste fiducie possono essere concatenate e a un certo punto l'utente potrebbe essere in grado di trovare un database mal configurato in cui può eseguire comandi.\
**I collegamenti tra database funzionano anche attraverso le fiducie tra foreste.**
Se trovi un oggetto Computer con l'attributo [ADS\_UF\_TRUSTED\_FOR\_DELEGATION](https://msdn.microsoft.com/en-us/library/aa772300\(v=vs.85\).aspx) e hai privilegi di dominio nel computer, sarai in grado di estrarre TGT dalla memoria di tutti gli utenti che accedono al computer.\
Quindi, se un **Domain Admin accede al computer**, sarai in grado di estrarre il suo TGT e impersonarlo utilizzando [Pass the Ticket](pass-the-ticket.md).\
Grazie alla delega vincolata, potresti persino **compromettere automaticamente un server di stampa** (speriamo che sia un DC).
Se a un utente o a un computer è consentita la "Delega vincolata", sarà in grado di **impersonare qualsiasi utente per accedere a determinati servizi in un computer**.\
Quindi, se **comprometti l'hash** di questo utente/computer, sarai in grado di **impersonare qualsiasi utente** (anche gli amministratori di dominio) per accedere a determinati servizi.
Avere il privilegio **WRITE** su un oggetto Active Directory di un computer remoto consente di ottenere l'esecuzione del codice con **privilegi elevati**:
L'utente compromesso potrebbe avere alcuni **privilegi interessanti su alcuni oggetti di dominio** che potrebbero consentirti di **spostarti** lateralmente/**elevare** i privilegi.
Se **altri utenti****accedono** alla macchina **compromessa**, è possibile **raccogliere credenziali dalla memoria** e persino **iniettare beacon nei loro processi** per impersonarli.\
Di solito gli utenti accederanno al sistema tramite RDP, quindi ecco come eseguire un paio di attacchi sulle sessioni RDP di terze parti:
**LAPS** fornisce un sistema per gestire la **password dell'amministratore locale** sui computer associati al dominio, garantendo che sia **casuale**, univoca e frequentemente **cambiata**. Queste password vengono archiviate in Active Directory e l'accesso è controllato tramite ACL solo agli utenti autorizzati. Con sufficienti autorizzazioni per accedere a queste password, diventa possibile passare ad altri computer.
Una volta ottenuti i privilegi di **Domain Admin** o ancora meglio di **Enterprise Admin**, è possibile **estrarre** il **database del dominio**: _ntds.dit_.
[**Ulteriori informazioni su come rubare l'NTDS.dit possono essere trovate qui**](https://github.com/carlospolop/hacktricks/blob/it/windows-hardening/active-directory-methodology/broken-reference/README.md)
L'attacco **Silver Ticket** crea un **legittimo Ticket Granting Service (TGS) ticket** per un servizio specifico utilizzando l'hash NTLM (ad esempio, l'hash dell'account PC). Questo metodo viene utilizzato per **accedere ai privilegi del servizio**.
Un attacco **Golden Ticket** coinvolge un attaccante che ottiene l'accesso all'**hash NTLM dell'account krbtgt** in un ambiente Active Directory (AD). Questo account è speciale perché viene utilizzato per firmare tutti i **Ticket Granting Tickets (TGT)**, che sono essenziali per l'autenticazione all'interno della rete AD.
**Avere i certificati di un account o essere in grado di richiederli** è un ottimo modo per poter persistere nell'account degli utenti (anche se cambiano la password):
L'oggetto **AdminSDHolder** in Active Directory garantisce la sicurezza dei **gruppi privilegiati** (come Domain Admins e Enterprise Admins) applicando una **Access Control List (ACL)** standard a questi gruppi per prevenire modifiche non autorizzate. Tuttavia, questa funzionalità può essere sfruttata; se un attaccante modifica l'ACL di AdminSDHolder per concedere l'accesso completo a un utente normale, tale utente acquisisce un controllo esteso su tutti i gruppi privilegiati. Questa misura di sicurezza, pensata per proteggere, può quindi avere effetti negativi, consentendo l'accesso non autorizzato a meno che non venga monitorata attentamente.
All'interno di ogni **Domain Controller (DC)**, esiste un account **amministratore locale**. Ottenendo i diritti di amministratore su tale macchina, è possibile estrarre l'hash dell'amministratore locale utilizzando **mimikatz**. Successivamente, è necessaria una modifica del registro per **abilitare l'uso di questa password**, consentendo l'accesso remoto all'account Amministratore locale.
È possibile **concedere** alcuni **permessi speciali** a un **utente** su alcuni oggetti specifici del dominio che consentiranno all'utente di **aumentare i privilegi in futuro**.
I **descrittori di sicurezza** vengono utilizzati per **memorizzare** i **permessi** che un **oggetto** ha **su** un **oggetto**. Se è possibile apportare una **piccola modifica** al descrittore di sicurezza di un oggetto, è possibile ottenere privilegi molto interessanti su quell'oggetto senza la necessità di essere membri di un gruppo privilegiato.
Registra un **nuovo Domain Controller** nell'AD e lo utilizza per **inserire attributi** (SIDHistory, SPN...) su oggetti specificati **senza** lasciare **registrazioni** relative alle **modifiche**. È necessario avere privilegi DA e trovarsi all'interno del **dominio radice**.\
Si noti che se si utilizzano dati errati, verranno visualizzate registrazioni molto brutte.
In precedenza abbiamo discusso su come aumentare i privilegi se si dispone dei **permessi sufficienti per leggere le password LAPS**. Tuttavia, queste password possono anche essere utilizzate per **mantenere la persistenza**.\
Microsoft considera il **Forest** come il confine di sicurezza. Ciò implica che **compromettere un singolo dominio potrebbe potenzialmente portare al compromesso dell'intero Forest**.
Un [**trust di dominio**](http://technet.microsoft.com/en-us/library/cc759554\(v=ws.10\).aspx) è un meccanismo di sicurezza che consente a un utente di un **dominio** di accedere alle risorse di un altro **dominio**. Crea essenzialmente un collegamento tra i sistemi di autenticazione dei due domini, consentendo la verifica dell'autenticazione in modo trasparente. Quando i domini stabiliscono un trust, scambiano e conservano specifici **chiavi** all'interno dei loro **Domain Controller (DC)**, che sono cruciali per l'integrità del trust.
In uno scenario tipico, se un utente intende accedere a un servizio in un **dominio fidato**, deve prima richiedere un ticket speciale noto come **inter-realm TGT** dal proprio DC di dominio. Questo TGT è crittografato con una **chiave condivisa** su cui entrambi i domini hanno concordato. L'utente presenta quindi questo TGT al **DC del dominio fidato** per ottenere un ticket di servizio (**TGS**). Dopo la corretta convalida dell'inter-realm TGT da parte del DC del dominio fidato, viene emesso un TGS, concedendo all'utente l'accesso al servizio.
1. Un **computer client** nel **Dominio 1** avvia il processo utilizzando il suo **hash NTLM** per richiedere un **Ticket Granting Ticket (TGT)** dal suo **Domain Controller (DC1)**.
2. DC1 emette un nuovo TGT se il client viene autenticato correttamente.
3. Il client richiede quindi un **inter-realm TGT** da DC1, che è necessario per accedere alle risorse nel **Dominio 2**.
4. L'inter-realm TGT è crittografato con una **chiave di trust** condivisa tra DC1 e DC2 come parte del trust bidirezionale tra i domini.
5. Il client porta l'inter-realm TGT al **Domain Controller (DC2) del Dominio 2**.
6. DC2 verifica l'inter-realm TGT utilizzando la chiave di trust condivisa e, se valido, emette un **Ticket Granting Service (TGS)** per il server nel Dominio 2 a cui il client desidera accedere.
7. Infine, il client presenta questo TGS al server, che è crittografato con l'hash dell'account del server, per ottenere l'accesso al servizio nel Dominio 2.
È importante notare che **un trust può essere unidirezionale o bidirezionale**. Nelle opzioni bidirezionali, entrambi i domini si fidano l'uno dell'altro, ma nella relazione di trust **unidirezionale** uno dei domini sarà il dominio **fidato** e l'altro il dominio **fidante**. In quest'ultimo caso, **sarà possibile accedere solo alle risorse all'interno del dominio fidante dal dominio fidato**.
Se il Dominio A si fida del Dominio B, A è il dominio fidante e B è il dominio fidato. Inoltre, nel **Dominio A**, questo sarebbe un **trust in uscita**; e nel **Dominio B**, questo sarebbe un **trust in ingresso**.
* **Trust padre-figlio**: questa è una configurazione comune all'interno dello stesso forest, in cui un dominio figlio ha automaticamente un trust bidirezionale transitivo con il dominio padre. Fondamentalmente, ciò significa che le richieste di autenticazione possono fluire senza problemi tra il padre e il figlio.
* **Trust cross-link**: chiamati anche "trust shortcut", questi vengono stabiliti tra domini figli per accelerare i processi di riferimento. Nei forest complessi, i riferimenti di autenticazione devono di solito viaggiare fino alla radice del forest e poi scendere al dominio di destinazione. Creando collegamenti incrociati, il percorso viene accorciato, il che
* Una relazione di fiducia può essere anche **transitiva** (A fiducia B, B fiducia C, quindi A fiducia C) o **non transitiva**.
* Una relazione di fiducia può essere stabilita come **fiducia bidirezionale** (entrambi si fidano l'uno dell'altro) o come **fiducia unidirezionale** (solo uno di loro si fida dell'altro).
2. Verificare se qualche **principale di sicurezza** (utente/gruppo/computer) ha **accesso** alle risorse dell'**altro dominio**, forse tramite voci ACE o facendo parte di gruppi dell'altro dominio. Cercare **relazioni tra domini** (probabilmente la fiducia è stata creata per questo).
* **Appartenenza a gruppi locali**: I principali possono essere aggiunti a gruppi locali su macchine, come il gruppo "Amministratori" su un server, concedendo loro un controllo significativo su quella macchina.
* **Appartenenza a gruppi di domini esterni**: I principali possono anche essere membri di gruppi all'interno del dominio esterno. Tuttavia, l'efficacia di questo metodo dipende dalla natura della fiducia e dalla portata del gruppo.
* **Liste di controllo degli accessi (ACL)**: I principali possono essere specificati in una **ACL**, in particolare come entità in **ACE** all'interno di una **DACL**, fornendo loro accesso a risorse specifiche. Per coloro che desiderano approfondire la meccanica delle ACL, delle DACL e degli ACE, il documento tecnico intitolato "[An ACE Up The Sleeve](https://specterops.io/assets/resources/an\_ace\_up\_the\_sleeve.pdf)" è una risorsa preziosa.
Comprendere come può essere sfruttata la Configurazione Naming Context (NC) è fondamentale. La Configurazione NC funge da repository centrale per i dati di configurazione in un ambiente Active Directory (AD) forestale. Questi dati vengono replicati su ogni Domain Controller (DC) all'interno della foresta, con i DC scrivibili che mantengono una copia scrivibile della Configurazione NC. Per sfruttare ciò, è necessario avere **privilegi di SYSTEM su un DC**, preferibilmente un DC figlio.
Il contenitore dei siti della Configurazione NC include informazioni su tutti i siti dei computer associati al dominio all'interno della foresta AD. Operando con privilegi di SYSTEM su qualsiasi DC, gli attaccanti possono collegare GPO al sito del DC radice. Questa azione compromette potenzialmente il dominio radice manipolando le policy applicate a questi siti.
Per informazioni approfondite, è possibile esplorare la ricerca su [Bypassing SID Filtering](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-4-bypass-sid-filtering-research).
Un vettore di attacco coinvolge il mirare gMSA privilegiati all'interno del dominio. La chiave KDS Root, essenziale per il calcolo delle password delle gMSA, è memorizzata nella Configurazione NC. Con privilegi di SYSTEM su qualsiasi DC, è possibile accedere alla chiave KDS Root e calcolare le password per qualsiasi gMSA in tutta la foresta.
Un'analisi dettagliata può essere trovata nella discussione su [Golden gMSA Trust Attacks](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-5-golden-gmsa-trust-attack-from-child-to-parent).
Questo metodo richiede pazienza, aspettando la creazione di nuovi oggetti AD privilegiati. Con privilegi di SYSTEM, un attaccante può modificare lo schema AD per concedere a qualsiasi utente il controllo completo su tutte le classi. Ciò potrebbe portare ad accessi e controllo non autorizzati su oggetti AD appena creati.
Ulteriori informazioni sono disponibili su [Schema Change Trust Attacks](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-6-schema-change-trust-attack-from-child-to-parent).
La vulnerabilità ADCS ESC5 mira al controllo sugli oggetti dell'infrastruttura a chiave pubblica (PKI) per creare un modello di certificato che consente l'autenticazione come qualsiasi utente all'interno della foresta. Poiché gli oggetti PKI risiedono nella Configurazione NC, compromettere un DC figlio scrivibile consente l'esecuzione di attacchi ESC5.
Maggiori dettagli su questo argomento possono essere letti in [From DA to EA with ESC5](https://posts.specterops.io/from-da-to-ea-with-esc5-f9f045aa105c). In scenari privi di ADCS, l'attaccante ha la capacità di configurare i componenti necessari, come discusso in [Escalating from Child Domain Admins to Enterprise Admins](https://www.pkisolutions.com/escalating-from-child-domains-admins-to-enterprise-admins-in-5-minutes-by-abusing-ad-cs-a-follow-up/).
In questo scenario **il tuo dominio è fidato** da un dominio esterno che ti conferisce **permessi indeterminati** su di esso. Dovrai trovare **quali principali del tuo dominio hanno accesso al dominio esterno** e poi cercare di sfruttarlo:
Tuttavia, quando un **dominio viene affidato** al dominio affidante, il dominio affidato **crea un utente** con un **nome prevedibile** che utilizza come **password la password affidata**. Ciò significa che è possibile **accedere a un utente del dominio affidante per entrare nel dominio affidato** per enumerarlo e cercare di ottenere ulteriori privilegi:
Un altro modo per compromettere il dominio affidato è trovare un [**collegamento di fiducia SQL**](abusing-ad-mssql.md#mssql-trusted-links) creato nella **direzione opposta** della fiducia del dominio (cosa non molto comune).
Un altro modo per compromettere il dominio affidato è aspettare in una macchina a cui può accedere un **utente del dominio affidato** per effettuare il login tramite **RDP**. Quindi, l'attaccante potrebbe iniettare codice nel processo della sessione RDP e **accedere al dominio di origine della vittima** da lì.\
Inoltre, se la **vittima ha montato il suo disco rigido**, dall'**RDP session** l'attaccante potrebbe memorizzare **backdoor** nella **cartella di avvio del disco rigido**. Questa tecnica è chiamata **RDPInception**.
* Il rischio di attacchi che sfruttano l'attributo SID history attraverso le fiducie tra foreste è mitigato dal Filtraggio SID, che è attivato per impostazione predefinita su tutte le fiducie tra foreste. Questo si basa sull'assunzione che le fiducie all'interno della foresta siano sicure, considerando la foresta, piuttosto che il dominio, come confine di sicurezza secondo la posizione di Microsoft.
* Tuttavia, c'è un problema: il filtraggio SID potrebbe interrompere le applicazioni e l'accesso degli utenti, portando alla sua disattivazione occasionale.
* Per le fiducie tra foreste, l'utilizzo dell'Autenticazione selettiva garantisce che gli utenti delle due foreste non vengano autenticati automaticamente. Invece, sono richiesti permessi espliciti per gli utenti per accedere ai domini e ai server all'interno del dominio o della foresta affidante.
* È importante notare che queste misure non proteggono dall'exploit del Configuration Naming Context (NC) scrivibile o dagli attacchi all'account di fiducia.
[**Ulteriori informazioni sulle fiducie di dominio in ired.team.**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/child-domain-da-to-ea-in-parent-domain)
* **Restrizioni degli amministratori di dominio**: Si consiglia di consentire agli amministratori di dominio di effettuare il login solo sui controller di dominio, evitando il loro utilizzo su altri host.
* **Privilegi degli account di servizio**: I servizi non dovrebbero essere eseguiti con privilegi di amministratore di dominio (DA) per mantenere la sicurezza.
* **Limitazione temporale dei privilegi**: Per le attività che richiedono privilegi DA, la loro durata dovrebbe essere limitata. Ciò può essere ottenuto tramite: `Add-ADGroupMember -Identity ‘Domain Admins’ -Members newDA -MemberTimeToLive (New-TimeSpan -Minutes 20)`
* L'implementazione dell'inganno comporta la creazione di trappole, come utenti o computer fittizi, con caratteristiche come password che non scadono o sono contrassegnate come Affidabili per la Delega. Un approccio dettagliato include la creazione di utenti con diritti specifici o l'aggiunta di utenti a gruppi ad alto privilegio.
* Un esempio pratico prevede l'utilizzo di strumenti come: `Create-DecoyUser -UserFirstName user -UserLastName manager-uncommon -Password Pass@123 | DeployUserDeception -UserFlag PasswordNeverExpires -GUID d07da11f-8a3d-42b6-b0aa-76c962be719a -Verbose`
* Maggiori informazioni sull'implementazione delle tecniche di inganno possono essere trovate su [Deploy-Deception su GitHub](https://github.com/samratashok/Deploy-Deception).
* **Per gli oggetti utente**: Gli indicatori sospetti includono ObjectSID atipici, accessi rari, date di creazione e bassi conteggi di password errate.
* **Indicatori generali**: Confrontare gli attributi degli oggetti di potenziale inganno con quelli degli oggetti genuini può rivelare incongruenze. Strumenti come [HoneypotBuster](https://github.com/JavelinNetworks/HoneypotBuster) possono aiutare nell'identificazione di tali inganni.
* **Enumerazione degli utenti**: Evitare l'enumerazione delle sessioni sui controller di dominio per evitare il rilevamento di ATA.
* **Impersonazione del ticket**: Utilizzare chiavi **aes** per la creazione del ticket aiuta a eludere il rilevamento evitando il degrado a NTLM.
* **Attacchi DCSync**: Si consiglia di eseguire l'attacco da un non-Controller di dominio per evitare il rilevamento di ATA, poiché l'esecuzione diretta da un Controller di dominio attiverà gli allarmi.
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **repository di GitHub.**