Percorsi di Attacco ESC1 e ESC8: Dall’Ingegneria Sociale all’Abuso di AD CS
Detection stack
- AIDR
- Alert
- ETL
- Query
Riepilogo
Gli attori della minaccia hanno usato l’ingegneria sociale attraverso Microsoft Teams per impersonare il personale del servizio di assistenza IT e stabilire l’accesso remoto con Quick Assist. Dopo aver ottenuto l’accesso, hanno abusato dei servizi certificati Active Directory (AD CS) mal configurati attraverso le tecniche ESC1 e ESC8 per aumentare i privilegi e ottenere l’autenticazione a livello di dominio. Le intrusioni hanno permesso l’iscrizione non autorizzata di certificati, attività DCSync e la successiva esfiltrazione di dati.
Indagine
L’indagine ha ricostruito la catena di attacco dal primo contatto di phishing su Teams fino all’abuso successivo dei certificati. Gli analisti hanno correlato la telemetria delle sessioni remote, l’esecuzione sospetta del runtime da directory scrivibili dagli utenti e gli eventi AD CS, comprese le richieste di iscrizione certificate e l’attività PKINIT. Le discrepanze tra le identità autenticate e i dispositivi originari hanno fornito punti chiave per identificare i potenziali attacchi di relay NTLM.
Mitigazione
Le organizzazioni dovrebbero applicare procedure di verifica rigorose per richieste di supporto non richieste e limitare l’accesso esterno in Microsoft Teams. Le mitigazioni tecniche includono l’uso di App Control for Business per bloccare i runtime non autorizzati e il rafforzamento di AD CS attivando la Protezione Estesa per l’Autenticazione (EPA) e HTTPS sui punti di iscrizione. Disabilitare NTLM sui servizi di iscrizione e controllare regolarmente i modelli di certificato è anche fondamentale.
Risposta
Quando si rileva un’attività dannosa, i soccorritori dovrebbero isolare immediatamente le workstation colpite e riesaminare le identità compromesse per i rischi di esclusione. I certificati non autorizzati devono essere revocati e le informazioni di revoca aggiornate pubblicate. I ticket Kerberos attivi devono essere valutati separatamente, poiché la revoca del certificato non invalida i TGT esistenti. Anche il contenimento manuale dovrebbe essere assegnato agli account esclusi dall’interruzione automatizzata.
Flusso di Attacco
Rilevamenti
Possibile Scoperta della Configurazione di Rete di Sistema (via cmdline)
Java Binary Eseguito da Posizione Insolita (via process_creation)
Software di Accesso/ Gestione Remota Alternativo (via process_creation)
Eventi di Richiesta Certificato per Domain Controller [ADCS] (via audit)
Eventi di Richiesta Certificato [ADCS] (via audit)
Uso Errato del Modello ADCS [ESC1/SAN] (via audit)
Possibile Attacco Coercito (via audit)
Azioni Sospette Relative ai Certificati Tentate (via audit)
Possibile Sfruttamento dell’Attacco PetitPotam/ADCS-ESC8 [MS-EFSRPC/ADCS-PKI] (via audit)
Possibile Attacco DCSync (via audit)
Possibile Accesso Non Autorizzato con Quick Assist (via audit)
Indicatori di Compromissione (HashSha256) da rilevare: Dall’impersonificazione del servizio di assistenza all’abuso di AD CS: Indagine sui percorsi di intrusione ESC1 e ESC8
Abuso dei Modelli di Certificato e Rilevazione del Relay Autenticazione NTLM [Registro degli Eventi di Sicurezza di Microsoft Windows]
Uso Improprio dell’Autenticazione Basata su Certificato con Connessioni LDAPS e SMB [Connessione di Rete di Windows]
Phishing su Teams ed Esecuzione di Runtime Portatile per Accesso Non Autorizzato [Creazione Processi di Windows]
Esecuzione di Simulazione
-
Narrativa di Attacco & Comandi: L’avversario avvia una campagna di phishing tramite Microsoft Teams, impersonando il supporto IT. Instruiscono la vittima ad aprire “Quick Assist”. Una volta stabilita la sessione, l’attaccante utilizza l’accesso remoto per inserire un portatile
python.exein una directory camuffata:C:Users<User>AppDataRoamingKB. Infine, per facilitare il movimento laterale, l’attaccante eseguesysteminfoandipconfigper raccogliere dati di ricognizione sull’host. -
Script di Test di Regreazione:
# Script di Simulazione: Phishing su Teams & Esecuzione di Runtime Portatile # 1. Configurazione: Creare la directory 'malevola' in AppData $targetDir = "$env:APPDATAKB" if (!(Test-Path $targetDir)) { New-Item -Path $targetDir -ItemType Directory -Force } # 2. Simulare il runtime portatile (creando un file fittizio chiamato python.exe) # In un attacco reale, questo sarebbe un vero binario. $dummyPython = Join-Path $targetDir "python.exe" New-Item -Path $dummyPython -ItemType File -Force # 3. Simulare il processo genitore 'Teams' che avvia Quick Assist # Nota: Poiché non possiamo facilmente imitare l'albero dei processi effettivi di Teams.exe in un singolo script # senza iniezione avanzata, simuleremo la telemetria imitando la riga di comando # e il comportamento previsto in modo da rispecchiare la logica. Write-Host "[!] Simulazione della sequenza di attacco..." # Attivare la logica di rilevamento simulando la catena di processi # Nota: Per attivare la specifica regola Sigma, il processo 'python.exe' # deve essere visto come un figlio di 'Teams.exe' nel flusso di telemetria. # Step A: Simulare Teams che chiama Quick Assist (simulazione manuale della telemetria) # In un ambiente di test reale, potresti usare uno strumento come 'ProcessHacker' o 'Sysmon' # per manipolare i PID dei genitori, ma per questo script eseguiremo la sequenza. Start-Process "cmd.exe" -ArgumentList "/c echo Simulazione di Teams che chiama Quick Assist" # Step B: Eseguire il 'runtime portatile' dal percorso specifico Start-Process -FilePath $dummyPython -ArgumentList "--version" -ErrorAction SilentlyContinue # Step C: Eseguire Comandi di Scoperta Start-Process "cmd.exe" -ArgumentList "/c systeminfo" Start-Process "cmd.exe" -ArgumentList "/c ipconfig" Start-Process "cmd.exe" -ArgumentList "/c tasklist" Write-Host "[+] Simulazione completata. Controllare il SIEM per allerte." -
Comandi di Pulizia:
# Pulizia: Rimuovere la directory e i file malevoli simulati $targetDir = "$env:APPDATAKB" if (Test-Path $targetDir) { Remove-Item -Path $targetDir -Recurse -Force Write-Host "[+] Pulizia riuscita: $targetDir rimosso." } else { Write-Host "[-] Pulizia fallita: Directory non trovata." }