Files
fn_registry/python/functions/cybersecurity/enum_subdomains_crtsh.md
T
egutierrez eb8dbf66a1 feat(infra): auto-commit con 88 cambios
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-11 00:16:46 +02:00

3.0 KiB

name, kind, lang, domain, version, purity, signature, description, tags, params, output, uses_functions, uses_types, returns, returns_optional, error_type, imports, tested, tests, test_file_path, file_path
name kind lang domain version purity signature description tags params output uses_functions uses_types returns returns_optional error_type imports tested tests test_file_path file_path
enum_subdomains_crtsh function py cybersecurity 1.0.0 impure def enum_subdomains_crtsh(dominio: str, timeout_s: float = 20.0) -> list Enumeracion OSINT pasiva de subdominios desde Certificate Transparency (crt.sh). Consulta https://crt.sh/?q=%25.<dominio>&output=json con http_get_json, extrae name_value de cada certificado, separa por saltos de linea, deduplica, filtra wildcards (*.) y devuelve la lista ordenada de subdominios unicos. Pasivo: no toca al objetivo, consulta logs CT publicos.
osint-passive
subdomains
crtsh
certificate-transparency
recon
cybersecurity
name desc
dominio Dominio base a enumerar, ej. organic-machine.com. Vacio lanza RuntimeError.
name desc
timeout_s Segundos maximo de espera de la peticion HTTP a crt.sh (default 20.0).
Lista ordenada de subdominios unicos (en minusculas, sin wildcards) que aparecen en certificados emitidos para el dominio. Lista vacia si crt.sh no devuelve resultados.
http_get_json_py_infra
false error_go_core
true
test_dedup_y_orden
test_filtra_wildcards
test_respuesta_vacia
test_respuesta_no_lista_lanza_error
test_dominio_vacio_lanza_error
python/functions/cybersecurity/enum_subdomains_crtsh_test.py python/functions/cybersecurity/enum_subdomains_crtsh.py

Ejemplo

import sys, os
sys.path.insert(0, os.path.join("python", "functions"))
from cybersecurity import enum_subdomains_crtsh

subs = enum_subdomains_crtsh("organic-machine.com")
for s in subs:
    print(s)
# api.organic-machine.com
# mail.organic-machine.com
# organic-machine.com
# www.organic-machine.com

Cuando usarla

Usala para descubrir la superficie de subdominios de un objetivo sin enviarle trafico: los logs de Certificate Transparency listan todos los nombres para los que se han emitido certificados TLS. Complementa a dns_records (resolucion) y whois_lookup (registro) en el reconocimiento pasivo inicial.

Gotchas

  • Es OSINT pasivo: consulta los logs CT publicos via crt.sh, NO toca al dominio objetivo ni resuelve los subdominios encontrados (algunos pueden estar muertos o no resolver).
  • crt.sh suele ir lento o rate-limitear bajo carga; para dominios grandes la respuesta puede tardar varios segundos o agotar el timeout_s. Subir el timeout o reintentar si falla.
  • Solo encuentra subdominios que han tenido certificado TLS emitido y logueado en CT; subdominios internos sin certificado publico no apareceran.
  • Los wildcards (*.dominio) se filtran porque no son hosts concretos.
  • crt.sh devuelve un array JSON (no un objeto); por eso si la respuesta no es una lista se lanza RuntimeError.
  • Puede incluir subdominios de niveles arbitrarios y dominios relacionados que compartieron certificado SAN; revisa la salida antes de usarla como verdad.