Saltar al contenido

DNS, WHOIS y crt.sh

import { Aside } from ‘@astrojs/starlight/components’;

DNS Lookup

Consulta todos los tipos de registros DNS de un dominio.

from src.tools.dns_tool import dns_lookup
result = await dns_lookup("acme-corp.com")

Registros que consulta

RegistroQue contiene
AIPv4 del dominio
AAAAIPv6 del dominio
MXServidores de correo
NSServidores de nombres (nameservers)
TXTTexto libre — SPF, DKIM, verificaciones de propiedad
CNAMEAlias a otro dominio
SOAStart of Authority — admin del dominio

Que buscar

  • Registros MX: proveedores de correo inusuales pueden indicar uso de servicios anonimos
  • SPF/TXT: la ausencia de SPF facilita el spoofing del dominio
  • NS: nameservers baratos o de registradores “bulletproof” son senales de alerta
  • TTL bajo: puede indicar dominio preparado para cambio rapido (DGA-like)

Ejemplo de salida

[DNS] evil-phishing.com
├─ A: 185.220.101.34
├─ MX: mail.evil-phishing.com (prioridad 10)
├─ NS: ns1.bulletproof-hosting.ru, ns2.bulletproof-hosting.ru
└─ TXT: "v=spf1 include:mailchimp.com ~all"

WHOIS Lookup

Consulta la informacion de registro de un dominio.

from src.tools.whois_tool import whois_lookup
result = await whois_lookup("acme-corp.com")

Informacion que devuelve

CampoDescripcion
registrarEmpresa que registro el dominio
creation_dateFecha de registro original
expiration_dateFecha de expiracion
updated_dateUltima actualizacion
name_serversNameservers actuales
statusEstado (active, redemptionPeriod, etc.)
registrantRegistrant (si no esta oculto por privacy)
emailsEmails de contacto

Senales de alerta en WHOIS

  • Registro muy reciente (< 30 dias): dominios de phishing suelen ser nuevos
  • Expiracion pronto: dominio temporal
  • Privacy protection: oculta los datos del registrante (comun pero relevante)
  • Registrador “bulletproof”: algunos registradores son conocidos por ignorar abusos

Limitaciones

Con GDPR, la mayoria de WHOIS anonimiza los datos del registrante. Para info mas completa usa RDAP o servicios premium como DomainTools.


crt.sh — Certificate Transparency

Certificate Transparency es un registro publico de todos los certificados SSL emitidos. crt.sh lo indexa y permite buscar subdominios.

from src.tools.crtsh import crtsh_lookup
result = await crtsh_lookup("acme-corp.com")

Que devuelve

Lista de subdominios encontrados en certificados emitidos para ese dominio:

[crt.sh] acme-corp.com
├─ mail.acme-corp.com
├─ vpn.acme-corp.com
├─ staging.acme-corp.com
├─ admin.acme-corp.com
├─ api-internal.acme-corp.com
└─ dev.acme-corp.com ← ¡Interesante!

Por que es util

Los certificados SSL son publicos por definicion — incluso para subdominios internos que no aparecen en DNS publico. Esto hace que crt.sh revele infraestructura que el objetivo no ha hecho visible intencionalmente.

Tecnicas adicionales

  • Wildcard search: busca %.acme-corp.com para encontrar cualquier subdominio
  • Busca el dominio en el CN (Common Name) y en los SANs (Subject Alternative Names)
  • Correlaciona con los resultados de DNS para identificar subdominios activos vs inactivos

Limitaciones

  • Solo muestra subdominios que han tenido certificado SSL — los que usan solo HTTP no aparecen
  • Puede haber falsos positivos por certificados de empresas con nombres similares