惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园_首页
B
Blog RSS Feed
Microsoft Azure Blog
Microsoft Azure Blog
J
Java Code Geeks
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Google DeepMind News
Google DeepMind News
F
Fortinet All Blogs
V
V2EX
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Engineering at Meta
Engineering at Meta
月光博客
月光博客
阮一峰的网络日志
阮一峰的网络日志
M
MIT News - Artificial intelligence
IT之家
IT之家
博客园 - 【当耐特】
U
Unit 42
云风的 BLOG
云风的 BLOG
L
LangChain Blog
小众软件
小众软件
Microsoft Security Blog
Microsoft Security Blog
B
Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
宝玉的分享
宝玉的分享
N
Netflix TechBlog - Medium

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
DOMINI Suite: how I built two OSINT tools to analyze doma...
Kristina · 2026-05-16 · via DEV Community

When I was assigned an OSINT practice project, I knew from the start that I wanted to build something using free tools — no paid APIs, no services with rate limits, nothing that required signing up or paying for a subscription.

The result was the DOMINI Suite — two complementary tools that map the attack surface of domains and IPs using only public information and open source libraries: nmap, dnspython, python-whois, ip-api.com, AbuseIPDB and AlienVault OTX on their free tiers. The only exception is LeakRadar, which requires a paid subscription for API access, but the suite implements an automatic fallback using Google Dorks on Pastebin that works with no key at all.

The problem I wanted to solve

I wanted to automate the full infrastructure reconnaissance workflow into two tools that worked together naturally.

That workflow — which manually means opening mxtoolbox, whois.domaintools.com, abuseipdb.com and Google separately — should be executable with a single command and end with a visual report ready to deliver.

The two tools

DOMINUS — Domain Intelligence & Risk Scoring

Given a domain, DOMINUS runs six passive reconnaissance phases:

  • WHOIS — registrar, registrant, expiration dates
  • DNS — A, MX, NS, SPF, DMARC, DKIM records
  • Subdomains — passive enumeration via Certificate Transparency logs (crt.sh)
  • Ports — open TCP services via nmap
  • HTTP Headers — audit of CSP, HSTS, X-Frame-Options, Referrer-Policy, Permissions-Policy
  • LeakRadar — credential leak search on Pastebin via Google Dorks

The most interesting finding during testing was the DMARC analysis. A domain with p=none can be freely spoofed for phishing — emails from ceo@company.com reach inboxes without any authentication failure. DOMINUS detects it and explains it in the report.

SENTINEL — IP Threat Intelligence

DOMINUS extracts IPs from the target's DNS records. Those IPs go directly to SENTINEL, which runs six more phases:

  • Geolocation — country, city, ASN, ISP via ip-api.com (no key required)
  • Abuse — report history, confidence score and attack categories via AbuseIPDB
  • Threat feeds — presence in AlienVault OTX pulses
  • Ports — exposed TCP services
  • Cloud detection — identifies if the IP belongs to AWS, Azure, GCP or Cloudflare
  • Tor detection — real-time lookup against the live Tor exit node list

When we analyzed 185.220.101.1 as a test target, SENTINEL immediately detected it as an active Tor exit node with 143 abuse reports — and generated specific recommendations: block full Tor exit node ranges, not just that IP, and implement MFA because brute force via Tor is resistant to IP-based blocking.

The combined workflow

DOMINUS(domain.com) → DNS → target IPs
                              ↓
                    SENTINEL(IP 1) → provider · country · Score X/100
                    SENTINEL(IP 2) → provider · country · Score X/100

Enter fullscreen mode Exit fullscreen mode

In tests against a real domain (with authorization), the combined analysis revealed that the infrastructure was clean and well-hosted in Europe — two servers at known European providers, no abuse history, only ports 80 and 443 open. The only real risk was in the DNS configuration: DMARC in monitor mode and SPF with soft-fail. The risk wasn't in the servers — it was in the email configuration.

That kind of nuanced conclusion is exactly what separates a professional analysis from a simple lookup.

Architecture: what mattered most to me

Both tools share the same design pattern. Every module exposes a single function run(target) -> dict. The engine orchestrates the phases, isolates failures per module, and feeds the scorer. The scorer calculates the score with declarative weights and explains every point in the report.

Target
  └── Module A → run(target) → dict
  └── Module B → run(target) → dict
  └── Engine → Scorer → Generator → standalone HTML

Enter fullscreen mode Exit fullscreen mode

The final report is a single .html file with all CSS and JS inline — open it in any browser, send it to a client, or submit it to a professor with no dependencies. It includes an animated SVG score ring, a findings table with severity badges, numbered actionable recommendations, an interactive geolocation map (SENTINEL), and a language switcher between Spanish and Russian.

What I learned

The most valuable lesson was understanding how much passive reconnaissance reveals without touching anything. Using only public information — DNS records, certificate logs, HTTP headers, abuse lists — you can build a complete risk profile of any organization.

I also learned that modular architecture matters from the start. Adding LeakRadar to DOMINUS after everything else was built meant creating one new file and registering it — nothing else needed to change.

Next steps: full IP range scanning in SENTINEL, Shodan API integration, and a local web interface to run scans without using the terminal.

Repositories


This project is part of my cybersecurity portfolio and was developed during the Master in Cybersecurity & AI at Evolve Academy.