testssl.sh
testssl.sh

Licence: http://creativecommons.org/licenses/by-nc-sa/4.0/Dirk Wetter

Wann kann’s(Aktive) Überprüfung serverseitiger Verschlüsselung●

Plain TLS/SSL-verschlüsselte TCP-PortsHTTPS●SMTP/587, RDP/3389, IMAPS/993, POP3D/995,…
●

●

●

●

(agnostisch f. darunter liegende Protokolle)

Tunneln über Proxy (CONNECT)

Diverse STARTTLS-Protokolle→Plaintext-Handshake vor Verschlüsselung●FTP, IMAP, POP, SMTP, LMTP, XMPP,●PostgreSQL, MySQL, LDAP.

| 2018 | © Dirk Wetter, see 1st slideWann kann’sAktive Überprüfung serverseitiger Verschlüsselung
IPv4, IPv6 (switch -6 erforderlich)●
Protokolle: SSLv2 - TLS 1.3 (Drafts ab 18 bis Final)●
Cipher: 370●●(eingetragen als Hexcode in externer Datei)

Kurven (DH, ECDHE, x448, x25519)●
Verwundbarkeiten●

Sockets: Heartbleed, Ticketbleed, ROBOT, CCS, …
●
Cipher u.a: POODLE (SSL), Renegotiation, BEAST
BREACH, LOGJAM, DROWN, …
●●

TLS Extensions| 2018 | © Dirk Wetter, see 1st slideProtokolleHTTP2| 2018 | © Dirk Wetter, see 1st slideProtokolle in schlecht+Verwundbarkeiten (STARTTLS SMTP)| 2018 | © Dirk Wetter, see 1st slide

Schlüsselaustausch(Elliptische Kurven und Diffie-Hellman)| 2018 | © Dirk Wetter, see 1st slideWann kann’sAktive Überprüfung serverseitiger Verschlüsselung
Server- oder Client-Cipher-Order?
●
Bestimmung Cipher-Reihenfolge Server●| 2018 | © Dirk Wetter, see 1st slideServer-Order, gut:

| 2018 | © Dirk Wetter, see 1st slideServer-Order, gut (anderer Ansatz):

Server-Order, nicht. so. gut.

| 2018 | © Dirk Wetter, see 1st slideWann kann’s
Aktive Überprüfung serverseitiger Verschlüsselung
Client-Simulation: Welcher Client vereinbart welchen
Cipher und welche Kurve?
●
Clients: viele Browser, OpenSSL, Java●
Mail-Clients z.B. fehlen●●Daten (mit Erlaubnis) von SSLlabs API●

Leider ohne Android >7, iOS >10, Edge >15| 2018 | © Dirk Wetter, see 1st slide

Client Simulation (default nur letzte Versionen)

Wann kann’sServerzertifikat●TrustExpiration●
Match: SAN (CN), auch Wildcards●Stores:●Apple, Linux, Windows, Mozilla●
Eigene Root-CAs●ToDo: Symantec-Rauswurf●
Revocation Checks: OCSP, CRL (extra Flag: --phone-out)●
DNS: CAA●CT●| 2018 | © Dirk Wetter, see 1st slideAlles rund ums Serverzertifikat (und TLS Extensions)Alles rund ums Serverzertifikat (und TLS Extensions)testssl.sh -q --server-defaults --phone-out web.deAlles rund ums Serverzertifikat (und TLS Extensions)Wann kann’sBonus●HTTP HEADER●
Server-Banner (App, Proxy)●
CSP, HPKP, HSTS
●Weitere Security Header●Cookies●

Goodie: F5 cookie decoder, außer AES ;-)| 2018 | © Dirk Wetter, see 1st slide

HTTP Header

HTTP Header (F5 BigIP)

Wann kann’sAusgaben●

Mensch: Farbe
ANSI: Color-based rating●
Auch Farbenblinde●HTML●●MaschineCSV●
JSON (flach, nicht flach)●Ausgabe nur maximaler „severities“●| 2018 | © Dirk Wetter, see 1st slideWann kann’sMehr●

Datei als Input
Kommandos, Kommentare erlaubt●
Parser für NMAP-Ausgabe●●

Mass Testing
Seriell●Parallel (mit Bildschirmausgabe)●| 2018 | © Dirk Wetter, see 1st slideWann kann’sEinstieg●●testssl.sh (mit oder ohne –help)
testssl.sh <host> oder <host:port>
macht Default-Lauf, ohne Logging, nur Bildschirm| 2018 | © Dirk Wetter, see 1st slide

Was brauche ich?
●

Voraussetzungen●/bin/bash●
Basis-Tools Linux (GNU) oder BSD●
OpenSSL nur als Helfer●
Servertests: Sockets→ läuft ohne weitere Installation●
nativ unter Linux, BSDs, Mac OSX●
WSL, Cygwin, MSYS2 (langsamer)●
docker pull drwetter/testssl.sh| 2018 | © Dirk Wetter, see 1st slideWer?
Dirk Wetter
Initiator, Maintainer, Contributor
David Cooper (NIST)
Sockets ausgebaut, parallel mass testing, ROBOT, ..
WeitereJSON, CSV, Client Handshakes, Unit tests, ..

| 2018 | © Dirk Wetter, see 1st slideWo(oder)| 2018 | © Dirk Wetter, see 1st slide