Guido Grillenmeier e Rich Peckham

Nel corso della storia di Active Directory, gli autori delle minacce hanno continuamente individuato nuovi modi per sfruttare le vulnerabilità del protocollo di autenticazione Kerberos. Per contribuire a ridurre i rischi associati al Kerberoasting, Microsoft renderà obsoleta la crittografia RC4 a partire da aprile 2026. Se non avete ancora individuato le applicazioni nel vostro ambiente che potrebbero subire interruzioni a causa di questa modifica, è ora di mettere questo compito in cima alla vostra lista delle cose da fare. Questo post spiega il processo e vi indica le risorse che possono esservi d'aiuto.


Perché Microsoft sta abbandonando la crittografia RC4?

Le tattiche, le tecniche e le procedure (TTP) che sfruttano Kerberos possono essere suddivise in tre categorie:

  • Attacchi di tipo "roasting", come AS-REQ Roasting e Kerberoasting
  • Abuso della delega, compresa la delega Kerberos senza restrizioni e la delega con restrizioni basata sulle risorse
  • Abusi relativi ai biglietti, tra cui Golden Ticket, Silver Ticket, Diamond Ticket, Sapphire Ticket, Bronze Bit, Pass-the-Ticket e così via

Il kerberoasting è diventato una delle tecniche di attacco più diffuse. Negli ultimi anni, Microsoft ha introdotto misure di difesa contro gli attacchi di kerberoasting e sono stati pubblicati numerosi articoli sul kerberoasting e su come mitigarlo. In questo articolo non approfondiremo i meccanismi dell'attacco, ma, in linea di massima, ecco come funziona:

  1. Un utente malintenzionato richiede un ticket di servizio per un nome di entità di servizio (SPN) valido.
  2. Il Kerberos Key Distribution Center (KDC) emette il ticket di servizio utilizzando la crittografia RC4, un algoritmo meno sicuro rispetto all'AES-SHA1 (e quindi più facile da violare).
  3. L'autore dell'attacco mette questo ticket in modalità offline e utilizza un meccanismo di cracking con forza bruta per recuperare la password dell'account.
  4. L'autore dell'attacco utilizza l'account compromesso per spostarsi lateralmente e ottenere privilegi più elevati.

A causa del diffuso sfruttamento di RC4 nell'ambito degli attacchi di tipo "kerberoasting", Microsoft ha annunciato che questa crittografia sarà resa obsoleta: i controlli inizieranno a gennaio 2026, l'applicazione della misura con rollback manuale avverrà ad aprile 2026 e l'applicazione completa è prevista per luglio 2026.

Tuttavia, molte aziende continuano ad affidarsi ad applicazioni interne o di terze parti che non supportano tipi di crittografia più sicuri, come AES-128 e AES-256. Se la vostra organizzazione rientra in questa categoria, dovrete individuare gli account di tali applicazioni e configurare la crittografia AES per ciascuno di essi.


Quali applicazioni utilizzano RC4?

Allora, come si fa a sapere quali applicazioni utilizzano RC4 come tipo di crittografia Kerberos?

Sarà necessario eseguire un controllo del servizio di autenticazione Kerberos e delle operazioni relative ai ticket di servizio Kerberos per acquisire gli ID evento 4768 (eventi del servizio di autenticazione) e 4769 (operazioni relative ai ticket di servizio) nel registro eventi di sicurezza. (Microsoft ha introdotto gli ID evento aggiuntivi 201–209, noti anche come "KDC hardening", con le patch di gennaio 2026 nel registro eventi di sistema per supportare ulteriormente l'iniziativa di dismissione dell'RC4. Tuttavia, gli eventi 4768 e 4769 possono essere considerati gli eventi "principali", motivo per cui questo post si concentra sul monitoraggio di questi due eventi.)

Analizziamo questi eventi.


ID evento 4768

La figura 1 mostra un esempio di output relativo all'ID evento 4768.

      È stato richiesto un ticket di autenticazione Kerberos (TGT).

Informazioni sull'account:
    Nome account:        jdoe
    Nome del realm fornito:    CHILD
    ID utente:            S-1-5-21-1873250772-3107742394-1596888999-1114
	Tipi di crittografia supportati da MSDS:    0x27 (DES, RC4, AES-Sk)
    Chiavi disponibili:    AES-SHA1, RC4

Informazioni sul servizio:
    Nome del servizio:        krbtgt
	ID servizio:        S-1-5-21-1873250772-3107742394-1596888999-502
    Tipi di crittografia supportati da MSDS:    0x1F (DES, RC4, AES128-SHA96, AES256-SHA96)
	Chiavi disponibili:    AES-SHA1, RC4

