OSINT and footprinting
Before a single packet hits your target, an authorized attacker has already mapped your subdomains, your tech stack, your employees, and your leaked secrets — all from public data. This is footprinting, and it decides the whole engagement.
A red-team lead opens a fresh engagement against a company they have never touched. They don’t run a scanner. They don’t send a packet to the target. For the first two days they read: a certificate-transparency log, a code-search index, three job postings, a marketing slide deck someone left public on a CDN, and the LinkedIn profiles of the platform team. By Friday they have a list of 140 hostnames the company’s own ops team would struggle to enumerate, the exact version of the auth gateway, the name of the CI system, and a Slack-webhook URL committed to a forked repo two years ago. They have not “attacked” anything — every byte they read was published voluntarily. But they now know the target better than most of its engineers do, and the actual intrusion hasn’t started. This is footprinting, and it is the part of an attack that defenders almost never see.
By the end of this lesson you’ll know how much an authorized attacker learns about your systems from public data alone — before they send a single packet — and which of those leaks you can actually shut off.
Authorization first: passive recon is still in scope
Everything below assumes you are operating under a signed engagement with explicit scope — a lab, a CTF, a bug-bounty program with an in-scope asset list, or your own infrastructure. “It’s only public data” is not a license to skip authorization. Scraping a target’s employees, enumerating their cloud assets, and cataloguing their leaked secrets is reconnaissance against a named organization; doing it outside an authorized engagement can still cross legal and ethical lines (and certainly violates most bug-bounty rules). The reason we teach footprinting at all is defensive: you cannot reduce an attack surface you have never seen the way an attacker sees it. Read this as a blue-teamer learning what the red team already knows.
The defining property of footprinting is that it is passive. The attacker interacts only with third parties — search engines, public registries, the target’s own published pages — and never sends traffic that the target’s logs would attribute to an attack. There is no port scan to trip an IDS, no failed login to spike a dashboard, no anomalous request in the WAF. That asymmetry is the whole point: recon is the longest phase of a real intrusion and the one with the lowest chance of detection. In ATT&CK terms this is the Reconnaissance tactic (TA0043) — the work that happens before initial access, the part that almost never shows up in an incident timeline because nothing about it touched the victim.
What “public” actually leaks
The mistake defenders make is imagining their attack surface as the IP ranges and hostnames they deliberately publish. The real surface is far larger, and most of it leaks through systems nobody thinks of as security-relevant. A few of the richest sources:
- Certificate Transparency logs. Every TLS certificate a public CA issues is logged in append-only CT logs, by design, so browsers can detect mis-issuance. The side effect: every hostname you ever put a cert on —
staging.,internal-vpn.,grafana., the half-finishednew-billing.— is now permanently searchable. You cannot un-publish it. CT alone routinely surfaces subdomains the target’s own team forgot existed. - DNS and WHOIS. Passive-DNS aggregators (which record historical resolutions seen across the internet) reveal old IPs, abandoned hosts, and the shape of your infrastructure without you ever answering a query from the attacker. WHOIS and registrar data leak ownership, name servers, and registration patterns that tie assets together.
- Search-engine dorking. Targeted queries (
site:,filetype:,inurl:) pull indexed admin panels, exposed config files, directory listings, and error pages that leak stack traces. The content was crawled by Google, not requested from the target by the attacker. - Code and secrets. Public repos, gists, and forks leak hardcoded keys, internal hostnames, API endpoints, and architecture in comments. A secret committed once and “removed” lives forever in git history and in the forks and mirrors that copied it.
- People and metadata. Job postings name your exact stack (“must have 3y Kafka, Istio, and Snowflake”). Conference talks and slide decks describe your architecture. Document metadata embeds usernames and internal paths. Breach-dump aggregators tie employee emails to passwords reused elsewhere.
Notice the pattern: none of these required the attacker to touch the target. Each is a third party that the target fed, voluntarily, over years.
From scattered leaks to a single map
The skill that separates a senior operator from a beginner is not collecting more data — it’s correlation. Any one CT entry or job posting is noise. The value appears when you pivot between sources: a hostname from CT resolves (via passive DNS) to an IP in a cloud range; that range plus a job posting naming “EKS” tells you it’s Kubernetes; a public repo from an employee named in that posting leaks the ingress hostname pattern; and now internal-admin.[pattern].example.com is a high-value guess you never had to scan to find. Each source is a weak signal; the map is the product of joining them.
The numbers are why this matters. On a mature org, certificate transparency plus passive DNS plus a couple of subdomain wordlists routinely turns a “we have maybe 30 public hosts” estimate into 150–300 discovered hostnames, a large fraction of which the security team did not know were exposed. Shadow IT, forgotten staging environments, acquired-company assets, and one-off marketing microsites dominate that gap. The breach almost never comes through the front door you hardened — it comes through legacy-2019.example.com that still runs an unpatched app and that nobody remembered was on the internet.
▸Why this works
Why is passive recon so much more dangerous to the defender than an active scan? Because the defender’s entire detection model is built around traffic to their assets — IDS, WAF, rate limits, anomaly alerts. Footprinting generates none of that. The attacker’s queries hit Google, Censys, crt.sh, GitHub, and breach aggregators — never your servers. By the time you see a single anomalous request, the attacker already has a target list, version fingerprints, and a leaked credential to try. Your visibility starts at the moment recon ends, which is exactly the moment you’ve already lost the information war.
What you can actually shut off
Footprinting is not unstoppable — but the controls are about reducing what you publish, not about blocking the attacker (you can’t block reads of third-party data). The defensive program looks like attack-surface management run continuously: enumerate your own CT logs and passive DNS the way an attacker would, and reconcile that list against your asset inventory so a forgotten staging. host gets found by you first. Decommission what you don’t need — every host you retire is a host that can’t leak. Scan your own repos and CI for committed secrets, and treat any leaked secret as burned: rotate it, because git history is forever. Strip metadata from public documents, and brief teams that job postings and conference talks are recon feeds. None of this makes you invisible; it shrinks the surface and removes the easy wins.
Your asset inventory says you have ~30 public hosts. An authorized red team's footprinting report lists 210, including several forgotten staging and acquired-company subdomains. Which response actually reduces risk?
Why does passive footprinting almost never appear in the target's incident timeline?
A red team finds 210 hostnames for an org that believed it had ~30 public hosts. What most likely accounts for the gap?
Order a passive footprinting workflow from first action to a usable target list, without ever touching the target:
- 1 Pull all hostnames from certificate transparency logs for the domain
- 2 Resolve and enrich them via passive DNS to find live IPs and ranges
- 3 Pivot to code search + job postings to infer the tech stack and naming patterns
- 4 Correlate sources into one map and rank hosts by likely value (forgotten/legacy first)
- 01Explain why passive footprinting is so dangerous to a defender and why it rarely appears in an incident timeline.
- 02What does 'public' data actually leak, and why is correlation the key skill rather than collection?
Footprinting is the passive reconnaissance phase that happens before any packet reaches the target. Operating only under authorization, the attacker reads third-party and public sources — certificate transparency logs, passive DNS, search-engine dorks, public code and leaked secrets, job postings, and breach dumps — none of which touch the target, so the victim’s IDS, WAF, and logs record nothing (ATT&CK Reconnaissance, TA0043). The defining asymmetry is that the defender’s visibility only begins when recon ends. The senior skill is correlation: joining weak signals across sources turns a believed ~30 public hosts into 150–300 discovered ones, with forgotten staging, acquired-company, and shadow-IT assets dominating the gap — and the breach usually comes through one of those, not the hardened front door. You can’t block reads of public data, so the defense is to footprint yourself continuously: enumerate your own CT and passive DNS, reconcile against inventory, decommission what you don’t need, scan repos for secrets and rotate anything leaked, and strip metadata from public documents. Next time someone says “but it’s only public,” your reflex is: public is exactly where the attack surface lives.
Practice
Start at the top. Tasks go easiest → hardest: recall a fact, apply it to a case, then a senior-level stretch. Open one, attempt it, then reveal.
Something unclear?
Ask a question about this lesson. Questions are anonymous and go straight to the author to make the lesson better.