Skip to main content

Umbra

Graph-first OSINT for authorized investigations. Umbra connects public data sources into a provenance-backed entity graph, scores confidence, and watches for change — locally, from the command line, with no account and no API keys required for most of it.

Lawful use only. Every case records an authorization_basis for audit. Umbra is passive and defensive: it does not crawl criminal marketplaces, buy stolen data, or provide intrusion capability. Read the acceptable use policy before you start.

pip install umbra-osint
umbra init      # data directory + ethics acknowledgement
umbra doctor    # verify the install before relying on it

The distribution is umbra-osint; the import package and the commands are umbra and umbra-worker.

What it does

umbra intent "example.com"          # free text -> a plan you can review
umbra case create -n acme -b own_asset
umbra run <case-id> -d 1            # collect, pivot, score
umbra profile <case-id>             # markdown profile with provenance
umbra graph <case-id> -o acme.graphml
  • 47 plugin collectors, most of them key-free — DNS, TLS, RDAP, HTTP, Certificate Transparency, git forges, SPARQL, HTML.
  • Entity graph across 22 types: domain, ip, email, url, username, org, person, phone, crypto_address, location, vulnerability, malware, cert, asn, mac, aircraft, repo, technology, breach, paste, nameserver, registrar.
  • Confidence scoring — multi-factor bands, recomputed after every run, with every claim traceable to the evidence that produced it.
  • Email header analysis — umbra email message.eml parses the Received chain, marks where it stops being trustworthy, and judges SPF/DKIM/DMARC alignment from the topmost Authentication-Results only.
  • File ingest — umbra <file> takes .eml, IP and entity lists, CSV, JSON, and reads metadata out of images (EXIF), PDFs and Office documents. Nothing is collected until you confirm the plan.
  • Alert triage: umbra triage alert.json takes an indicator, a SIEM alert (ECS, Suricata EVE, Wazuh, Zeek) or an IOC list, enriches the external side passively, and answers escalate, needs analyst or suggest close using TypeSafe's Jev with your own key. Internal hosts, users and addresses never leave the machine. Nothing is ever closed for you.
  • Phone reputation — offline validation plus a moderated community report corpus. A number nobody has reported is reported as unreported, never as clean.
  • Crypto screening — umbra crypto screen <address> against an owned OFAC/curated label lake. Offline, no chain API.
  • Owned data lakes — Umbra ingests primary sources it can then query with no external API: Certificate Transparency, the IEEE OUI registry, CISA KEV, the abuse.ch malware feeds, DB-IP GeoIP, and an OSM camera/RF corpus.
  • Cyber wiki — a 4.5k-page corpus with exact-identifier lookup (umbra lookup CVE-2021-44228). CVE coverage is every entry in the CISA Known Exploited Vulnerabilities catalogue — not all published CVEs, which is a deliberate scope choice. umbra epss score CVE-… covers the rest with FIRST's modelled exploitation probability, so "not in KEV" stops meaning "no information".
  • Watchlist monitor — DNS/HTTP snapshots and diffs, cron-friendly.
  • Exports — markdown profile, GraphML, and a full JSON case bundle.
  • Blocklist output — malware domain/IP and adult-content feeds in Pi-hole/AdGuard format, built from the owned lakes.

Local-first: SQLite under ~/.umbra by default, Postgres when you point UMBRA_DATABASE_URL at one.

Honest limits

  • Absence of a finding is not a clean result. When a source is unreachable Umbra says so rather than reporting nothing found — blocklists, certificate logs and vulnerability data are all treated this way, on purpose.
  • DNS blocklists need a local recursive resolver. Queried through a public resolver (1.1.1.1, 8.8.8.8) they refuse the query and answer in a way that looks like a listing for every address. umbra doctor checks this.
  • An owned lake is only as current as its last sync. umbra doctor reports the row count and the age of every corpus, because a stale lake answers "not listed" with total confidence.
  • Triage sees indicators, not behaviour. It judges who an address or domain is, not what a process did on your endpoint, and bare IPs mostly land on "needs analyst". Without a Jev key nothing unlisted is suggested for closing.
  • The hosted web application is not in this package. The CLI is the open core; the hosted product runs at umbra-osint.com.

Requires

Python 3.11+. MIT licensed.

Release files for umbra-osint 0.2.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for umbra-osint 0.2.2
File Size Uploaded
umbra_osint-0.2.2.tar.gz 1.1 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for umbra-osint 0.2.2
File Interpreter ABI Platform
umbra_osint-0.2.2-py3-none-any.whl Python 3 none any Details

Total release size: 2.0 MB

Release files / umbra_osint-0.2.2.tar.gz

Download URL umbra_osint-0.2.2.tar.gz
Size 1.1 MB
Tags Source
SHA-256 checksum
How to use checksums
3676101c95af2ddfa4bc25ae85e938fa6be6d09a1e75893c3f0a025c38e384f6
BLAKE2b-256 checksum
How to use checksums
b37c28925ff1acd7dc785bfa9ac49de68c9b0698b1682017da1b08851366cc17
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.15

Release files / umbra_osint-0.2.2-py3-none-any.whl

Download URL umbra_osint-0.2.2-py3-none-any.whl
Size 975.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
37c23b717b3942ce038ac8bcfd797e0a0254a5656f754771813fa8d5fe858dc7
BLAKE2b-256 checksum
How to use checksums
2218f226e13a34c542960a37ba8cab60f30c093c18d360eec6f0b6607cc4e980
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.15

Release history Release notifications | RSS feed

This release

0.2.2 This release

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page