Informazioni sul controller di dominio:
    Tipi di crittografia supportati da MSDS:    0x1F (DES, RC4, AES128-SHA96, AES256-SHA96)
    Chiavi disponibili:    AES-SHA1, RC4

Informazioni di rete:
    Indirizzo client:        ::ffff:10.1.1.250
    Porta client:        53904
    Etype pubblicizzati:	
		AES256-CTS-HMAC-SHA1-96
        AES128-CTS-HMAC-SHA1-96
        RC4-HMAC-NT
        DES-CBC-MD5

Informazioni aggiuntive:
    Opzioni ticket:        0x40810010
	Codice risultato:        0x0
    Tipo di crittografia del ticket:    0x12
    Tipo di crittografia della sessione:    0x12
    Tipo di pre-autenticazione:    2
    Tipo di crittografia della pre-autenticazione:    0x12

--Il resto è stato omesso per brevità.--

Figura 1. Esempio di output dell'ID evento 4768


Questo esempio contiene diverse serie di informazioni rilevanti.

Informazioni sull'account

  • Nome dell'account. L'entità che richiede il Ticket Granting Ticket (TGT)
  • Nome del dominio specificato. Il dominio in cui risiede l'identità
  • ID utente. Il nome descrittivo (o SID) dell'identità
  • MSDS-SupportedEncryptionTypes. I tipi di crittografia che l'account può utilizzare

Informazioni sul servizio

  • Nome del servizio. Il soggetto di servizio richiesto (in questo caso, krbtgt)
  • ID servizio. Il nome descrittivo (o SID) dell'entità di servizio richiesta
  • MSDS-SupportedEncryptionTypes. I tipi di crittografia che l'account di servizio può utilizzare

Informazioni sul controller di dominio (DC)

  • MSDS-SupportedEncryptionTypes. I tipi di crittografia supportati dal DC

Informazioni aggiuntive

  • Opzioni del ticket. 0x40810010 (trasferibile, rinnovabile, canonicalizzato, rinnovabile-ok), come illustrato nella Figura 2.
Figura 2. Traccia Wireshark che mostra l'opzione del ticket 0x40810010
  • Tipo di crittografia del ticket: 0x12 (AES256), come illustrato nella Figura 3.
  • Tipo di crittografia della sessione. 0x12 (AES256), come illustrato nella Figura 3.
Figura 3. Traccia Wireshark che mostra i tipi di crittografia dei ticket e delle sessioni
  • Tipo di crittografia pre-autenticazione: 0x12 (AES256), come illustrato nella Figura 4.
Figura 4. Traccia Wireshark che mostra il tipo di crittografia pre-autenticazione

ID evento 4769

La figura 5 mostra un esempio di output relativo all'ID evento 4769.

      A Kerberos service ticket was requested.

Account Information:
	Account Name:		jdoe@CHILD.CONTOSO.COM
	Account Domain:		CHILD.CONTOSO.COM
	Logon GUID:		{5f752786-c7b3-fb33-0ce8-a54adeea22c3}
	MSDS-SupportedEncryptionTypes:	N/A
	Available Keys:	N/A

Service Information:
	Service Name:		CHILDMEMBER$
	Service ID:		S-1-5-21-1873250772-3107742394-1596888999-1105
	MSDS-SupportedEncryptionTypes:	0x1C (RC4, AES128-SHA96, AES256-SHA96)
	Available Keys:	AES-SHA1, RC4

Domain Controller Information:
	MSDS-SupportedEncryptionTypes:	0x1F (DES, RC4, AES128-SHA96, AES256-SHA96)
	Available Keys:	AES-SHA1, RC4

Network Information:
	Client Address:		::ffff:10.1.1.250
	Client Port:		53905
	Advertized Etypes:	
		AES256-CTS-HMAC-SHA1-96
		AES128-CTS-HMAC-SHA1-96
		RC4-HMAC-NT

Additional Information:
	Ticket Options:		0x40810000
	Ticket Encryption Type:	0x12
	Session Encryption Type:	0x12
	Failure Code:		0x0
	Transited Services:	-

--Remainder snipped brevity--

Figura 5. Esempio di output dell'ID evento 4769


Questo esempio contiene diverse serie di informazioni rilevanti.

Informazioni sul servizio

  • Nome del servizio. L'SPN della richiesta di ticket di servizio (in questo caso, per host/childmember.child.contoso.com), come illustrato nella Figura 6.
      sname-string: 2 voci
SNameString: host
SNameString: childmember.child.contoso.com

