OSINT10 min read

What One Domain Can Tell You — A DNS Investigation Walkthrough

Give me 10 minutes and a single domain name and I'll tell you the host, the email provider, the DNS managers, the migration history, and which third-party services the site depends on. No login required, no scraping.

Enis Getmez avatarBy Enis GetmezFounder & Lead Engineer

What you can learn from a single domain

Most security and competitive-intelligence work starts with a domain name. The interesting thing is how much of the target's infrastructure you can map without ever visiting the website. DNS is public. Every record someone publishes is queryable by anyone with a resolver. WHOIS is partially public (more on that). Certificate transparency logs are entirely public.

This article walks through the 10-minute investigation I run on any new client domain, with the specific records to query, what each tells you, and the gotchas. Every query below is doable with free public tools — Krawly covers most of them, and `dig` covers the rest if you prefer command-line.

A note on what this is not: this is not "OSINT to attack someone". It is the same map you would build for your own infrastructure to make sure nothing leaks publicly that you didn't intend to leak. If you can read this map of a competitor, you can read the same map of your own domain — and you should.

Krawly DNS Record Checker — A, AAAA, MX, TXT, NS, SOA, CAA records in one query
Krawly DNS Record Checker — A, AAAA, MX, TXT, NS, SOA, CAA records in one query

Step 1: A and AAAA records — where the site actually lives

The most basic question: what IP serves `example.com`?

```

dig example.com A

dig example.com AAAA

```

