SSLSCAN(1)

πŸ’… sslscan β€” the manual, but make it make sense

okay bestie, welcome to the sslscan page from your General Commands Manual (yes that's the manual name, we're fancy here) ✨


🌸 NAME

sslscan β€” a fast SSL/TLS scanner πŸ¦‹


✨ SYNOPSIS

sslscan [options] [host:port | host]

πŸŽ€ DESCRIPTION

so basically sslscan goes and queries SSL/TLS services (think HTTPS, obviously) and then reports back on all the juicy stuff: protocol versions, cipher suites, key exchanges, signature algorithms, and the certificates in use πŸ’– The whole point is helping you understand which of those parameters are weak from a security standpoint β€” like, vibe check the server, but for crypto πŸ”₯ It can also dump results into an XML file so external programs can gobble them up easily.

The terminal output is colour-coded, and here's the legend, no cap:

  • Red Background β€” NULL ciphers (no encryption at all πŸ™ˆ) or anonymous ciphers (no verification of peer)
  • Red β€” ciphers and algorithms with demonstrated vulnerabilities, or ones that are generally considered untrusted πŸ’€
  • Yellow β€” ciphers and algorithms with known weaknesses, or that are still too new to be widely trusted, but that are not generally considered exploitable (even by the standards of TLS vulnerabilities). like, side-eye but not panic 🫢
  • Green β€” ciphers and algorithms aligned with current recommended best practices πŸ‘‘ slay

πŸ’œ OPTIONS

  • --help β€” shows a summary of the options
  • --targets=<file> β€” a file containing a list of hosts to check. Hosts can be supplied with ports (i.e. host:port). One target per line πŸ“
  • --sni-name=<name> β€” use a different hostname for SNI
  • --ipv4, -4 β€” force IPv4 DNS resolution. Default is to try IPv4, and if that fails then fall back to IPv6
  • --ipv6, -6 β€” force IPv6 DNS resolution. Default is to try IPv4, and if that fails then fall back to IPv6
  • --show-certificate β€” display certificate information
  • --show-certificates β€” display the full certificate chain ⛓️
  • --no-check-certificate β€” don't flag certificates signed with weak algorithms (MD5 and SHA-1) or short (<2048 bit) RSA keys
  • --show-client-cas β€” show a list of CAs that the server allows for client authentication. Will be blank for IIS/Schannel servers (iykyk)
  • --show-ciphers β€” show a complete list of ciphers supported by sslscan
  • --show-cipher-ids β€” print the hexadecimal cipher IDs
  • --iana-names β€” use IANA/RFC cipher names rather than OpenSSL ones
  • --show-times β€” show the time taken for each handshake in milliseconds. ⚠️ note that only a single request is made with each cipher, and that the size of the ClientHello is not constant, so this should not be used for proper benchmarking or performance testing. You might want to also use --no-cipher-details to make the output a bit clearer
  • --ssl2 β€” only check if SSLv2 is enabled (yes, the ancient one πŸ’€)
  • --ssl3 β€” only check if SSLv3 is enabled
  • --tls10 β€” only check TLS 1.0 ciphers
  • --tls11 β€” only check TLS 1.1 ciphers
  • --tls12 β€” only check TLS 1.2 ciphers
  • --tls13 β€” only check TLS 1.3 ciphers
  • --tlsall β€” only check TLS ciphers (versions 1.0, 1.1, 1.2, and 1.3) 🌈
  • --ocsp β€” display OCSP status
  • --pk=<file> β€” a file containing the private key, or a PKCS#12 file containing a private key/certificate pair (as produced by MSIE and Netscape)
  • --pkpass=<password> β€” the password for the private key or PKCS#12 file πŸ”
  • --certs=<file> β€” a file containing PEM/ASN1 formatted client certificates
  • --no-ciphersuites β€” do not scan for supported ciphersuites
  • --no-fallback β€” do not check for TLS Fallback Signaling Cipher Suite Value (fallback)
  • --no-renegotiation β€” do not check for secure TLS renegotiation
  • --no-compression β€” do not check for TLS compression (CRIME)
  • --no-heartbleed β€” do not check for OpenSSL Heartbleed (CVE-2014-0160) 🩸 iconic CVE, terrible bug
  • --no-groups β€” do not enumerate key exchange groups
  • --all-groups β€” enumerate key exchange groups for all supported TLS versions, not just the highest among TLS 1.0, 1.1, and 1.2. Use when auditing servers that may have different group policies per protocol version πŸ‘€
  • --show-sigs β€” enumerate signature algorithms
  • --starttls-ftp β€” STARTTLS setup for FTP
  • --starttls-imap β€” STARTTLS setup for IMAP
  • --starttls-irc β€” STARTTLS setup for IRC
  • --starttls-ldap β€” STARTTLS setup for LDAP
  • --starttls-pop3 β€” STARTTLS setup for POP3
  • --starttls-smtp β€” STARTTLS setup for SMTP
  • --starttls-mysql β€” STARTTLS setup for MySQL
  • --starttls-xmpp β€” STARTTLS setup for XMPP
  • --starttls-psql β€” STARTTLS setup for PostgreSQL
  • --xmpp-server β€” perform a server-to-server XMPP connection. Try this if --starttls-xmpp is failing 🫠
  • --rdp β€” send RDP preamble before starting scan
  • --bugs β€” enables workarounds for SSL bugs
  • --timeout=<sec> β€” set socket timeout. Useful for hosts that fail to respond to ciphers they don't understand. Default is 3s ⏰
  • --connect-timeout=<sec> β€” set initial connection timeout. Useful for hosts that are slow to respond to the initial connect(). Default is 75s 🐒
  • --sleep=<msec> β€” pause between connections. Useful on STARTTLS SMTP services, or anything else that's performing rate limiting. Default is disabled 😴
  • --xml=<file> β€” output results to an XML file. - can be used to mean stdout πŸ“
  • --version β€” show version of program
  • --verbose β€” display verbose output
  • --no-cipher-details β€” hide NIST EC curve name and EDH/RSA key length
  • --no-colour β€” disable coloured output (if your terminal is doing too much πŸ’…)

πŸ¦‹ EXAMPLES

Scan a local HTTPS server:

sslscan localhost
sslscan 127.0.0.1
sslscan 127.0.0.1:443
sslscan [::1]
sslscan [::1]:443

look at you go, scanning your own localhost like a responsible little icon πŸ‘‘


🧚 AUTHOR

sslscan was originally written by Ian Ventura-Whiting <fizz@titania.co.uk>. sslscan was extended by Jacob Appelbaum <jacob@appelbaum.net>. sslscan was extended by rbsec <robin@rbsec.net>. This manual page was originally written by Marvin Stark <marv@der-marv.de>.


okay that's the whole thing bestie, go forth and scan responsibly πŸ’–βœ¨πŸŽ€

sign-off time: this page came from the General Commands Manual, dated March 19, 2020 β€” so if the crypto landscape moved since then, that's between you and the calendar πŸ¦‹ no cap, stay safe out there 🫢
πŸ“¦ where this page comes from