Historical investigation asks what FullHunt observed, when it observed it, and how that differs from the current indexed state. It does not reconstruct packets, application logs, or an exact minute-by-minute configuration.

Requirements

  • API access for domain details
  • OEM access for historical hosts
  • Nexus access for passive DNS and cloud certificate search
  • An investigation target and case identifier
  • Python 3.10 or later with requests

Evidence model

Each validated Nexus lookup deducts one Nexus credit. The historical-host request deducts one OEM credit.

Collect the evidence bundle

collect_historical_exposure.py

Build the incident timeline

Normalize returned times to UTC, but retain the original values in the evidence bundle. For each material change, record:
  • First and last observed times
  • Host, IP address, ports, products, and certificate names
  • Whether the evidence is current, historical, passive DNS, or certificate-derived
  • The incident hypothesis the evidence supports or contradicts
  • Ownership confidence and any shared-infrastructure caveat
Historical records can show that a service existed during an exposure window. They do not prove exploitation. Correlate with application, identity, network, and cloud audit logs before making an incident conclusion.

Evidence handling

  • Make the evidence file append-only or store it in a case system with integrity controls.
  • Record the FullHunt query, case ID, collection time, and API access context.
  • Do not overwrite historical evidence with a later collection.
  • Treat absent timestamps and empty datasets as limitations, not inferred dates or verified absence.