Use Cases

How Security Teams Enrich Alerts with DNS, WHOIS, and IP Data in 2026

A practical workflow for turning raw SIEM events into actionable intelligence using DNS record lookups, WHOIS registration data, and IP geolocation. No proprietary threat intel platform required.

March 28, 20269 min readSecurity Engineering Team
3
Data sources for enrichment
5
Enrichment patterns covered
3
SIEM integration examples

Why Raw Alerts Waste SOC Time

A SIEM fires an alert: suspicious outbound connection to 198.51.100.42 on port 443. The event contains an IP, a timestamp, and a process name. The analyst staring at this alert needs to answer three questions before they can decide what to do: who owns the destination, where is it geographically, and is the infrastructure legitimate or known-bad?

Without enrichment, the analyst tabs out to WHOIS lookup tools, runs manual DNS queries, copies the IP into a geolocation service, and pieces together context over several minutes. Multiply that by hundreds of alerts per shift, and the backlog compounds fast. Enrichment automates these lookups so the alert arrives pre-loaded with ownership, location, and infrastructure context.

What Alert Enrichment Actually Looks Like

Enrichment means querying external data sources at the moment an alert fires and appending the results to the alert record. The three most useful data types for infrastructure-related alerts are:

1. DNS Record Data

Resolving the domain associated with an alert reveals current infrastructure: which A records point where, whether MX records exist (indicating email activity), and whether TXT records include SPF or DKIM configurations. Changes in DNS records between the time of alert generation and the time of investigation can also indicate infrastructure turnover.

2. WHOIS Registration Intelligence

WHOIS data surfaces the registrant organization, registrar, creation date, and expiration date. A domain registered three days before the alert is significantly more suspicious than

3. IP Geolocation and Infrastructure Data

Geolocation places the connection in a country and city. ISP and ASN data reveal whether the destination belongs to a hosting provider, a residential ISP, a cloud platform, or a known VPN/proxy service. This single data point often determines whether the alert escalates or closes.

Enrichment Decision Matrix

Not every alert benefits from every enrichment type. Use this matrix to decide which API calls to make based on the alert category. The goal is to minimize unnecessary API calls while maximizing actionable context.

Alert CategoryDNS LookupWHOIS DataIP GeolocationReverse IP
Suspicious outbound connectionIf domain resolvedHigh priorityHigh priorityMedium priority
Phishing URL detectedHigh priorityHigh priorityMedium priorityHigh priority
Brute force loginLow priorityLow priorityHigh priorityMedium priority
Malware C2 communicationHigh priorityHigh priorityHigh priorityHigh priority
DNS tunneling indicatorCriticalMedium priorityMedium priorityMedium priority

Building the Enrichment Workflow

The pattern is straightforward: a webhook or polling script receives new alerts from the SIEM, extracts the relevant indicators (IP addresses and domains), calls the enrichment APIs, and writes the results back. Here is a practical implementation using TypeScript that works with any SIEM that supports webhooks.

// enrichment-pipeline.ts
// Enriches security alerts with DNS, WHOIS, and IP data

interface SecurityAlert {
  id: string;
  type: 'outbound_connection' | 'phishing' | 'brute_force' | 'c2_comm' | 'dns_tunnel';
  indicator: string; // IP or domain
  timestamp: string;
}

interface EnrichedAlert extends SecurityAlert {
  enrichment: {
    dns?: { records: Record<string, string[]>; resolvedAt: string };
    whois?: { registrar: string; createdDate: string; expiresDate: string; registrantOrg?: string };
    ipGeo?: { country: string; city: string; isp: string; asn: string; isVpn: boolean };
    reverseIp?: { domains: string[]; totalCount: number };
  };
}

const API_KEY = process.env.OPS_TOOLS_API_KEY;
const BASE_URL = 'https://api.ops.tools/v1';

