detection notes · threat intel · triage workflow
An IP with a bad history is a reason to look, not a conclusion. This is the enrichment order I use so that reputation supports an assessment instead of replacing one.
Reputation lookups are cheap, which makes them the first thing an analyst does and the easiest thing to over-trust. Two failure modes show up constantly in a real queue: a shared-hosting or corporate NAT address that dozens of clean tenants also use, and a source that is right about the address but wrong about the context — a scanner hitting the perimeter is not the same event as the same address authenticating to a mailbox.
Step 4 is mechanical, so I wrote a standalone client-side lookup page that queries VirusTotal, AbuseIPDB, Shodan and AlienVault OTX for one indicator and presents a single weighted verdict band instead of four disagreeing panels. API keys are stored locally in the browser and never sent anywhere except the vendors themselves.
AbuseIPDB blocks browser-origin requests, so that one source cannot be queried directly from a page like this — it needs a server-side proxy. So the tool is an analyst aid, not an automation pipeline: it collapses four tabs into one view and leaves the judgement with the person using it. The fix is a small proxy, and the reason it is not built is that the value is in the triage reasoning, not in removing one tab.
What this is not: a scoring model with published weights. The source weighting is tuned to how often each source produced a false positive for me, which is a personal dataset, not a benchmark. Treat it as one analyst's calibration, not a standard.