What this tells you:

  • A single IP → small-scale hosting, often a single VPS or a small dedicated server. You can geolocate the IP, identify the hosting provider, and sometimes the data center.
  • Cloudflare IP range (104.16-31.x or 172.64-71.x) → site is proxied through Cloudflare. The real origin IP is hidden. (See step 6 for how to sometimes find it anyway.)
  • AWS Cloudfront / Vercel / Netlify IPs → cloud-edge hosting. The site uses a CDN-first architecture.
  • A handful of different IPs from the same provider → either anycast (Cloudflare, Cloudfront) or basic round-robin DNS for redundancy.
  • What you can do with this: run Reverse IP Lookup on the IP to find other sites hosted on the same server. For shared hosting, this reveals every other customer site on the same box; for dedicated hosting, usually only the target.

    Step 2: MX records — the email provider

    ```

    dig example.com MX

    ```

    The MX records identify which mail server handles email for the domain. Pattern matching the MX target tells you the email provider:

    MX target containsProvider
    `aspmx.l.google.com`Google Workspace (formerly G Suite)
    `outlook.com`, `mail.protection.outlook.com`Microsoft 365
    `mx.zoho.com`Zoho Mail
    `mxa.mailgun.org`, `mxb.mailgun.org`Mailgun (transactional only)
    `smtp.fastmail.com`Fastmail
    `mx.privateemail.com`Namecheap PrivateEmail
    `mailhost.protonmail.ch`Proton Mail

    Why this matters for competitive intel: a startup on Google Workspace is the modern default. A small business still on cPanel mail is using legacy infrastructure. A company with Mailgun MX records uses transactional email — they're shipping product. A company with empty MX records doesn't receive email on this domain (their public-facing email lives on a different domain, or doesn't exist).

    Step 3: TXT records — the messiest, most informative

    This is where the gold is. TXT records carry SPF, DKIM signing policy, DMARC policy, domain ownership verifications for third-party services, and various ad-hoc bits.

    ```

    dig example.com TXT

    dig _dmarc.example.com TXT

    dig default._domainkey.example.com TXT

    ```

    The patterns you'll commonly see:

    SPF record — `v=spf1 include:_spf.google.com ~all` tells you which services are authorised to send email for the domain. The `include:` directives leak third-party email integrations. `include:mailgun.org` means they use Mailgun. `include:_spf.salesforce.com` means they use Salesforce email. `include:sendgrid.net` means SendGrid. Each one is a known dependency.

    DMARC record — `v=DMARC1; p=reject; rua=mailto:dmarc-reports@example.com`. The `rua` email address tells you where DMARC reports are sent — sometimes a third-party DMARC vendor (Valimail, dmarcian, etc.), sometimes the company's own security team.

    Domain verification tokens:

  • `google-site-verification=...` — Google Search Console is used
  • `facebook-domain-verification=...` — Facebook Business / Meta Ads
  • `stripe-verification=...` — payment processor
  • `MS=ms12345678` — Microsoft 365 admin domain verification
  • `apple-domain-verification=...` — Apple Pay
  • `adobe-...` — Adobe Marketing Cloud
  • `atlassian-domain-verification=...` — Atlassian (Jira, Confluence)
  • Every verification token is a "yes, this company uses this service" signal. None of them are sensitive on their own, but the aggregate paints a picture of the stack.

    Step 4: NS records — who manages DNS

    ```

    dig example.com NS

    ```

    The nameservers tell you who is running DNS. Patterns:

    NS patternLikely DNS provider
    `*.cloudflare.com`Cloudflare
    `*.awsdns-*.com`AWS Route 53
    `ns1.dnsimple.com`DNSimple
    `*.googledomains.com`Google Domains (or pre-Squarespace transition)
    `ns1.example.com` (NS on same domain)Self-hosted DNS or registrar-default

    NS records change less often than other DNS state. If a domain's NS records show two different DNS providers (e.g. Cloudflare + Route 53), that's mid-migration. Catching a migration in progress is sometimes useful.

    Step 5: CAA records — who can issue certificates

    ```

    dig example.com CAA

    ```

    CAA records list which Certificate Authorities are authorised to issue TLS certificates for the domain. Less commonly published than SPF/DMARC but very informative when present:

  • `example.com. CAA 0 issue "letsencrypt.org"` → uses Let's Encrypt
  • `example.com. CAA 0 issue "digicert.com"` → uses DigiCert (enterprise)
  • `example.com. CAA 0 issue "google.com"` → Google Trust Services (often Google Cloud infrastructure)
  • A site with CAA records configured is run by someone who thinks about TLS hygiene. A site without is the norm but is missing a (small) hardening step.

    Step 6: WHOIS — what's left of it

    Since GDPR took effect, most WHOIS data for individual domains is redacted. You'll commonly see "REDACTED FOR PRIVACY" instead of registrant details.

    What's still visible:

  • Registrar — which company sold the domain (GoDaddy, Namecheap, MarkMonitor for big brands, etc.). Brand sensitivity gives away whether the company treats domains as legal assets.
  • Created / updated / expires dates — when was the domain registered? When was it last renewed? When does it expire? A domain expiring in 30 days that hasn't auto-renewed is a sign of corporate drift or a forgotten asset.
  • Nameservers — same as the NS query.
  • For `.com` and `.net` you have to query through the registrar's public WHOIS; for ccTLDs (`.uk`, `.de`, `.fr`) the data is often even more restricted.

    Run DNS / WHOIS Lookup — Krawly's version returns everything in one query.

    Step 7: Certificate transparency logs

    Every TLS certificate issued for a public domain in 2026 is logged in public Certificate Transparency (CT) logs. This is by browser policy — Chrome, Firefox, and Safari refuse certs that aren't logged.

    What this means for OSINT: you can query CT logs for any domain and get every certificate ever issued for it, including subdomains. `crt.sh` is the most common front end.

    Why this matters: certificates for internal subdomains (`staging.example.com`, `admin.example.com`, `api-v2.example.com`) leak through CT logs even when those subdomains are not publicly linked. CT-log search is the most efficient way to enumerate subdomains.

    Krawly's CT Log Search wraps this lookup.

    Step 8: The Cloudflare-bypass trick

    When a target uses Cloudflare, the A record points at Cloudflare's edge. But sometimes the MX record still points at the origin IP (because mail can't easily go through Cloudflare's HTTP proxy). If the company hosts their mail server on the same machine as their web server (common for small shops), the MX record leaks the real IP.

    Other ways the origin sometimes leaks:

  • An old A record on a subdomain. `old.example.com` might still resolve to the pre-Cloudflare origin.
  • A subdomain that was added after Cloudflare and not proxied. Common for legacy mail subdomains, FTP, etc.
  • The origin's TLS cert in CT logs. If the origin has its own cert with the same domain, the cert might leak the IP via SAN entries.
  • This is not "hacking" — it is observing public DNS history. If your origin IP leaks, attackers can bypass your Cloudflare-fronted DDoS protection and hit your real server directly. Use a different IP for non-web services, or front them with Cloudflare too.

    The 10-minute walkthrough on any target

    For real OSINT work on a competitor or a security audit on your own infrastructure:

    1. DNS Record Checker — pull A, AAAA, MX, TXT, NS, SOA, CAA in one shot

    2. DNS / WHOIS Lookup — registrar, dates, nameservers

    3. Reverse IP Lookup — other sites on the same IP

    4. CT Log Search — every certificate ever issued for the domain, including subdomains

    5. Hosting Detector — confirm the hosting provider from the IP + ASN

    Five queries, five minutes, complete map of the target's public infrastructure footprint. Useful for security baselining your own assets; equally useful for "where does our competitor live" intelligence.

    What you cannot learn from DNS

    Things people commonly think they can find via DNS but cannot:

  • Specific employee names or emails. DNS leaks domains, not identities.
  • Internal application architecture. DNS shows public-facing services only; the internal Kubernetes cluster behind the proxy is invisible.
  • Source code or commit history. DNS does not interact with code repositories.
  • Login pages or admin panels. DNS reveals subdomains; visiting the subdomain to find a login page is a separate step (and "scanning for admin panels" crosses into adversarial territory).
  • The DNS map is broad and shallow. For depth you need other tools — most of which require explicit authorisation from the asset owner.

    Methodology

    Every technique above is purely passive — querying public DNS, public WHOIS, and public CT logs. No traffic to the target's servers beyond DNS resolution. No scraping. No authentication. Equivalent to checking a phone book.

    If you're auditing your own infrastructure for what leaks publicly, run all five queries above against your own primary domain. If any of the records surfaces something you didn't expect (an old subdomain still resolving, an SPF `include:` from a service you no longer use, a CT log entry for a deprecated test cert), that's a hygiene fix.

    Send corrections, additions, or interesting case studies to info@krawly.io.

    Try All 170+ Free Tools

    No signup required. Start analyzing websites, scraping data, and more.

    Browse All Tools

    Related Articles