Figura 6. Estratto di una traccia Wireshark che mostra l'SPN della richiesta del ticket di servizio


  • ID servizio. Il nome descrittivo (o SID) dell'entità di sicurezza che ha registrato l'SPN
  • MSDS-SupportedEncryptionTypes. I tipi di crittografia che l'account di servizio può utilizzare

Informazioni su DC

  • MSDS-SupportedEncryptionTypes. I tipi di crittografia supportati dal DC

Informazioni aggiuntive

  • Opzioni biglietti. 0x40810000
  • Tipo di crittografia del ticket. 0x12 (AES256)
  • Tipo di crittografia della sessione. 0x12 (AES256)

Quando si utilizza RC4 per la crittografia, i risultati appaiono leggermente diversi rispetto a quelli degli esempi precedenti. La figura 7 mostra l'output dell'ID evento 4769 per un computer client che utilizza esclusivamente la crittografia RC4.

      A Kerberos service ticket was requested.

Account Information:
	Account Name:		jdoe@CHILD.CONTOSO.COM
	Account Domain:		CHILD.CONTOSO.COM
	Logon GUID:		{df8a66a8-8c1d-061e-b216-f935b45eb88a}
	MSDS-SupportedEncryptionTypes:	N/A
	Available Keys:	N/A

Service Information:
	Service Name:		CHILDMEMBER$
	Service ID:		CHILD\CHILDMEMBER$
	MSDS-SupportedEncryptionTypes:	0x4 (RC4)
	Available Keys:	AES-SHA1, RC4

Domain Controller Information:
	MSDS-SupportedEncryptionTypes:	0x1F (DES, RC4, AES128-SHA96, AES256-SHA96)
	Available Keys:	AES-SHA1, RC4

Network Information:
	Client Address:		::ffff:10.1.1.250
	Client Port:		51299
	Advertized Etypes:	
		AES256-CTS-HMAC-SHA1-96
		AES128-CTS-HMAC-SHA1-96
		RC4-HMAC-NT

Additional Information:
	Ticket Options:		0x40810000
	Ticket Encryption Type:	0x17
	Session Encryption Type:	0x17
	Failure Code:		0x0
	Transited Services:	-

--Remainder snipped for brevity--

Figura 7. Messaggio relativo all'ID evento 4769 su un computer client che utilizza esclusivamente RC4


Le parti in grassetto evidenziano le differenze principali tra questo caso e gli esempi precedenti. Analizziamole nel dettaglio.