async function enrichAlert(alert: SecurityAlert): Promise<EnrichedAlert> {
  const enriched: EnrichedAlert = { ...alert, enrichment: {} };
  const isIp = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(alert.indicator);

  // Parallel API calls for speed
  const results = await Promise.allSettled([
    isIp
      ? fetchIpGeolocation(alert.indicator)
      : fetchDnsRecords(alert.indicator),
    fetchWhoisData(alert.indicator),
    isIp ? fetchReverseIp(alert.indicator) : Promise.resolve(null),
  ]);

  if (results[0].status === 'fulfilled' && results[0].value) {
    enriched.enrichment = isIp
      ? { ...enriched.enrichment, ipGeo: results[0].value }
      : { ...enriched.enrichment, dns: results[0].value };
  }
  if (results[1].status === 'fulfilled' && results[1].value) {
    enriched.enrichment.whois = results[1].value;
  }
  if (results[2].status === 'fulfilled' && results[2].value) {
    enriched.enrichment.reverseIp = results[2].value;
  }

  return enriched;
}

The Three API Calls

// DNS record lookup
async function fetchDnsRecords(domain: string) {
  const res = await fetch(
    `${BASE_URL}/dns/lookup?domain=${domain}&recordType=A,MX,TXT,NS`,
    { headers: { 'Authorization': `Bearer ${API_KEY}` } }
  );
  const data = await res.json();
  return {
    records: data.records,
    resolvedAt: new Date().toISOString(),
  };
}

// WHOIS registration data
async function fetchWhoisData(domain: string) {
  const res = await fetch(
    `${BASE_URL}/whois/${domain}`,
    { headers: { 'Authorization': `Bearer ${API_KEY}` } }
  );
  const data = await res.json();
  return {
    registrar: data.registrar,
    createdDate: data.creationDate,
    expiresDate: data.expirationDate,
    registrantOrg: data.registrant?.organization,
  };
}

// IP geolocation with ISP and VPN detection
async function fetchIpGeolocation(ip: string) {
  const res = await fetch(
    `${BASE_URL}/ip/geolocation?ip=${ip}`,
    { headers: { 'Authorization': `Bearer ${API_KEY}` } }
  );
  const data = await res.json();
  return {
    country: data.country,
    city: data.city,
    isp: data.isp,
    asn: data.asn,
    isVpn: data.isVpn ?? false,
  };
}

Quick Reference: cURL Enrichment Calls

# DNS records for a suspicious domain
curl -s "https://api.ops.tools/v1/dns/lookup?domain=suspicious-example.com&recordType=A,MX,TXT,NS" \
  -H "Authorization: Bearer YOUR_API_KEY"

# WHOIS registration data
curl -s "https://api.ops.tools/v1/whois/suspicious-example.com" \
  -H "Authorization: Bearer YOUR_API_KEY"

# IP geolocation with ISP and VPN data
curl -s "https://api.ops.tools/v1/ip/geolocation?ip=198.51.100.42" \
  -H "Authorization: Bearer YOUR_API_KEY"

# Reverse IP lookup to find co-hosted domains
curl -s "https://api.ops.tools/v1/ip/reverse?ip=198.51.100.42" \
  -H "Authorization: Bearer YOUR_API_KEY"

Wiring It Into Your SIEM

The enrichment pipeline sits between your SIEM and the infrastructure APIs. Here is how it connects to three common platforms.

Splunk: HTTP Event Collector + Lookup

In Splunk, configure a scripted input or a modular alert action that triggers on new high-severity events. The script calls the enrichment pipeline and writes results to a KV store lookup. Analysts then use enrichment_lookup as a subsearch to append DNS, WHOIS, and geolocation context directly to their investigation dashboard.

Microsoft Sentinel: Playbook with HTTP Action

Create a Sentinel playbook triggered by the Microsoft Defender for Endpoint alert schema. Add an HTTP action step that calls your enrichment API endpoint with the alert's indicator extracted from entities[0].IpAddress or entities[0].Url. The playbook updates the incident with enrichment data before analysts see it in the queue.

Elastic Security: Ingest Pipeline + Enrich Processor

Elastic Security supports HTTP-based enrichment processors in ingest pipelines. Configure a pipeline that calls the API for each incoming event with an IP or domain field, then maps the response fields (country, isp, registrar, createdDate) into the event document. Enriched fields appear automatically in detection rule queries and the alerts UI.

Turning Enrichment Into a Risk Score

Raw enrichment data still requires analyst judgment. But you can build a lightweight scoring model that flags high-risk combinations automatically. Here is a scoring framework based on the enrichment data.

