Attack surface inventory: what you expose publicly

Most asset registers are written from the inside out: asset tags, machine names, owning department, which rack it sits in. An attack surface inventory asks a different question — seen from outside your company, which addresses, which names and which services answer? The two lists rarely match, and the gap almost always runs the same direction: the outside sees more than the inside remembers.

The gap is not anyone’s negligence. Requesting a certificate leaves a public record. A cloud test environment a department spins up never passes through IT. A vendor installing equipment opens a management port so they can maintain it remotely. Each decision is reasonable on its own; together they produce a public-facing list nobody owns.

This article covers how to get that list back: which public sources an attacker uses to derive your assets, which categories get missed, five steps you can run without buying anything, and what to do with each item once you have it.

From one domain name to a list of usable targetsThe chain starts with a public domain name. Four classes of public record — domain and autonomous system registration, DNS records and reverse lookups, certificate transparency logs, and public code and documents — are combined into a candidate list of address ranges, subdomains and hostnames. Only then does the attacker probe which addresses answer, fingerprint the service and version behind each answer, and match the result against the known exploited vulnerabilities catalog. The first three stages touch nothing the defender owns.One domain namepublic recordDomain and ASN registrationT1590DNS records, reverse lookupsT1590.002Certificate transparency logsT1596.003Public code and documentsT1593Candidate listranges, subdomainsWhat answersport scanUsable targetsmatched to KEVNone of this touches your systems, and none of it reaches your logsOnly here does it touch youThe whole chain is automated and continuous — and it is not run for you alone
  • Public records, no contact with you
  • Probing your addresses
  • Usable target list
FIG 01 From one domain name to a list of usable targets. The first three stages run on public records and leave nothing in your logs; only the last two touch your systems, and they look like an ordinary scan.
Text version of this diagram

Four stages from one public domain name to a list of usable targets; the first three run on public records alone and never touch the target.

Stage one — the starting point

  • One domain name, which anybody can look up.

Stage two — four classes of public record

  • Domain and ASN registration (ATT&CK T1590): the address ranges held in the organisation’s name.
  • DNS records, reverse lookups (T1590.002): hostnames and the addresses behind them.
  • Certificate transparency logs (T1596.003): every subdomain a certificate was ever issued for, including internal-sounding names.
  • Public code and documents (T1593): system names and URLs from code hosting, slide decks and job ads.

Stage three — the candidate list

  • The four sources merge into candidate address ranges, subdomains and hostnames.
  • Not one packet has been sent to the target yet.

Stage four — actual probing

  • A port scan establishes which of the candidate addresses answer.
  • Each answer is fingerprinted for service and version, then matched against the known exploited vulnerabilities catalog to produce the usable list.

What to take from it

  • The first three stages leave nothing in your logs; you will not know they happened.
  • Only the last stage touches your systems, and it looks like an ordinary scan.
  • The whole chain is automated and continuous, and it is not run for you alone.

How much an attacker derives from a single domain name

This stage is called reconnaissance (TA0043), and it happens before any connection is attempted. The attacker usually starts with a company name and one domain — enough to build a fairly complete asset list without ever touching your systems, which is also why you never learn that it happened.

Public sourceWhat it yieldsTechnique
Domain and ASN registrationAddress ranges held by the companyT1590
DNS records, reverse lookupsHostnames and the addresses behindT1590.002
Certificate transparencyEvery subdomain ever certifiedT1596.003
Public code and documentsSystem names, internal URLs, stackT1593

Registration data is queried through RDAP, which reveals the autonomous system your ranges sit under. Anyone who finds your ASN has your entire public address space as a matter of public record — which is precisely what gathering victim network information (T1590) describes.

The most underestimated source is the certificate transparency log. Every publicly trusted TLS certificate is written to an append-only public log, and anyone can list every certificate ever issued for your domain. What surprises people is what those names give away: vpn-test.example.com or hr-uat.example.com became public knowledge the moment the certificate was requested. It is the most productive branch of searching open technical databases (T1596).

At this point the attacker holds a candidate list and has sent you nothing. Only now comes active scanning (T1595): a port scan over the candidates to see what answers, banner grabbing against whatever does, and a match of the resulting versions against the CISA Known Exploited Vulnerabilities catalog. This is the same opening move as the ransomware attack chain — the difference is that it now runs automatically, continuously, and not for you in particular.

The six exposed assets inventories usually miss

What gets missed follows a pattern. These six turn up in almost every first inventory, and they share one trait: IT did not put any of them there.

CategoryTypical caseWhy it gets missed
Test and staginguat, staging, demo subdomainsNobody owns shutting it down
Department cloudHosts marketing or R&D spun upNever went through procurement
Outsourced sitesCampaign sites, brochure sitesNobody tracks it after handover
Vendor-managed devicesMonitoring hosts, door access, NASA port opened for remote upkeep
Management consolesFirewall, hypervisor, remote desktop”Only we know the URL”
Stale DNS recordsPointing at released cloud resourcesService retired, record kept

