É comum, para engenheiros web, webmasters e administradores de sistemas, encontrar a necessidade de diagnosticar problemas relacionados a SSL/TLS.
Embora existam diversas ferramentas online para análise de certificados SSL e testes de vulnerabilidades SSL/TLS, elas podem não ser adequadas para testar URLs, VIPs ou IPs de ambientes de intranet.
Para solucionar problemas em recursos internos, é imprescindível o uso de ferramentas autônomas, instaladas na sua rede, capazes de executar os testes necessários.
Diversos cenários podem demandar tais ferramentas:
- Dificuldades na implementação de certificados SSL em servidores web.
- Necessidade de verificar se os protocolos e cifras mais recentes estão em uso.
- Verificação da configuração após a implementação.
- Identificação de riscos de segurança provenientes de testes de penetração.
As ferramentas a seguir podem ser de grande auxílio na resolução desses problemas.
DeepViolet
DeepViolet é um software de análise SSL/TLS baseado em Java, disponível em formato binário ou compilável a partir do código-fonte.
Se você procura uma alternativa ao SSL Labs para uso em redes internas, o DeepViolet é uma excelente opção. Ele verifica:
- A exposição de cifras consideradas fracas.
- Algoritmos de assinatura pouco seguros.
- O status de revogação de certificados.
- O tempo de expiração dos certificados.
- A cadeia de confiança, incluindo a presença de raízes autoassinadas.
SSL Diagnos
Com o SSL Diagnos, é possível avaliar rapidamente a segurança SSL de um site. Ele extrai informações sobre protocolos SSL, conjuntos de cifras, além de verificar vulnerabilidades como Heartbleed e BEAST.
Além do HTTPS, o SSL Diagnos permite testar a robustez do SSL em serviços como SMTP, SIP, POP3 e FTPS.
SSLyze
SSLyze é uma biblioteca Python e uma ferramenta de linha de comando que se conecta a endpoints SSL e realiza uma análise para detectar quaisquer configurações SSL/TLS inadequadas.
A análise com o SSLyze é rápida, pois os testes são distribuídos entre múltiplos processos. Desenvolvedores podem integrá-lo facilmente a aplicativos, com a opção de exportar os resultados em formatos XML ou JSON.
O SSLyze também está disponível no Kali Linux. Se você é novo no Kali, pode procurar informações sobre como instalar o Kali Linux no VMWare Fusion.
OpenSSL
O OpenSSL, ferramenta autônoma e poderosa, não deve ser subestimado. Disponível para Windows e Linux, ele permite realizar diversas tarefas relacionadas a SSL, como verificação, geração de CSR, conversão de certificados, entre outras.
SSL Labs Scan
Se você é fã do Qualys SSL Labs, saiba que não está sozinho! Muitos profissionais de segurança e administradores de sistemas também apreciam essa ferramenta.
Para automatizar testes em massa com o SSL Labs, a ferramenta de linha de comando SSL Labs Scan pode ser extremamente útil.
SSL Scan
Compatível com Windows, Linux e MAC, o SSL Scan auxilia na identificação rápida de diversas métricas:
- Destaque de cifras SSLv2/SSLv3/CBC/3DES/RC4.
- Relatório de cifras fracas (inferiores a 40 bits), nulas ou anônimas.
- Verificação de compressão TLS e da vulnerabilidade Heartbleed.
- E muito mais.
Se você lida com problemas relacionados à criptografia, o SSL Scan é uma ferramenta que agiliza a solução de problemas.
API TLS Scanner etechpt.com
A API TLS Scanner da etechpt.com pode ser uma ótima solução para webmasters.
É um método eficiente para verificar o protocolo TLS, CN, SAN e outros detalhes do certificado em poucos segundos. Você pode testar essa API com um cadastro gratuito para até 3.000 requisições mensais.
O plano premium básico oferece um volume maior de requisições e 10.000 chamadas de API por apenas US$ 5 mensais.
TestSSL
Como o nome sugere, o TestSSL é uma ferramenta de linha de comando para Linux e outros sistemas operacionais. Ele testa diversas métricas essenciais, indicando o status de cada uma delas.
Exemplo de saída:
Testing protocols via sockets except SPDY+HTTP2 SSLv2 not offered (OK) SSLv3 not offered (OK) TLS 1 offered TLS 1.1 offered TLS 1.2 offered (OK) SPDY/NPN h2, spdy/3.1, http/1.1 (advertised) HTTP2/ALPN h2, spdy/3.1, http/1.1 (offered) Testing ~standard cipher categories NULL ciphers (no encryption) not offered (OK) Anonymous NULL Ciphers (no authentication) not offered (OK) Export ciphers (w/o ADH+NULL) not offered (OK) LOW: 64 Bit + DES encryption (w/o export) not offered (OK) Weak 128 Bit ciphers (SEED, IDEA, RC[2,4]) not offered (OK) Triple DES Ciphers (Medium) not offered (OK) High encryption (AES+Camellia, no AEAD) offered (OK) Strong encryption (AEAD ciphers) offered (OK) Testing server preferences Has server cipher order? yes (OK) Negotiated protocol TLSv1.2 Negotiated cipher ECDHE-ECDSA-CHACHA20-POLY1305-OLD, 256 bit ECDH (P-256) Cipher order TLSv1: ECDHE-RSA-AES128-SHA AES128-SHA ECDHE-RSA-AES256-SHA AES256-SHA DES-CBC3-SHA TLSv1.1: ECDHE-RSA-AES128-SHA AES128-SHA ECDHE-RSA-AES256-SHA AES256-SHA TLSv1.2: ECDHE-ECDSA-CHACHA20-POLY1305-OLD ECDHE-ECDSA-CHACHA20-POLY1305 ECDHE-ECDSA-AES128-GCM-SHA256 ECDHE-ECDSA-AES128-SHA ECDHE-ECDSA-AES128-SHA256 ECDHE-ECDSA-AES256-GCM-SHA384 ECDHE-ECDSA-AES256-SHA ECDHE-ECDSA-AES256-SHA384 ECDHE-RSA-CHACHA20-POLY1305-OLD ECDHE-RSA-CHACHA20-POLY1305 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-SHA ECDHE-RSA-AES128-SHA256 AES128-GCM-SHA256 AES128-SHA AES128-SHA256 ECDHE-RSA-AES256-GCM-SHA384 ECDHE-RSA-AES256-SHA ECDHE-RSA-AES256-SHA384 AES256-GCM-SHA384 AES256-SHA AES256-SHA256 Testing vulnerabilities Heartbleed (CVE-2014-0160) not vulnerable (OK), no heartbeat extension CCS (CVE-2014-0224) not vulnerable (OK) Ticketbleed (CVE-2016-9244), experiment. not vulnerable (OK) Secure Renegotiation (CVE-2009-3555) not vulnerable (OK) Secure Client-Initiated Renegotiation not vulnerable (OK) CRIME, TLS (CVE-2012-4929) not vulnerable (OK) BREACH (CVE-2013-3587) potentially NOT ok, uses gzip HTTP compression. - only supplied "/" tested Can be ignored for static pages or if no secrets in the page POODLE, SSL (CVE-2014-3566) not vulnerable (OK) TLS_FALLBACK_SCSV (RFC 7507) Downgrade attack prevention supported (OK) SWEET32 (CVE-2016-2183, CVE-2016-6329) not vulnerable (OK) FREAK (CVE-2015-0204) not vulnerable (OK) DROWN (CVE-2016-0800, CVE-2016-0703) not vulnerable on this host and port (OK) make sure you don't use this certificate elsewhere with SSLv2 enabled services https://censys.io/ipv4?q=EDF8A1A3D0FFCBE0D6EA4C44DB5F4BE1A7C2314D1458ADC925A30AA6235B9820 could help you to find out LOGJAM (CVE-2015-4000), experimental not vulnerable (OK): no DH EXPORT ciphers, no DH key detected BEAST (CVE-2011-3389) TLS1: ECDHE-RSA-AES128-SHA AES128-SHA ECDHE-RSA-AES256-SHA AES256-SHA DES-CBC3-SHA VULNERABLE -- but also supports higher protocols (possible mitigation): TLSv1.1 TLSv1.2 LUCKY13 (CVE-2013-0169) VULNERABLE, uses cipher block chaining (CBC) ciphers RC4 (CVE-2013-2566, CVE-2015-2808) no RC4 ciphers detected (OK)
Como se pode observar, o TestSSL abrange um grande número de vulnerabilidades, preferências de cifra, protocolos, e muito mais. Ele também está disponível em uma imagem Docker.
Para realizar análises remotas com o TestSSL, o TLS Scanner da etechpt.com é uma opção viável.
TLS Scan
O TLS-Scan pode ser compilado a partir do código-fonte ou baixado como binário para Linux/OSX. Ele coleta informações do certificado do servidor e exibe as seguintes métricas em formato JSON:
- Verificações de nome de host.
- Verificações de compressão TLS.
- Enumeração de versões de cifras e TLS.
- Verificações de reutilização de sessão.
Ele suporta protocolos TLS, SMTP, STARTTLS e MySQL. Os resultados podem ser integrados a ferramentas de análise de logs como Splunk ou ELK.
Cipher Scan
O Cipher Scan é uma ferramenta rápida para analisar quais cifras um site HTTPS oferece suporte. Ele também oferece a opção de exibir a saída em formato JSON. Internamente, ele utiliza o comando OpenSSL.
SSL Audit
O SSL Audit é um software de código aberto que verifica certificados e o suporte a protocolos, cifras, e oferece uma classificação com base nos critérios do SSL Labs.
Espera-se que as ferramentas de código aberto listadas acima facilitem a integração de verificações contínuas com seus analisadores de log, ajudando a otimizar a solução de problemas.