SOC Prime Bias: Medio

20 Gen 2026 20:18

Aggiungere Punycode alla tua Routine di Caccia alle Minacce

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Segui
Aggiungere Punycode alla tua Routine di Caccia alle Minacce
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Sommario

L’articolo spiega come i Nomi di Dominio Internazionalizzati (IDN) possano essere utilizzati come armi attraverso Punycode per generare URL ingannevoli che sembrano legittimi a prima vista. Illustra i concetti base di codifica/decodifica, condivide esempi di stringhe Punycode osservate nella telemetria DNS e sottolinea una euristica pratica di ricerca: monitorare i log delle query DNS per il xn-- prefix as a high-signal indicator of potential IDN-based spoofing or abuse.

Indagine

L’autore dimostra la decodifica di un dominio codificato in Punycode usando un breve esempio in Python e applica poi la stessa logica a osservazioni nel mondo reale. Estratti di log DNS mostrano ricerche ripetute per domini con prefisso xn--, suggerendo query automatizzate o scriptate piuttosto che una navigazione organica dell’utente. Il modello aiuta a illustrare come gli aggressori possano operazionalizzare somiglianze IDN su larga scala restando difficili da individuare nei log grezzi.

Mitigazione

I team di sicurezza dovrebbero aggiungere ricerche di routine per xn-- nei log del risolutore DNS e trattare ogni corrispondenza come un potenziale caso di abuso IDN. Seguire con la revisione dei domini decodificati alla ricerca di caratteri Unicode sospetti (ad esempio, omoglifi), quindi applicare controlli standard come la validazione degli URL, i controlli di reputazione del dominio e la correlazione con la telemetria endpoint/processo. Dove possibile, arricchire le rilevazioni con whitelist di utilizzi IDN legittimi conosciuti nel vostro ambiente per ridurre il rumore.

Risposta

Quando un dominio Punycode è identificato, gli analisti dovrebbero decodificare il dominio, valutarne la reputazione e il contesto storico e determinare se il traffico è allineato con l’attivitĂ  commerciale prevista. Se si conferma un intento malevolo, bloccare o deviare il dominio e passare a identificare infrastrutture correlate e tentativi di accesso a valle. Mantenere un monitoraggio continuo per l’abuso di IDN/Punycode come componente permanente della caccia alle minacce, regolando soglie e arricchimenti nel tempo per mantenere alta la fedeltĂ .

Flusso di Attacco

Stiamo ancora aggiornando questa parte. Iscriviti per ricevere una notifica

Notificami

Esecuzione di Simulazione

Prerequisito: Il Controllo Pre-volo di Telemetria e Baseline deve essere superato.

  • Narrativa di Attacco & Comandi:
    Un avversario vuole contattare un server di comando e controllo nascosto dietro un dominio Unicode per evitare un’ispezione superficiale. Codificano il dominio usando punycode, il che risulta in una stringa che inizia con “xn--”. Emettendo una query DNS per questo nome codificato, l’attaccante genera l’esatta telemetria che la regola monitora. L’attaccante esegue la ricerca dall’host compromesso utilizzando gli strumenti integrati di Windows per rimanere “living-off-the-land”.

    # Dominio punycode malevolo (esempio: xn--e1afmkfd.xn--p1ai)
    $maliciousDomain = "xn--e1afmkfd.xn--p1ai"
    Resolve-DnsName -Name $maliciousDomain -DnsOnly
  • Script di Test di Regressione:

    <#
    .SINOSSI
        Simula una query DNS punycode per convalidare la regola di rilevamento “Domini Codificati in Punycode”.
    
    .DESCRIZIONE
        Lo script esegue una singola ricerca DNS per un dominio punycode creato.
        Registra l'azione, attende brevemente per assicurare l'ingestione del log, e poi esce.
    #>
    
    #--- Configurazione ---
    $punycodeDomain = "xn--e1afmkfd.xn--p1ai"   # Sostituirlo con qualsiasi FQDN codificato in punycode
    $logFile       = "$env:Temppunycode_test.log"
    
    #--- Esecuzione ---
    "[$(Get-Date -Format o)] Inizio della query DNS punycode per $punycodeDomain" | Out-File -FilePath $logFile -Append
    try {
        Resolve-DnsName -Name $punycodeDomain -DnsOnly -ErrorAction Stop | Out-Null
        "[$(Get-Date -Format o)] Query riuscita" | Out-File -FilePath $logFile -Append
    } catch {
        "[$(Get-Date -Format o)] Query fallita: $_" | Out-File -FilePath $logFile -Append
    }
    
    #--- Pausa opzionale per consentire l'ingestione SIEM (regolare secondo necessitĂ ) ---
    Start-Sleep -Seconds 5
    "[$(Get-Date -Format o)] Script completato" | Out-File -FilePath $logFile -Append
  • Comandi di Pulizia:

    # Svuotare la cache DNS per rimuovere la query dalla cache del risolutore locale
    ipconfig /flushdns
    
    # Rimuovere il file di log temporaneo creato dallo script di test
    Remove-Item -Path "$env:Temppunycode_test.log" -ErrorAction SilentlyContinue