The first two are textbook shadow IT: they solve a real business need, they simply skipped the process — so they are on no register and in no patching schedule.

The last one deserves its own note. When a DNS record points at a cloud resource that has been released, someone else can claim that resource, and your subdomain starts serving their content with nothing visibly wrong to a browser or a visitor. This is subdomain takeover, and it is cheap precisely because nobody has looked at that record in years.

Five steps to a first attack surface inventory, with no tooling budget

A first attack surface inventory needs no purchase and no project budget. It needs an afternoon and a willingness to have the existing register proved wrong.

  1. List the starting points. Every domain the company holds (including retired ones still registered), public address ranges, cloud accounts, and any site an agency hosts for you.
  2. Expand from public sources. Pull subdomains from certificate transparency, add hostnames from DNS and reverse lookups, and merge the result into a candidate list. Nothing is touched at this step.
  3. Establish what answers. Port scan your own addresses and record open ports and services. Scan only what is yours — doing this to targets you have no authorisation for can be an offence in most jurisdictions, including Taiwan’s Criminal Code Article 358; when a third party runs it, the scope belongs in a signed authorisation.
  4. Tag three things per item. Who owns it, who uses it, what breaks if it is compromised. Any item where the first answer is missing is itself the most valuable finding of the exercise.
  5. Keep a snapshot. Store the list as a baseline so later rounds compare differences instead of starting over.

These five steps have a hard ceiling: they establish what answers, not whether it can actually be exploited. Answering that means trying it within an agreed scope, which is the job of a penetration test or red team engagement, not of an inventory.

Every item you find needs three questions answered

The list itself is worth nothing; what you do with it is worth something. Three questions per item: is anyone still using it, who owns it, and does it genuinely have to be reachable by the whole internet? The first two decide whether anyone is watching it. The third decides whether it should be visible at all.

Four quadrants of exposure, and what each one decidesThe horizontal axis is whether anyone in IT knows the asset exists; the vertical axis is whether it genuinely needs to be reachable by the whole internet. Top left holds the website and mail that are known and needed — harden and patch them. Top right holds outsourced sites and cloud services nobody tracks but people do use — find an owner and bring them into the inventory. Bottom left holds VPN gateways and management consoles that are known but should not be public — put them behind authorisation. Bottom right holds forgotten test sites and stale subdomains — turn them off.IT knows it existsNobody remembers itGenuinely needsto be publicDoes not needto be publicWebsite, mail, customer portalHas an owner and a maintenance windowAction: harden and keep patchingOutsourced sites, cloud servicesPeople do use it; the inventory misses itAction: find the owner, then track itVPN gateway, admin consoles, RDPOnly staff and a few partners should use itAction: reachable only after authorisationForgotten test sites, stale subdomainsNobody maintains it, nobody watches itAction: turn it offThe output of an inventory is every exposed asset placed in one of these four cells
  • Stays public; harden and patch
  • Needs an owner or a new reachability model
  • Turn it off
FIG 02 Two questions sort the list into four piles, and the pile is already the decision. Bottom right is the dangerous one: nobody maintains it, nobody watches it, and it is open to everyone.
Text version of this diagram

Every exposed asset lands in one of four cells: the horizontal axis is whether IT knows it exists, the vertical axis is whether it genuinely needs to be public. The cell is the decision.

Top left — known, and genuinely public

  • Examples: website, mail, customer portal.
  • State: it has an owner and a maintenance window.
  • Action: harden it, keep patching it, leave it public.

Top right — unremembered, but genuinely in use

  • Examples: outsourced sites, cloud services a department set up.
  • State: people do use it; the inventory misses it.
  • Action: find the owner and bring it into the inventory first.

Bottom left — known, but does not need to be public

  • Examples: VPN gateway, management consoles, remote desktop.
  • State: only staff and a few partners should use it.
  • Action: make it reachable only after authorisation.

Bottom right — unremembered, and needed by nobody

  • Examples: forgotten test sites, stale subdomains.
  • State: nobody maintains it and nobody watches it.
  • Action: turn it off.
  • This is the highest-risk cell of the four.

Most companies find the distribution weighted heavily toward the bottom half. The services that genuinely need to be reachable by everyone are usually the website, mail, and a small number of customer portals. The rest is history: something was opened years ago so one person could work from home, and nobody closed it afterwards.

Why most of the list does not need to be visible to be usable

The bottom-left cell — known, but with no need to be public — is usually the largest group and the hardest to act on. Closing it draws complaints; leaving it open is attack surface.

The traditional compromise is source IP restriction. That works while everyone sits in fixed offices, but remote work, mobile networks and branch offices make source addresses unstable, the allow list grows, and eventually you are back where you started.

