SOC Prime Bias: Medium

20 Jan 2026 17:18 UTC

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.

Detecções

Consultas DNS Possíveis para IDNs Punycode (via dns)

Equipe da SOC Prime
20 Jan 2026

Detecção de Domínios Codificados em Punycode em Logs DNS [Logs do Resolvedor DNS]

Regras de IA da SOC Prime
20 Jan 2026

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