SignalRisk IndicatorScore
Domain ageRegistered within last 14 days+30
Domain ageRegistered within last 90 days+15
WHOIS privacyRegistrant org hidden+10
GeolocationIP in high-risk country for your org+20
IP classificationVPN or proxy detected+25
Reverse IPIP hosts 50+ domains+15
SSL certificateSelf-signed or expired cert+20
DNS recordsNo SPF or DKIM records+10

Alerts scoring above 40 get routed to Tier 1 analysts immediately. Below 40, they queue for batch review. This is not a replacement for analyst judgment, but it reduces triage time by eliminating obvious false positives before a human looks at the alert.

Handling Alert Surges at Scale

During incident response or a mass phishing campaign, alert volume can spike from dozens per hour to hundreds. The enrichment pipeline needs to handle this without hitting rate limits or timing out the SIEM webhook. Two practical strategies:

Queue-based enrichment

Instead of calling APIs synchronously from the webhook handler, push alert indicators into a message queue (SQS, Redis Streams, or similar). A pool of worker processes consumes from the queue and makes API calls at a controlled rate. The SIEM polls or receives a callback when enrichment completes. This decouples alert ingestion from API throughput.

Batch consolidation

Many alerts during a surge share the same indicators. Deduplicate IPs and domains before making API calls. A 200-alert surge from the same C2 IP becomes one WHOIS call, one geolocation call, and one reverse IP call, not 600. Cache results for 5-15 minutes to avoid redundant lookups across overlapping alerts.

Setting Up Automated Alert Workflows

Beyond SIEM integration, infrastructure APIs work well in standalone alerting workflows. Use webhook notifications to trigger automated responses when WHOIS or DNS data changes on monitored domains. For example, configure monitoring on your organization's domains: if the registrant changes, if the name servers shift to a different provider, or if a new subdomain appears, the webhook fires and your security team receives a notification before the change shows up in periodic audits.

Frequently Asked Questions

What is security alert enrichment?

Alert enrichment is the process of adding context to security events by querying external data sources. When a SIEM detects suspicious activity tied to an IP address or domain, enrichment adds WHOIS ownership data, DNS record history, geolocation, and related infrastructure information so analysts can prioritize and investigate faster.

Which data types are most useful for security alert triage?

The most actionable enrichment data includes IP geolocation and ISP/ASN information, WHOIS registration data with creation and expiration dates, DNS resolution records showing current infrastructure, reverse IP lookup revealing co-hosted domains, and SSL certificate data including issuing authority and validity period.

Can I automate alert enrichment in my SIEM?

Yes. Most SIEM platforms including Splunk, Microsoft Sentinel, and Elastic Security support webhook-based or API-based enrichment. You configure a custom enrichment playbook that calls DNS, WHOIS, and IP geolocation APIs when new alerts arrive, then writes the enriched data back into the alert context for analyst review.

How does reverse IP lookup help with threat investigation?

Reverse IP lookup reveals all domains hosted on a given IP address. If your SIEM flags an IP associated with phishing, reverse IP lookup shows whether that same IP hosts legitimate domains, which helps determine if the IP was compromised or intentionally malicious. It also reveals attack infrastructure sharing patterns across multiple campaigns.

Start Enriching Security Alerts Today

Professional plans include DNS, WHOIS, IP geolocation, reverse IP, and SSL certificate data under one API key with webhook support.

Related Articles

Use Cases11 min read

Domain Data API Buyer’s Guide 2026: What to Evaluate Before You Commit

Evaluation framework for choosing between DNS, WHOIS, IP geolocation, and SSL certificate APIs. Covers pricing models, SLA criteria, bulk processing, and hidden costs vendors rarely advertise.

Read Article
Use Cases10 min read

Domain Portfolio Automation at Scale: Bulk WHOIS Audits and Drift Detection

Operational guide to automating domain portfolio management with bulk WHOIS audits, expiration monitoring, DNS drift detection, and webhook alerting for infrastructure teams.

Read Article
SSL & Security14 min read

SSL Certificate Checker: Complete Guide to SSL Verification

Learn how to check SSL certificate validity, understand SSL errors, and monitor certificate expiration. Includes automation examples with the Ops.Tools API.

Read Article