Attack Surface Monitoring: How to Monitor What Attackers See
Your external attack surface is everything an attacker can see from the internet—domains, IPs, cloud services, and the vulnerabilities exposed on them. Attack surface monitoring means watching that surface continuously, not just scanning once and hoping nothing changes.
- Scope: Define what you're protecting
- Discovery: Find assets you didn't know about
- Analysis: Map exposures and vulnerabilities
- Enrichment: Add context that drives decisions
- Prioritization: A P0–P4 rubric you can use today
- Cadence: How often to check, what to alert on
What Attack Surface Monitoring Actually Means
Attack surface monitoring is the continuous process of discovering, cataloging, and assessing every internet-facing asset your organization exposes—then tracking changes to that surface over time.
It's fundamentally different from a one-time penetration test or vulnerability scan. Those are snapshots. Attack surface monitoring is a video stream.
External reality changes daily. New subdomains get spun up. Cloud resources get exposed. Developers push staging servers to production IPs. Shadow IT happens.
Drift is where incidents start. Most breaches don't come from your hardened production systems—they come from the forgotten test server, the expired certificate, the misconfigured S3 bucket that nobody knew existed.
The goal of attack surface monitoring is simple: know what attackers can see, before they see it first.
The Attack Surface Monitoring Loop
Effective attack surface monitoring follows a continuous cycle. Each step feeds into the next, and the loop never stops.
The rest of this guide walks through each step in detail, with practical guidance you can implement regardless of what tools you use.
Step 1 — Define Your Scope
Before you can monitor your attack surface, you need to know what belongs to you. This sounds obvious, but most organizations dramatically underestimate the assets they expose to the internet.
Asset Categories to Track
- Domains & DNS — Primary domains, subdomains, and any DNS records you control
- IP Ranges — Owned IP space, cloud-allocated IPs, and ranges behind CDNs or WAFs
- Cloud Assets — AWS accounts, Azure subscriptions, GCP projects, and their external endpoints
- Third-Party SaaS — Entry points like SSO portals, customer-facing apps, and API endpoints
- Brand & Identity Surface — Keywords, typosquatting domains, look-alike sites
Owned: Assets you directly control (your servers, your domains)
Managed: Assets a third party operates on your behalf (managed hosting, SaaS with your branding)
Influenced: Assets that affect you but you don't control (partner integrations, vendor APIs)
You need visibility into all three, but your remediation authority differs for each.
Asset Register Template
Start with a simple register. You can use a spreadsheet, a CMDB, or a purpose-built tool—the format matters less than having one.
| Asset Type | Identifier | Owner | Environment | Criticality | Monitoring Notes | Change Control |
|---|---|---|---|---|---|---|
| Domain | example.com | IT Ops | Production | High | Primary customer-facing | CAB required |
| IP Range | 203.0.113.0/24 | Infrastructure | Production | High | Datacenter allocation | Standard |
| Cloud | AWS: 123456789012 | DevOps | Mixed | Medium | Multiple VPCs, public ELBs | Terraform managed |
| SaaS | login.vendor.com/acme | HR | Production | Medium | Employee SSO portal | Vendor managed |
Step 2 — Discovery & Validation
Discovery finds what you missed—the orphaned subdomains, the forgotten staging environments, the shadow SaaS someone in marketing spun up. It's where attack surface monitoring delivers the most immediate value.
Passive Discovery
Passive techniques query existing data sources without touching your infrastructure:
- Certificate Transparency logs (crt.sh, Censys)
- DNS zone enumeration and history
- Public cloud asset discovery (exposed S3 buckets, Azure blobs)
- Search engine indexing (Google dorking, Shodan)
- WHOIS and registrar data
Active Discovery
Active techniques directly probe your assets:
- Subdomain brute-forcing against known wordlists
- Port scanning across IP ranges
- Virtual host enumeration
- Web crawling and spidering
Validation & Deduplication
Raw discovery generates noise. Before adding assets to your inventory, validate:
- Resolves: Does the DNS record actually resolve?
- Reachable: Can you connect to it from the internet?
- In-scope: Does it belong to you, or is it a false positive?
- Deduplicated: Is it a duplicate of an existing asset?
A discovery tool that dumps 10,000 "findings" with 30% false positives will burn out your team in weeks. Invest in validation. The goal is a trustworthy inventory, not a long list.
Step 3 — Digital Analysis Pipeline
Once you have a validated inventory, the next step is understanding what's running on those assets and whether it's vulnerable.
Exposure Mapping
For each asset, determine what's exposed:
- Port scanning: What TCP/UDP ports are open?
- Service identification: What's running on each port?
- Version fingerprinting: What version of each service?
- Protocol enumeration: HTTP headers, SSL/TLS configuration, banner data
The output is a catalog: "Asset X has SSH on 22, HTTPS on 443 running nginx/1.18.0, and an FTP server on 21."
Vulnerability Probing
With services mapped, probe for vulnerabilities:
- Service-specific checks: CVEs affecting the observed versions
- Web application checks: OWASP Top 10, CMS vulnerabilities, exposed admin panels
- Configuration issues: Default credentials, missing security headers, open directories
- SSL/TLS weaknesses: Expired certs, weak ciphers, protocol downgrade risks
Evidence & Confidence
Not all findings are equal. Every vulnerability should have:
- Evidence: What did you observe? (response, screenshot, output)
- Confidence level: High (verified), Medium (likely), Low (possible)
- Validation status: Confirmed, Unconfirmed, False Positive
A finding with low confidence should never escalate to your highest priority. Verify first. Low confidence findings cap at P2 until validated.
Step 4 — Enrichment
Raw vulnerability data doesn't tell you what to fix first. Enrichment adds the context that turns findings into actionable decisions.
Context Factors
- Internet Exposure: Is this reachable from anywhere on the internet, or restricted by VPN, allowlist, or network segmentation?
- Asset Criticality: Is this an authentication system, payment processor, admin panel, or customer data store? Or a static marketing site?
- Exploitability Signals: Is there a public exploit? Is it trivial to weaponize, or does it require specific conditions?
- EOL/Unsupported Status: Is the software end-of-life? No more patches means permanent risk.
- Compensating Controls: Is there MFA protecting access? A WAF blocking exploit patterns? An allowlist limiting who can connect?
- Ownership & Routing: Who owns this asset? Who can actually fix it?
The goal is to answer: "Given everything we know about this finding and this asset, how urgent is this really?"
Step 5 — Prioritization Rubric (P0–P4)
This is the heart of attack surface management: turning enriched findings into a prioritized queue your team can actually work through.
Priority Definitions
| Priority | Definition | Response |
|---|---|---|
| P0 | Incident / confirmed exposure or compromise | Immediate (incident response) |
| P1 | High-likelihood, high-impact exposure | Hours to 72 hours |
| P2 | Significant exposure, needs prompt action | This sprint / 1-2 weeks |
| P3 | Moderate risk, scheduled remediation | Next 30-60 days |
| P4 | Low risk, track and monitor | Backlog / informational |
P0 is reserved for confirmed incidents or exposures—not suspected ones. Before escalating to P0, you must validate the finding. A false positive P0 wastes incident response resources and erodes trust in your program.
Instant P1 Triggers
Certain findings should automatically escalate to P1 when exposed to the internet without strong compensating controls (like IP allowlist, VPN requirement, or MFA gateway):
- Management/remote access ports: SSH (22), RDP (3389), LDAP (389/636), WinRM (5985/5986), VNC (5900+), Telnet (23)
- EOL software: Any end-of-life software exposed externally without mitigation
- Potential cloud storage exposure: S3 buckets, Azure blobs, or GCS buckets with read/write access (P1 until validated; becomes P0 if sensitive data confirmed)
- Database ports: MySQL (3306), PostgreSQL (5432), MongoDB (27017), Redis (6379), Elasticsearch (9200) exposed directly
The same service can be a medium risk internally but a P1 on the internet. An RDP server behind a VPN is a different risk than RDP exposed to 0.0.0.0/0. Always factor in exposure when prioritizing.
P0 Criteria (Validation Required)
A finding becomes P0 only when you have confirmed:
- Sensitive data is exposed (you've verified the contents)
- Valid credentials or secrets are exposed (tested or verified)
- Active exploitation or compromise indicators are present
- Takeover risk is proven (e.g., dangling DNS with verified subdomain takeover)
Scoring Model
For findings that aren't instant P1 triggers, use a simple scoring model to separate P1/P2/P3/P4:
Base Severity (1–10 based on vulnerability type)Exposure Modifier: Internet-facing +6, Authenticated +4, Internal +1Exploitability: Public exploit +5, Likely exploitable +3, Hard to exploit +1Business Criticality: High +5, Medium +3, Low +1Override rules:
- Low confidence caps at P2: Until verified, don't escalate beyond P2
- EOL + internet-facing = P1: No exceptions unless strong mitigation exists
- P0 is not score-based: P0 is validation-based. No score automatically generates P0.
Examples
Finding: RDP (3389) detected on server in your IP range, reachable from internet.
Assessment: RDP is a management port. Internet-facing management access without VPN or allowlist is an instant P1 trigger. No scoring needed—this goes straight to P1.
Action: Validate reachability, identify owner, restrict access within 72 hours.
Finding: Monitoring detected an S3 bucket with public read/write access.
Assessment: Public cloud storage is a P1 trigger until validated. Initial priority: P1.
Validation: Upon review, the bucket contains customer PII.
Result: Confirmed sensitive data exposure → escalate to P0, engage incident response.
Operationalize Your Monitoring
Attack surface monitoring only works if it's operationalized—built into your team's daily and weekly rhythm.
Cadence
- Daily: Change detection on critical assets (new hosts, new ports, configuration drift)
- Weekly: Deeper vulnerability checks, new CVE correlation, discovery refresh
- Monthly: Full baseline refresh, scope review, asset register audit
Alert Thresholds
Don't alert on everything—you'll burn out. Alert on signals that matter:
- New management port exposed (SSH, RDP, LDAP)
- New unknown host in your IP space
- High-severity external vulnerability detected
- New public cloud storage exposure
- SSL certificate expiring within 14 days
- EOL software detected on internet-facing asset
Workflow
- Assign owner: Every finding needs an owner, not a team alias
- Create ticket: Include evidence, priority, and remediation guidance
- Verify fix: Re-scan after remediation to confirm resolution
- Prevention control: Ask "how do we prevent this class of issue?"
Metrics to Track
- Unknown assets discovered: How many assets did discovery find that weren't in your register?
- Mean time to mitigate P1s: How fast are you closing critical findings?
- Repeat exposures: Are the same issues recurring? That's a process problem.
- Coverage: What percentage of your known surface is actively monitored?
7-Day Quickstart Checklist
You can stand up a basic attack surface monitoring program in a week. Here's a day-by-day checklist for SMB IT leaders:
- List all domains you own (check registrar accounts)
- Document your IP ranges (check hosting providers, cloud accounts)
- Identify your cloud accounts (AWS, Azure, GCP)
- Create your initial asset register spreadsheet
- Search Certificate Transparency logs for your domains
- Check DNS records for all known domains
- Search Shodan/Censys for your IP ranges
- Add any new assets found to your register
- Verify each discovered asset is actually yours
- Remove false positives from your inventory
- Assign criticality ratings (High/Medium/Low)
- Identify asset owners
- Scan your IP ranges for open ports
- Identify services running on each port
- Flag any management ports (SSH, RDP, LDAP)
- Document findings in your register
- Run vulnerability scans against discovered services
- Check SSL/TLS configurations
- Look for EOL/unsupported software
- Prioritize findings using the P0–P4 rubric
- Create tickets for all P1 findings
- Assign owners and due dates
- Begin remediation on critical issues
- Document compensating controls if remediation is delayed
- Schedule automated daily/weekly scans
- Configure alerts for P1 triggers
- Set calendar reminder for monthly baseline refresh
- Brief your team on the new process
Related Security Playbooks
This guide covered the fundamentals. Use these situation-specific playbooks for common findings: