← Back to Home

Credential Monitoring Platform

External Leak Detection + Internal Sweep with WebSSH Login Validation

A production module inside a Security Command Center (SCC) platform that hunts compromised credentials from two directionsoutside-in (employee/customer credentials leaked to threat-intel feeds) and inside-out (internal hosts still running default/weak credentials) — proves which ones actually work with autonomous validation, and turns them into a prioritized, analyst-ready queue. SSH validation during internal sweeps is performed through a built-in WebSSH terminal.

#Threat Intelligence#Brand Protection#Digital Risk Protection#Credential Leak Detection#Attack Surface / Internal Sweep#Security Automation (SOC/SOAR)#Machine Learning#LLM / Agentic AI#Browser Automation#Data Engineering#ETL / ELT Pipeline#Data Warehouse

// Overview

What it does. Compromised credentials are the number-one way attackers get in, and they come from two directions. Outside, security teams are flooded with "your credentials were leaked" alerts from commercial threat-intel vendors — mostly noise: duplicates, garbage parses, dead URLs, or passwords already rotated. Inside, real estate of forgotten servers, devices, and admin panels quietly run factory-default or weak credentials that any attacker who gets a foothold can walk straight through. This platform tackles both. For external leaks it ingests raw alerts, classifies them, and actually attempts to log in with the leaked username/password to confirm the credential is still live. For internal exposure it runs sweeps that test internal host/port candidates against a managed dictionary of default credentials and records exactly which ones let it in — SSH logins are attempted through an in-browser WebSSH terminal, used purely to validate the credential. In both cases only confirmed-valid findings are surfaced — each with a screenshot — so the SOC prioritizes real risk instead of triaging thousands of unverified rows.

// Background

The challenge

Leaked-credential alerts flood the SOC. Most are

noise — the dangerous ones need proof, by hand.

01

No signal-to-noise filter

Thousands of alerts: duplicates, dead URLs, and

malformed parses (url="https", 2-char passwords).

Most refer to already-rotated credentials

02

Manual validation won't scale

The only way to know a leak is live is to TRY the

login — open page, type creds, judge, screenshot.

Slow, inconsistent, impossible at volume

03

No consistent prioritization

Without a confirmed valid verdict, every alert

looks equally urgent — live leaks sit beside junk.

Effort lands everywhere except the real risk

04

No audit trail or feedback loop

Analyst judgments lived in spreadsheets and

inboxes, disconnected from the source data.

Same calls re-made, no way to correct safely

05

Multi-tenant blindness

Leaks must be attributed to the right business

unit / brand — raw feeds don't provide it.

No per-tenant ownership or routing

Net effect

Genuinely live leaks sit in the same pile as junk —

invisible until someone tries each one by hand.

// Solution

Credential-leak detection & active validation

Data sources

Threat-Intel API

leaked-credentials feed

hourly ingest

Object Storage + Telegram

file uploads · combo lists

analyst + channel feeds

Pipeline

Ingest

Airflow

dedup · hourly

Ingest

Classify

BERT · extract model

multi-worker

Precheck

AI Agents

browser + LLM

try login · multi-step

Validate

Materialize

atomic swap

multi-worker

Fact

Portal

Vue 3 + FastAPI

+ feedback

Serve

other classes → routed to their own flows (out of scope)

Airflow · multi-worker classify (BERT + extract) · browser agent · feedback at read-time · multi-tenant

// Impact

Validation: manual → autonomous

Before · by hand

hours · inconsistent · doesn't scale

After · browser agent

minutes · automated

24/7

autonomous login testing at scale

Every verdict carries a login screenshot

+ a replayable agent trace.

Operational impact

Noise filtered pre-human

ML + SQL drop junk & dupes

Confident prioritization

work a confirmed-valid queue, not a pile

Explainable, evidence-backed

written reason + signals per verdict

Trustworthy feedback loop

overrides audited & reversible

Multi-tenant brand attribution

routed to the right business unit

Closed loop to remediation

valid leaks → notify + remediation log

Results

Units covered

3

Evidence-backed

100%

Noise filtered

~55%

Leak → validation

~3 min

2,000+ alerts/dayfrom 6 sources
Manual login-testingeliminated

Live volume & valid-rate tracked per

tenant & source in portal dashboards.

// Tech Stack

LayerTechnologies
OrchestrationApache Airflow (sensor-coupled ingest → process stages), scheduled notebook execution
IngestionCommercial threat-intel API, object storage (S3-compatible), Telegram, Python requests, pandas
ML classification & extractionTwo fine-tuned BERT models (HuggingFace Transformers) — one classifies the alert, one extracts the URL / username / password — served via Ray Serve and loaded from the MLflow registry; DSPy + LLM available as an alternative
Active validationExternal: browser-use autonomous agent driven by an LLM over a headless browser; Internal: per-protocol login sweep using WebSSH to attempt SSH logins; screenshots + run traces captured as evidence
Data storePostgreSQL (raw landing + analytics fact tables), psycopg2 / SQLAlchemy, pooled connections
Backend APIFastAPI, psycopg 3, Pydantic, in-memory cache, async workers
FrontendVue 3, Quasar, Vite, TypeScript, Pinia, TanStack Vue Query, ECharts (incl. Sankey)
Analyst workflowAutomated analyst notifications, non-destructive feedback overlay (valid / invalid / hide / remediated)
Secrets / infraInfisical (secret management), nginx → Uvicorn/Gunicorn workers, Docker

// Architecture & Diagrams

1 / 7System Architecture — Simple (high level)

The story in one glance: credential threats arrive from two directions, automated validation proves which actually work, and only confirmed findings reach the analyst — where the agent validates credentials in-browser.

rendering…

Disclaimer: sample visuals may contain anonymized, simulated, or non-production values for presentation purposes.

// Demo

No demo configured yet.