Passive Subdomain Discovery
Queries Certificate Transparency logs and resolves live A (IPv4) and AAAA (IPv6) records without touching target hosts directly.
discovery.py, resolver.pyContinuous subdomain discovery, active probing, port scanning, and risk triage for verified infrastructure.
The visibility gap
Organizations accumulate forgotten subdomains, exposed test databases, and deprecated TLS configurations. Scanning without verified ownership creates authorization liabilities, while ad-hoc testing misses newly exposed ports and configuration drift.
Architecture
Queries Certificate Transparency logs and resolves live A (IPv4) and AAAA (IPv6) records without touching target hosts directly.
discovery.py, resolver.pyValidates HTTP/HTTPS availability on ports 80/443 with SSRF defenses blocking private/loopback IP ranges and a 64 KB response streaming cap.
prober.py, scan_common.pyConnects asynchronously across sixteen default service ports to classify open states and collect non-intrusive service greetings.
portscan.pyEvaluates TLS certificate validity, deprecation, and defensive security headers like HSTS, CSP, and X-Content-Type-Options.
tls_inspect.py, headers_inspect.pyGroups findings into severity tiers from Critical to Info, ordered by severity tier, score impact, then host.
scoring.pyCapabilities
Differential engine compares consecutive scans to detect new subdomains, newly open ports, and certificate problems (expired, untrusted, self-signed, hostname mismatch).
Configurable automated scan intervals from 6 hours to 720 hours (30 days) with randomized execution jitter to disperse network load.
Transactional outbox delivery issues notification digests to up to 5 configured recipients upon new risk discoveries.
Append-only audit log: a database trigger blocks updates, deletes and truncates from the application.
Role-based access control with owner, admin, and viewer ranks, enforced by tenant-scoped database queries and anti-enumeration defenses.
Authorization Gate
Active scans run only on domains you have verified with a DNS TXT record at _exposight-challenge.<domain>. A time-limited operator override exists for exceptional cases.
_exposight-challenge.example.com IN TXT "exposight-verify=<your-token>"
Access your domain inventory, configure scan schedules, and triage findings.