# DC0103 — Active DNS
> [!info] Data Component MITRE ATT&CK
> **ID:** DC0103 | **Fonte pai:** [[ds0029-network-traffic|DS0029 — Network Traffic]] | **Cobertura:** Consultas DNS em tempo real — resoluções ativas de domínio para IP
## Descrição
Active DNS captura dados de consultas DNS realizadas em tempo real — mapeamentos atuais entre nomes de domínio e seus endereços IP. Diferente do [[dc0096-passive-dns|Passive DNS]] (histórico acumulado ao longo do tempo), o Active DNS reflete o estado *presente* da infraestrutura DNS: qual IP um domínio resolve agora, quais registros TXT estão configurados, quais servidores de mail (MX) aténdem um domínio.
A telemetria de Active DNS é coletada de três formas principais: (1) **Logs de servidores DNS corporativos** — registros de todas as consultas feitas por hosts na rede interna; (2) **Consultas proativas** — equipes de threat intelligence realizam queries periódicas para monitorar domínios de interesse (C2 conhecidos, domínios de grupos rastreados); (3) **Integração com threat intelligence** — plataformas como VirusTotal e Microsoft Defender TI expõem APIs para consulta DNS em tempo real.
No contexto de detecção, Active DNS é essencial para identificar técnicas de [[T1071.004-application-layer-protocol-dns]] (C2 sobre DNS, DNS tunneling) e [[T1568.002-dynamic-resolution-domain-generation-algorithms]] (DGA). Implantes que utilizam DGA geram centenas de nomes de domínio algoritmicamente — a maioria não resolvida — com apenas um ou poucos domínios "ativos" recebendo resposta do servidor C2.
Para analistas de CTI rastreando atores como [[g0032-lazarus-group]], [[g0016-apt29]] e grupos de ransomware ativos no Brasil, a capacidade de consultar ativamente domínios suspeitos (via `dig`, `nslookup`, plataformas OSINT) é fundamental para confirmar infraestrutura ativa antes de indicar um IoC como válido.
## Telemetria
| Fonte | Log / Ferramenta | Descrição |
|-------|-----------------|-----------|
| Windows DNS Server | **DNS Analytical Log** | Todas as consultas processadas pelo servidor DNS Windows |
| BIND / Named | **query.log** | Log de todas as queries (`query` ou `querylog` no named.conf) |
| Pi-hole / AdGuard | **query.log** | DNS interno com bloqueio de domínios maliciosos |
| Infoblox / BlueCat | **DNS query logs** | DNS enterprise com integração SIEM nativa |
| Sysmon | **EID 22** — DNSEvent | Consultas DNS realizadas por processos Windows (com PID/processo) |
| Zeek (Bro) | **dns.log** | Queries e respostas DNS capturadas no nível de rede |
| Suricata | **eve.json (dns events)** | Consultas e respostas DNS com alertas de assinatura |
| AWS Route 53 | **Query Logs (CloudWatch)** | Consultas DNS para domínios hospedados no Route 53 |
| Azure DNS | **DNS Diagnostic Logs** | Queries DNS em zonas privadas e públicas Azure |
| GCP Cloud DNS | **DNS Query Logs** | Logs de consulta DNS via Cloud Logging |
| Ferramentas CLI | `dig`, `nslookup`, `host` | Consultas manuais/automatizadas para threat intel |
| VirusTotal API | `/domain/report` | Resolução atual + histórico + detecções de malware |
## Queries de Detecção
### KQL — Microsoft Sentinel: DNS Tunneling — Alta Entropia em Subdomínios
```kql
DnsEvents
| where TimeGenerated > ago(1h)
| where QueryType == "A" or QueryType == "TXT"
| extend TopDomain = strcat(
tostring(split(Name,".")[-2]), ".",
tostring(split(Name,".")[-1])
)
| extend Subdomain = replace_string(Name, strcat(".", TopDomain), "")
| where strlen(Subdomain) > 30 // subdomínios muito longos = DNS tunneling
| summarize
QueryCount = count(),
UniqueSubdomains = dcount(Subdomain),
SampleDomain = any(Name)
by ClientIP, TopDomain, bin(TimeGenerated, 5m)
| where UniqueSubdomains > 10 or QueryCount > 100
| extend Alert = "Possível DNS Tunneling"
| order by QueryCount desc
```
### KQL — Sentinel: Sysmon EID 22 — Processo Consultando Domínio Recém-Criado
```kql
Event
| where Source == "Microsoft-Windows-Sysmon" and EventID == 22
| parse EventData with * "<Data Name='QueryName'>" DnsQuery "</Data>" *
| parse EventData with * "<Data Name='Image'>" Process "</Data>" *
| parse EventData with * "<Data Name='ProcessId'>" Pid "</Data>" *
| where DnsQuery matches regex @"(?i)[a-z0-9]{8,}\.(tk|ml|ga|cf|gq|top|pw|xyz)"
or strlen(tostring(split(DnsQuery, ".")[0])) > 20
| project TimeGenerated, Computer, Process, Pid, DnsQuery
| order by TimeGenerated desc
```
### SPL — Splunk: Domínios DGA — Consultas sem Resposta (NXDOMAIN)
```spl
index=dns sourcetype=zeek:dns
rcode_name="NXDOMAIN"
| stats count as nxdomain_queries, dc(query) as unique_domains by src_ip
| where nxdomain_queries > 100 AND unique_domains > 50
| eval dga_score=round(unique_domains/nxdomain_queries*100,1)
| where dga_score > 70
| eval alert="Possível DGA - Alto volume de NXDOMAIN"
| sort - nxdomain_queries
```
### SPL — Splunk: C2 via DNS TXT Records (Exfiltração/Implant Config)
```spl
index=dns sourcetype=zeek:dns
qtype_name="TXT"
NOT query IN ("*.google.com","*.microsoft.com","*.cloudflare.com",
"_dmarc.*","_domainkey.*","*.amazonaws.com")
| where len(answers) > 100 // respostas TXT muito longas = possível dado exfiltrado
| stats count, values(answers) as txt_content by query, src_ip
| sort - count
```
## Técnicas Relacionadas
| Técnica | Nome | Relevância |
|---------|------|-----------|
| [[T1071.004-application-layer-protocol-dns]] | Application Layer Protocol: DNS | C2 e exfiltração via protocolo DNS |
| [[T1568.002-dynamic-resolution-domain-generation-algorithms]] | Dynamic Resolution: DGA | Geração algorítmica de domínios — alto volume NXDOMAIN |
| [[T1583.001-acquire-infrastructure-domains]] | Acquire Infrastructure: Domains | Identificação de domínios recém-registrados por adversários |
| [[T1566.002-phishing-spearphishing-link]] | Phishing: Spearphishing Link | Domínios de phishing ativos detectados por resolução DNS |
| [[t1590-gather-victim-network-information\|T1590-gather-victim-network-information]] | Gather Victim Network Information | Adversários consultando DNS da vítima para reconhecimento |
## Contexto LATAM
> [!warning] Relevância para Brasil e América Latina
> DNS é o vetor de exfiltração e C2 mais subestimado pelas organizações brasileiras. Malwares bancários como **Grandoreiro** e campanhas de smishing direcionadas ao **PIX** frequentemente usam DNS para resolver servidores C2 que mudam de IP diariamente — tornando bloqueios por IP ineficazes e highlights a importância da análise de domínios.
>
> **Ação prioritária para SOCs brasileiros:** Habilitar logging completo do servidor DNS interno (Windows DNS Analytical Log ou BIND querylog) e correlacionar com Sysmon EID 22 para mapear qual processo está realizando cada consulta. Domínios com TLD como `.tk`, `.ml`, `.top` e `.xyz` em consultas geradas por processos Office ou navegadores são indicadores imediatos de comprometimento.
>
> Para threat hunters: monitorar consultas DNS para domínios com palavras-chave bancárias brasileiras ("bradesco","itau","caixa","nubank","picpay") registradas em TLDs suspeitos é um hunt de alto retorno para detecção de phishing ativo.
## Referências
- [MITRE ATT&CK — DC0103 Active DNS](https://attack.mitre.org/datacomponents/DC0103)
- [Sysmon Event ID 22 — DNS Query](https://learn.microsoft.com/en-us/sysinternals/downloads/sysmon)
- [BIND DNS Query Logging](https://bind9.readthedocs.io/en/latest/reference.html#logging-statement)
- [VirusTotal DNS API](https://docs.virustotal.com/reference/domain-info)
- [[dc0096-passive-dns|DC0096 — Passive DNS]]
- [[ds0029-network-traffic|DS0029 — Network Traffic]]
- [[_defenses|Hub de Defesas]]
- [[_data-sources|Índice de Data Sources]]