eb8dbf66a1
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3.0 KiB
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. |
|
|
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. |
|
false | error_go_core | true |
|
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.