Back to projects

Production ML / DNS security

Case Study

ML Phishing Domain Detection

A production machine-learning system that screens live DNS traffic and flags malicious or look-alike phishing domains in near real time. A four-model ensemble over 50+ engineered domain features is backed by a multi-stage verification safety net that confirms threats and suppresses false positives before they block a real customer. It flags roughly 800 malicious domains a day at about 90% precision. Built at ThreatSTOP.

Production systemML pipeline · Verification safety net · Operations
Built at ThreatSTOP

Proprietary production system—not publicly deployable. Described here from its architecture, measured results, and my role.

Jump to results →

System at a glance

From live DNS traffic to a guarded verdict.

Explore the pipeline, model ensemble, and verification layer behind the production system.

~800domains flagged and blocked per day
~90%precision on live traffic
50+engineered domain features
4complementary classifiers
01IngestLive threat feeds + DNS telemetry
02NormalizeClean and standardize domains
03EngineerLexical, entropy, TLD + similarity signals
04InferFour independently tuned models vote
05VerifyIndependent safety net checks every flag

The fitted vectorizer and TLD statistics are persisted so production inference reproduces the training feature space.

Why it mattered

Phishing domains appear faster than a human-maintained blocklist can keep up. I built this system to catch them from live threat feeds and DNS traffic—without blocking legitimate customer sites.

What I built

  • A production pipeline that cleans domains, creates 50+ features, trains four model types, and serves the ensemble in a container.
  • Independent decision thresholds for each model, producing high, medium, or low confidence tiers.
  • Training data that balances threat feeds with trusted domains, so the models learn both malicious and normal patterns.

The safety net

About 90% precision is strong, but a false positive can still block a real customer’s domain. The model therefore never acts alone.

Every flagged domain goes through three independent checks:

  1. Registration age and structural bait patterns.
  2. Multi-engine reputation consensus.
  3. WHOIS, infrastructure, and lexical signals for ambiguous cases.

The final verdict is confirmed malicious, needs review, monitor, or benign. Reviewed verdicts feed monitoring and future retraining.

Production decisions

  • Precision over recall: missing some threats was preferable to incorrectly blocking a legitimate site.
  • Repeatable inference: saved vectorizers and TLD statistics keep production features identical to training.
  • Operational visibility: Kubernetes, versioned S3 artifacts, Prometheus, Sentry, graceful shutdowns, and continuous false-positive monitoring keep the system observable and recoverable.

Key challenges

  • Tuning for a strict precision floor because a false positive can block a real customer's legitimate domain.
  • Keeping production inference identical to training by persisting the fitted vectorizer and TLD statistics.
  • Turning verification verdicts into a continuous false-positive monitoring and retraining loop.
Back to all projects

Case study / Discussion

Ask me about the engineering decisions.

I can discuss my role, architecture, evaluation, safeguards, and operational tradeoffs without sharing proprietary implementation details.