The other option changes the premise of reachability. The service listens on no public port; instead it dials outbound to a fabric, and only requests that have already passed authentication and authorisation are connected to it. A scanner does not get a refusal, it gets no answer at all — nothing is listening on that address, so it never enters anyone’s candidate list. The mechanics are in how a zero trust network works, and the differences between architectures on this specific point are in VPN, gateway ZTNA and SDP compared.

To be clear about the limit: this does not reduce the attack surface to zero. The website and mail still have to face the internet, and people still click links in email. What it does is shorten the list you have to defend to the things that genuinely need to be public, so that limited patching and monitoring effort lands on those.

Attack surface drifts, so an inventory is not a one-off project

An inventory starts losing accuracy the day it is delivered. A project ships, a vendor swaps hardware, a department opens a cloud service, a certificate adds two subdomains — each changes the attack surface without anyone telling IT.

What appeared between two inventoriesThe upper lane holds the five items the last inventory listed: website, mail, VPN gateway, customer portal and monitoring console. That list stops changing the day it is written. The lower lane holds four items added afterwards — an outsourced campaign site, a test environment shipped with a project, vendor equipment for remote maintenance, and a cloud service a department set up. None of them passed through IT, so none of them appears on any list until the next inventory.On the last inventoryAdded afterwardsWebsiteMailVPN gatewayPortalMonitoringCampaign siteoutsourcedTest environmentnew projectVendor deviceremote upkeepCloud servicea departmentLast inventoryNext inventoryEvery item in the lower lane is public, and nobody is watching it
  • On the last inventory
  • Added since, not yet tracked
FIG 03 The upper lane is the list the last inventory delivered, fixed from that day on. The lower lane is what the business added since. The gap does not close on its own; it widens.
Text version of this diagram

Two lanes against one timeline: above, the list the last inventory produced; below, the exposed items added afterwards without passing through IT.

Upper lane — the last inventory

  • Website, mail, VPN gateway, customer portal, monitoring console: five items.
  • The list stops changing the day it is written.

Lower lane — four items added since

  • A campaign site, outsourced to an agency.
  • A test environment, shipped with a project.
  • Vendor equipment, for remote maintenance.
  • A cloud service, set up by a department.

What to take from it

  • None of the four passed through IT, so none appears on any list.
  • Until the next inventory, every item in the lower lane is public and unwatched.
  • The gap widens with time, which is why an inventory needs a fixed cycle.

A workable cadence is quarterly for the full sweep, plus four triggers in between: a new system going live, an acquisition or new site, a change of outsourcing vendor, and any change to a public-facing service. Because you kept a baseline snapshot, each round looks at the difference rather than the total, and costs a fraction of the first one.

None of this is optional extra credit in the major frameworks — it is control number one. CIS Control 1 is inventory and control of enterprise assets, and NIST CSF 2.0 puts asset management at the front of the Identify function. The ordering is deliberate: you cannot protect something you do not know exists.

Terms and further reading

TermIn one sentenceSource
Attack surfaceThe sum of externally reachable entry pointsAttack surface
ReconnaissanceGathering target information before attackMITRE ATT&CK TA0043
RDAPProtocol for querying registration dataRFC 9082
Autonomous system (ASN)Address ranges under one routing policyAutonomous system
Gather victim network infoRecon of ranges, domains and DNSMITRE ATT&CK T1590
Certificate transparencyPublic append-only log of issued certificatesRFC 6962
Search open technical databasesDeriving assets from public recordsMITRE ATT&CK T1596
Active scanningSending probes directly to target addressesMITRE ATT&CK T1595
Port scanTesting which ports answerPort scanner
Banner grabbingIdentifying product and version from a replyBanner grabbing
Known exploited vulnerabilitiesFlaws confirmed as exploited in the wildCISA KEV
Shadow ITSystems and services IT does not trackShadow IT
Subdomain takeoverClaiming a resource a stale DNS record points atOWASP WSTG
Criminal Code Article 358Offence of unauthorised access in TaiwanCriminal Code of Taiwan
Asset inventory controlControl requiring all assets be trackedCIS Controls 1
Cybersecurity Framework 2.0Framework organised by Identify, Protect, DetectNIST CSF 2.0
Zero trust architectureTrust that does not follow network locationWhat zero trust is

The four public sources and the five steps above work directly as the task list for a first inventory. The diagrams are simplified models; real environments add cloud and branch-office variations. If you finish and get stuck on the items that should be closed but cannot be, get in touch and we will look at the alternatives with you.

Back to the blog

What SDP v3.0 Changed: SPA Is No Longer the Definition

SDP v3.0 demotes single packet authorisation from definition to option. What the new guide actually changed, why SPA struggles on IoT and cloud functions, where the line between SDP and microsegmentation really falls, and what to do first.