eb8dbf66a1
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3.7 KiB
3.7 KiB
Capability: osint-passive
Recolección OSINT pasiva: obtener información sin interactuar de forma intrusiva con el
objetivo, usando solo fuentes públicas (DNS público, RDAP, Certificate Transparency, metadatos
de documentos propios, servicios de perfil públicos). Pensado para investigación autorizada,
due diligence, pentest con permiso y enriquecimiento de las fichas del vault osint.
Encuadre: dual-use. Úsese solo contra objetivos propios o con autorización. Las funciones
que tocan servicios públicos (enumerate_username_sites, enum_subdomains_crtsh) dejan una
huella mínima (un request a cada servicio); respeta sus rate limits.
Funciones
| ID | Firma | Qué hace |
|---|---|---|
extract_exif_metadata_py_cybersecurity |
extract_exif_metadata(image_path) -> dict |
EXIF de una imagen (fecha, cámara, software, GPS decimal) vía Pillow. |
extract_pdf_metadata_py_cybersecurity |
extract_pdf_metadata(pdf_path) -> dict |
Document Info de un PDF (autor, fechas, software, páginas) vía pypdf. |
guess_email_formats_py_cybersecurity |
guess_email_formats(nombre, apellidos, dominio) -> list |
Pure. Candidatos de email comunes a partir de nombre + dominio. |
enumerate_username_sites_py_cybersecurity |
enumerate_username_sites(username, ...) -> list |
¿Existe un username en ~12 redes públicas? (sherlock ligero, por código HTTP). |
build_search_dorks_py_cybersecurity |
build_search_dorks(target, tipo, ...) -> list |
Pure. Genera dorks de motor de búsqueda (persona/email/dominio/usuario). |
dns_records_py_cybersecurity |
dns_records(dominio, types=None) -> dict |
Registros DNS (A/AAAA/MX/TXT/NS/CNAME) vía dig. |
whois_lookup_py_cybersecurity |
whois_lookup(dominio, ...) -> dict |
Datos de registro vía RDAP (WHOIS moderno HTTP/JSON, sin CLI). |
enum_subdomains_crtsh_py_cybersecurity |
enum_subdomains_crtsh(dominio, ...) -> list |
Subdominios desde Certificate Transparency (crt.sh). |
Orquestadores (grupo osint-enrich): scan_ficha_attachments_metadata,
enrich_person_passive, enrich_org_passive.
Ejemplo canónico
cd /home/enmanuel/fn_registry
python/.venv/bin/python3 - <<'PYEOF'
import sys; sys.path.insert(0, "python/functions")
from cybersecurity import (dns_records, whois_lookup, enum_subdomains_crtsh,
guess_email_formats, build_search_dorks, extract_exif_metadata)
# Dominio (org)
print(whois_lookup("organic-machine.com")["registrar"]) # OVH sas
print(dns_records("organic-machine.com")["A"]) # ['135.125.201.30']
print(enum_subdomains_crtsh("organic-machine.com")[:5])
# Persona
print(guess_email_formats("Enmanuel", "Gutierrez Perez", "gmail.com")[:5])
print(build_search_dorks("Enmanuel Gutierrez Perez", "persona")[:3])
# Metadatos de un documento propio
print(extract_exif_metadata("/home/enmanuel/Obsidian/osint/attachments/personas/enmanuel-gutierrez-perez/dni-1.jpg"))
PYEOF
Fronteras (qué NO es)
- No es recolección activa: no hace port scan, dns brute, ni sondea la infra del objetivo.
Eso sería el grupo
osint-active(no construido todavía). - No verifica los candidatos:
guess_email_formatspropone, no confirma que el email exista. - No ejecuta los dorks:
build_search_dorkslos genera; ejecutarlos es otro paso (browser). - No incluye breach/leak lookup (HIBP requiere API key de pago) — pendiente.
Gotchas
crt.shva lento / rate-limitado y a veces responde 404; los orquestadores lo capturan enerrorsy siguen.enumerate_username_sitesda falsos positivos/negativos por anti-bot de algunos sitios.- El GPS de EXIF revela ubicación — dato sensible; trátese como PII.