SOC Prime Bias: Médio

20 Jan 2026 20:18

Adicione Punycode à sua Rotina de Caça a Ameaças

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Seguir
Adicione Punycode à sua Rotina de Caça a Ameaças
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumo

O artigo explica como Nomes de Domínio Internacionalizados (IDNs) podem ser utilizados de forma maliciosa através do Punycode para gerar URLs enganosas que parecem legítimas à primeira vista. Ele aborda conceitos básicos de codificação/decodificação, compartilha exemplos de strings Punycode observados na telemetria DNS e enfatiza uma heurística prática de caça: monitorar logs de consultas DNS para o xn-- prefixo como um indicador de alto sinal de possível spoofing ou abuso baseado em IDN.

Investigação

O autor demonstra a decodificação de um domínio codificado em Punycode usando um exemplo curto em Python e, em seguida, aplica a mesma lógica a observações do mundo real. Trechos de logs de DNS mostram consultas repetidas para xn--domínios com prefixo, sugerindo consultas automatizadas ou baseadas em script em vez de navegação orgânica do usuário. O padrão ajuda a ilustrar como os atacantes podem operacionalizar sósias de IDN em escala enquanto permanecem difíceis de detectar em logs brutos.

Mitigação

As equipes de segurança devem adicionar buscas rotineiras por xn-- nos logs do resolvedor DNS e classificar cada correspondência como um potencial caso de abuso IDN. Siga revisando domínios decodificados em busca de caracteres Unicode suspeitos (e.g., homógrafos) e aplique controles padrão, como validação de URL, verificação de reputação de domínio e correlação com telemetria de endpoint/processo. Onde possível, enriqueça as detecções com listas de permissão de uso legítimo conhecido de IDN no seu ambiente para reduzir ruído.

Resposta

Quando um domínio Punycode é identificado, os analistas devem decodificar o domínio, avaliar a reputação e o contexto histórico, e determinar se o tráfego está alinhado com a atividade de negócios esperada. Se a intenção maliciosa for confirmada, bloqueie ou redirecione o domínio e faça um pivô para identificar a infraestrutura relacionada e tentativas de acesso subsequentes. Mantenha a vigilância contínua para abuso de IDN/Punycode como um componente permanente de caça a ameaças, ajustando os limiares e enriquecimentos ao longo do tempo para manter alta a fidelidade.

Fluxo de Ataque

Ainda estamos atualizando esta parte. Inscreva-se para ser notificado

Notifique-me

Execução da Simulação

Pré-requisito: O Check Pre‑flight de Telemetria & Base deve ter passado.

  • Narrativa de Ataque & Comandos:
    Um adversário quer contatar um servidor de comando e controle que está escondido atrás de um domínio Unicode para evitar uma inspeção casual. Eles codificam o domínio usando punycode, que resulta em uma string começando com “xn--”. Ao emitir uma consulta DNS para este nome codificado, o atacante gera exatamente a telemetria que a regra monitora. O atacante realiza a consulta do host comprometido usando ferramentas internas do Windows para permanecer “vivendo da terra”.

    # Domínio malicioso punycode (exemplo: xn--e1afmkfd.xn--p1ai)
    $maliciousDomain = "xn--e1afmkfd.xn--p1ai"
    Resolve-DnsName -Name $maliciousDomain -DnsOnly
  • Script de Teste de Regressão:

    <#
    .SYNOPSIS
        Simula uma consulta DNS punycode para validar a regra de detecção “Domínios Codificados em Punycode”.
    
    .DESCRIPTION
        O script realiza uma única consulta DNS para um domínio punycode criado.
        Ele registra a ação, espera brevemente para garantir a ingestão do log e então sai.
    #>
    
    #--- Configuração ---
    $punycodeDomain = "xn--e1afmkfd.xn--p1ai"   # Substituir por qualquer FQDN codificado em punycode
    $logFile       = "$env:Temppunycode_test.log"
    
    #--- Execução ---
    "[$(Get-Date -Format o)] Iniciando consulta DNS para $punycodeDomain" | Out-File -FilePath $logFile -Append
    try {
        Resolve-DnsName -Name $punycodeDomain -DnsOnly -ErrorAction Stop | Out-Null
        "[$(Get-Date -Format o)] Consulta bem-sucedida" | Out-File -FilePath $logFile -Append
    } catch {
        "[$(Get-Date -Format o)] Consulta falhou: $_" | Out-File -FilePath $logFile -Append
    }
    
    #--- Pausa opcional para permitir ingestão SIEM (ajustar conforme necessário) ---
    Start-Sleep -Seconds 5
    "[$(Get-Date -Format o)] Script concluído" | Out-File -FilePath $logFile -Append
  • Comandos de Limpeza:

    # Limpar cache DNS para remover a consulta do cache do resolvedor local
    ipconfig /flushdns
    
    # Remover arquivo de log temporário criado pelo script de teste
    Remove-Item -Path "$env:Temppunycode_test.log" -ErrorAction SilentlyContinue