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.
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 Category | DNS Lookup | WHOIS Data | IP Geolocation | Reverse IP |
|---|---|---|---|---|
| Suspicious outbound connection | If domain resolved | High priority | High priority | Medium priority |
| Phishing URL detected | High priority | High priority | Medium priority | High priority |
| Brute force login | Low priority | Low priority | High priority | Medium priority |
| Malware C2 communication | High priority | High priority | High priority | High priority |
| DNS tunneling indicator | Critical | Medium priority | Medium priority | Medium 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.
| Signal | Risk Indicator | Score |
|---|---|---|
| Domain age | Registered within last 14 days | +30 |
| Domain age | Registered within last 90 days | +15 |
| WHOIS privacy | Registrant org hidden | +10 |
| Geolocation | IP in high-risk country for your org | +20 |
| IP classification | VPN or proxy detected | +25 |
| Reverse IP | IP hosts 50+ domains | +15 |
| SSL certificate | Self-signed or expired cert | +20 |
| DNS records | No 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.
Continue Reading
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
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 ArticleDomain 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 ArticleSSL 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