Informazioni sul servizio

  • Nome del servizio: CHILDMEMBER$ (come nell'esempio precedente)
  • ID servizio. Il nome descrittivo (o SID) dell'entità di servizio richiesta
  • Tipi di crittografia supportati da MSDS. 0x4 (RC4)

Informazioni aggiuntive

  • Opzioni biglietti. 0x40810000 (come nell'esempio precedente)
  • Tipo di crittografia del ticket. 0x17 (RC4-HMAC)
  • Tipo di crittografia della sessione. 0x17 (RC4-HMAC)

Come verificare la presenza di app che utilizzano RC4 nel proprio ambiente

Come mostra l'esempio precedente relativo all'RC4, per individuare la crittografia RC4 nel proprio ambiente è necessario esaminare i registri degli eventi (preferibilmente i registri SIEM) alla ricerca di richieste al servizio di autenticazione (AS-REQ) e relative risposte (AS-REP), nonché di richieste al servizio di concessione dei ticket (TGS-REQ) e relative risposte (TGS-REP), verificando che i tipi di crittografia dei ticket e delle sessioni siano 0x17.

Per aiutarti in questo compito, abbiamo creato alcune query di esempio sia per Microsoft Sentinel che per Splunk. Puoi utilizzare questi esempi come modelli per eseguire un audit del tuo ambiente.

A seconda di come è stata configurata l'inoltro degli eventi per Sentinel, sarà necessario interrogare DeviceEvents oppure WindowsEvent. Ad esempio, se si utilizza l'inoltro degli eventi di Windows per raccogliere i registri degli eventi e inoltrarli a Sentinel, sarà necessario interrogare WindowsEvent e cercare solo le istanze degli ID evento 4768 e 4769 che corrispondono a 0x17 nei campi "Tipo di crittografia del ticket" o "Tipo di crittografia della sessione".

È possibile utilizzare la seguente query per effettuare ricerche in Sentinel. Questa query è stata ampliata per includere altre colonne di dati.

      WindowsEvent
| where EventID in ('4768', '4769')
| where TimeGenerated between (ago(60d) .. now())
| extend EventDataJson = parse_json(EventData)
| extend TargetUserName = EventDataJson.TargetUserName
| extend TargetDomainName = EventDataJson.TargetDomainName
| estendi IpAddress = EventDataJson.IpAddress
| estendi ServiceAvailableKeys = EventDataJson.ServiceAvailableKeys
| estendi ServiceName = EventDataJson.ServiceName
| estendi SessionKeyEncryption = EventDataJson.SessionKeyEncryptionType
| estendi TicketEncryption = EventDataJson.TicketEncryptionType
| estendi TicketOptions = EventDataJson.TicketOptions
| dove SessionKeyEncryption == '0x17' oppure
            TicketEncryption == '0x17'
| proietta  TimeGenerated, EventID, TargetUserName, TargetDomainName, IpAddress, ServiceName, TicketEncryption, SessionKeyEncryption, TicketOptions, ServiceAvailableKeys, EventDataJson

Ecco una breve sintesi della richiesta:


WindowsEvent

Come viene memorizzata la query in questa implementazione di Sentinel (nel tuo ambiente potrebbe trattarsi di DeviceEvents, come descritto in precedenza)

| where EventID in ('4768', '4769')

Ricerca degli ID evento 4768 e 4769

| where TimeGenerated between (ago(60d) .. now())

Risale a 60 giorni fa (puoi impostare il valore che preferisci)

| extend EventDataJson = parse_json(EventData)

Formatta la colonna EventData in formato JSON e analizza il JSON da utilizzare nel resto della query

| extend TargetUserName = EventDataJson.TargetUserName

Indica l'identità che richiede il ticket

| extend TargetDomainName = EventDataJson.TargetDomainName

Indica il dominio in cui risiede l'identità richiedente

| extend IpAddress = EventDataJson.IpAddress

Mostra l'indirizzo IP del client, se è indicato nell'evento

| extend ServiceAvailableKeys = EventDataJson.ServiceAvailableKeys

Indica le chiavi di crittografia disponibili per il servizio

| extend ServiceName = EventDataJson.ServiceName

Indica l'SPN a cui si riferisce la richiesta di ticket

| extend SessionKeyEncryption = EventDataJson.SessionKeyEncryptionType

Specifica il tipo di crittografia della chiave di sessione che il client (richiedente) utilizzerà per interagire con il titolare del ticket

| extend TicketEncryption = EventDataJson.TicketEncryptionType

Specifica il tipo di crittografia del TGT o del ticket di servizio

| extend TicketOptions = EventDataJson.TicketOptions

Fornisce ulteriori informazioni sulle opzioni relative ai ticket della richiesta, che potrebbero rivelarsi utili per identificare tipi di ticket quali ticket di segnalazione, ticket delegati, ticket inoltrati, ticket tramite proxy e così via

| where SessionKeyEncryption == '0x17' or
TicketEncryption == '0x17'

Cerca la crittografia della chiave di sessione o la crittografia del ticket che sia RC4-HMAC (0x17)

| project TimeGenerated, EventID, TargetUserName, TargetDomainName, IpAddress, ServiceName, TicketEncryption, SessionKeyEncryption, TicketOptions, ServiceAvailableKeys, EventDataJson

Indica i campi da visualizzare nei risultati


La figura 8 mostra un esempio dei risultati di questa query.

Un esempio dei risultati di una query in Microsoft Sentinel
Figura 8. Un esempio dei risultati di una query in Microsoft Sentinel

Per Splunk, questa stessa query avrebbe il seguente aspetto:

      index="wineventlog" LogName="Security" EventCode IN ("4768", "4769") earliest=-60d@d latest=now
| search Session_Encryption_Type="0x17" or Ticket_Encryption_Type="0x17"
| tabella _time EventCode Account_Name Account_Domain Client_Address service_name Ticket_Encryption_Type Session_Encryption_Type Ticket_Options, _raw

Prima di utilizzare queste query nel proprio ambiente, assicurarsi che la funzione di controllo dei ticket di servizio sia abilitata. Se tale funzione non è abilitata, i DC non genereranno gli eventi pertinenti (ID evento 4768 e 4769 e ID evento 201–209, relativi al rafforzamento della sicurezza del KDC).

Il modo migliore per abilitare il controllo dei ticket di servizio è aggiornare una politica di gruppo esistente oppure aggiungerne una assegnata all'unità organizzativa (OU) del proprio DC. È necessario eseguire questa operazione per ogni dominio nella foresta AD. Il percorso per le impostazioni pertinenti è Configurazione computer > Impostazioni di Windows > Impostazioni di sicurezza > Configurazione avanzata dei criteri di controllo > Criteri di controllo > Accesso account. Abilitare le sottocategorie Controlla servizio di autenticazione Kerberos e Controlla operazioni dei ticket di servizio Kerberos sia per Successo che per Errore ( Figura 9).

Attivazione del controllo dei ticket di servizio
Figura 9. Abilitazione del controllo dei ticket di servizio

Se non hai mai configurato una politica di controllo avanzata nei tuoi domini, assicurati di abilitare anche la politica «Controllo: forzare le impostazioni delle sottocategorie della politica di controllo (Windows Vista o versioni successive) per sovrascrivere le impostazioni delle categorie della politica di controllo» in «Configurazione del computer > Impostazioni di Windows > Impostazioni di sicurezza > Criteri locali > Opzioni di sicurezza». Questa politica viene solitamente impostata nello stesso Criterio di gruppo del «Controllo dei ticket di servizio».


Nota: se nei registri degli eventi di sicurezza dei tuoi DC non sono presenti eventi relativi al ticket di servizio 4769, non vedrai nemmeno gli avvisi relativi al rafforzamento della sicurezza del KDC (201–209) nel registro di sistema.

Suggerimento per la verifica: imposta temporaneamente un dispositivo in modo che supporti solo RC4 e richiedi un ticket di servizio da un account in cui il campo `msDS-SupportedEncryptionTypes` non contenga alcun valore. Se la funzione di controllo è configurata correttamente, dovresti visualizzare gli avvisi corrispondenti. Per ulteriori dettagli, consulta l'articolo di Microsoft Learn "Rilevare e correggere l'utilizzo di RC4 in Kerberos".


Una volta verificato che il monitoraggio Kerberos funzioni correttamente, inizia il vero lavoro: analizzare gli eventi ricevuti e risolvere i problemi relativi agli account o ai sistemi interessati.

La difficoltà principale nella rimozione di RC4 deriva dagli account di servizio legacy le cui password non vengono modificate da molti anni. Poiché RC4 in Active Directory è legato all'hash NT, qualsiasi account la cui password non sia mai stata reimpostata dopo l'introduzione di AES (ovvero dopo il rilascio di Windows Server 2008 e Windows Vista) potrebbe ancora disporre solo di chiavi compatibili con RC4.

È possibile risolvere il problema solo reimpostando due volte la password dell'account di servizio, costringendo così Active Directory a generare le chiavi AES necessarie. Tuttavia, è necessario anche sapere dove viene utilizzato tale account di servizio nel proprio ambiente; ad esempio, per avviare il servizio in questione su un determinato server membro o per eseguire un'attività pianificata.

Se si notano avvisi relativi al rafforzamento della sicurezza KDC (eventi 201–209 nel registro di sistema) accanto agli eventi 4768 o 4769, questo post su LinkedIn di Jerry Devore di Microsoft offre un'ottima panoramica su come correggere gli account e i sistemi interessati, dove msds-SET = msDS-SupportedEncryptionTypes (Tabella 1).

Coppia di eventiCosa significaCausa principaleSoluzione rapida
201/203Client solo RC4 + msds-SET vuotoDispositivo legacy o keytabAbilitare AES sul client OPPURE impostare msds-SET su 28
202/204L'account non dispone della chiave AES + msds-SET vuotoVecchia passwordReimposta la password dell'account (due volte)
205Tipi di criteri di criteri predefiniti supportati attualmente in usoÈ presente una sostituzione del registroSe possibile, rimuovere l'override
206/208Client solo RC4 + msds-SET solo AESIncompatibilità del clientAggiungi RC4 a msds-SET (valore 28)
207/209L'account non dispone della chiave AES + AES msds-SETLa password non è stata reimpostataReimposta la password dell'account (due volte)
Tabella 1. Risanamento di conti e sistemi

In sintesi, per gli amministratori IT

  • Verificate subito quali account e dispositivi sono ancora collegati a RC4.
  • Aggiornare gli account di servizio a configurazioni compatibili con AES prima dell'applicazione completa della politica o della dismissione di RC4.
  • Eliminare o adeguare i sistemi legacy che non supportano lo standard AES.
  • Utilizzate i registri degli eventi in modo proattivo per individuare i dispositivi problematici prima che smettano di funzionare — cosa che accadrà dopo l'applicazione degli aggiornamenti di luglio 2026.

Hai bisogno di ulteriore assistenza?

L'abbandono di RC4 rappresenta un passo importante nella lotta contro il Kerberoasting, ma richiede un intervento tempestivo. Se avete domande in merito o avete bisogno di assistenza per la migrazione degli account della vostra applicazione, siamo a vostra disposizione.