tlsx: recon de configuración TLS y certificados
tlsx · MIT
tlsx se conecta a un servicio TLS y reporta lo que encuentra: subject y entradas SAN del certificado, emisor, expiración, versiones de protocolo, cipher suites, hash JARM. Es a la vez un verificador de configuración y una herramienta de descubrimiento — los SAN de certificado nombran rutinariamente hostnames que ninguna fuente pasiva conoce.
Instalación
go install -v github.com/projectdiscovery/tlsx/cmd/tlsx@latest Comandos principales
# detalle básico del handshake
tlsx -l hosts.txt -silent
# extrae entradas SAN — esto es descubrimiento, no solo inspección
tlsx -l hosts.txt -san -cn -silent -resp-only
# expiración y emisor
tlsx -l hosts.txt -expired -self-signed -mismatched -silent
# enumeración de protocolo y cifrado
tlsx -l hosts.txt -tls-version -cipher -silent
# JSON
tlsx -l hosts.txt -json -o tls.jsonl -san -cn -jarm Salida
{"host":"example.com","port":"443","tls_version":"tls12","cipher":"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
"not_after":"2026-11-02T12:00:00Z","subject_cn":"example.com",
"subject_an":["example.com","www.example.com","internal-api.example.com"],
"issuer_org":["Let's Encrypt"],"self_signed":false} Dónde encaja en Tandera
tlsx se agenda en dos fases. En fingerprint se ejecuta contra el conjunto de hosts vivos para registrar detalle de certificado y protocolo. En active_scan en recon_web_full realiza la enumeración más profunda de protocolo y cifrado que un flujo NonIntrusive no hará.
Las entradas SAN que recupera realimentan el inventario de hosts — un certificado que nombra internal-api.example.com mete ese hostname en el descubrimiento de alcance aunque ninguna fuente pasiva lo haya visto jamás.
Uso en un pentest
Lee los SAN antes que la lista de cifrados. Un certificado compartido es un mapa de la nomenclatura interna de la organización. Los prefijos internal-, staging-, vpn- y admin- en un certificado público son la salida de mayor valor que produce esta herramienta.
Los cifrados débiles son un finding, pero califícalos con honestidad. TLS 1.0 en una página de login pública y TLS 1.0 en un servicio interno heredado no son el mismo riesgo. Un informe que lista ambos como Alto pierde credibilidad.
Las fechas de expiración son inteligencia operativa. Un certificado que expira en nueve días dice algo sobre cómo se mantiene el objetivo, y vale una línea en el informe aunque no sea una vulnerabilidad.