testssl.sh
Описание testssl.sh
testssl.sh – это бесплатный инструмент командной строки, который проверяет службу сервера на любом порту на поддерживаемые TLS/SSL шифры, протоколы, а также некоторые криптографические недостатки.
Ключевые особенности:
- Ясный вывод: вы сразу можете сказать, всё ли хорошо или есть проблемы
- Простая установка: эта программа из коробки работает на Linux, Darwin, FreeBSD, NetBSD и MSYS2/Cygwin: не нужно что-либо устанавливать или настраивать, никаких gems, CPAN, pip и всего такого.
- Гибкость: вы можете тестировать любую службу с SSL/TLS и STARTTLS, а не только веб-сервера на порту 443.
- Инструменты: опции командной строки помогут вам запустить ВАШ тест и настроить ВАШ вывод.
- Надёжность: функции тщательно протестированы
- Детальность: если определённая проверка не может быть выполнена из-за отсутствия возможности на вашей клиентской стороне, вы об этом будете уведомлены.
- Приватность: результаты видите только вы, никаких посторонних.
- Свобода: у проекта на 100% открыт исходный код. Вы можете посмотреть код, увидеть что в нём происходит и изменить его.
- Открыта даже разработка (github).
Домашняя страница: https://testssl.sh/
Автор: Dirk Wetter
Лицензия: GPLv2
Справка по testssl.sh
Использование:
"testssl.sh URI" или "testssl.sh <опции>" или "testssl.sh <опции> URI"
"testssl.sh URI", где URI это:
URI host|host:port|URL|URL:port порт по умолчанию 443, URL может содержать HTTPS протокол)
"testssl.sh <опции>", где <опции> это:
-h, --help справка
-b, --banner показать банер + версию testssl.sh
-v, --version как и предыдущая
-V, --local приятный вывод всех локальных шифров
-V, --local <pattern> какой локальный шифр с <pattern> доступен? Если pattern не является цифрой, то ищется по слову
pattern регистронезависимый pattern шестнадцатеричного кода шифра или любой строки в имени, kx или битах
"testssl.sh <опции> URI", где <опции> это:
-t, --starttls <протокол> выполняет стандартный запуск в отношении протокола STARTTLS <протокол>
протокол это <ftp|smtp|pop3|imap|xmpp|telnet|ldap|postgres> (последние требуют openssl)
--xmpphost <до_домена> для XMPP с STARTTLS он предоставляет XML поток до_домена — иногда нужно
--mx <домен/хост> тестирует MX записи от высокого до низкого приоритета (STARTTLS, порт 25)
--file <файл> опция для массового тестирования: Считывает строки команд из <файла>, на одной строке один экземпляр.
Комментарии # разрешены, EOF сигналы завершают <файл>. Неявно включается "--warnings batch"
единичная проверка <опции> ("testssl.sh URI" делает всё кроме -E):
-e, --each-cipher проверяет каждый локальный шифр удалённо
-E, --cipher-per-proto проверяет их на каждый протокол
-f, --ciphers проверяет общие наборы шифров
-p, --protocols проверяет TLS/SSL протоколы (включая SPDY/HTTP2)
-y, --spdy, --npn проверка на SPDY/NPN
-Y, --http2, --alpn проверка на HTTP2/ALPN
-S, --server-defaults отображает стандартную подборку сервера и информацию о сертификате
-P, --server-preference показывает информацию сервера: протокол+шифр
-x, --single-cipher <образец> тестирует соответствие <образца> шифров
(если <образец> не номер: поиск по соответствию слова)
-c, --client-simulation тестирование симуляции клиентов, программа притворяется различными клиентами
-H, --header, --headers тестирует HSTS, HPKP, банер сервера/приложения, заголовки безопасности, куки, обратный прокси, IPv4 адрес
-U, --vulnerable тестирует все (нижеследующие) уязвимости (если применимо)
-B, --heartbleed тестирование на уязвимость heartbleed
-I, --ccs, --ccs-injection тестирование на уязвимость CCS
-R, --renegotiation тестирование на уязвимости повторного согласования
-C, --compression, --crime тестирование на уязвимость CRIME (проблема сжатия TLS)
-T, --breach тестирование на уязвимость BREACH (проблема сжатия HTTP)
-O, --poodle тестирование на уязвимость POODLE (SSL)
-Z, --tls-fallback проверка смягчения последствий TLS_FALLBACK_SCSV
-W, --sweet32 проверка 64 битных блочных шифров (3DES, RC2 и IDEA): уявзимость SWEET32
-A, --beast тестирование на уязвимость BEAST vulnerability
-L, --lucky13 тестирование на LUCKY13
-F, --freak тестирование на уязвимость FREAK
-J, --logjam тестирование на уязвимость LOGJAM
-D, --drown тестирование на уязвимость DROWN
-s, --pfs, --fs, --nsa проверяет (совершенство) параметров секретной пересылки
-4, --rc4, --appelbaum какие RC4 шифры предлагаются?
тонкая настройка / опции подключения (большинство могут быть предустановлены через переменные окружения):
--fast пропускать некоторые проверки: использование openssl для всех шифров (-e), показывать только первый
предпочитаемы шифр
--bugs включает поцию "-bugs" в s_client, нужна, например, для некоторых бажных F5
--assume-http если проверки протокола не удались, по ним подразумевается протокол HTTP и включаются проверки HTTP
--ssl-native откат к проверкам OpenSSL где обычно используются сокеты
--openssl <PATH> использовать этот бинарник openssl (по умолчанию: смотреть в $PATH, $RUN_DIR или testssl.sh)
--proxy <host:port|auto> подключиться через указанный HTTP прокси, auto: автоопределение через $env ($http(s)_proxy)
-6 также использовать IPv6. Работает только с поддерживаемой OpenSSL версией и IPv6 подключением
--ip <ip> a) тестировать данный <ip> v4 или v6 адрес вместо преобразования хоста в URI
b) аргумент "one" означает: просто протестировать первые DNS возвраты (полезно для множества IP)
-n, --nodns не пробовать какие-либо DNS запросы
--sneaky оставлять меньше следов в журнале цели: user agent, referer
опции вывода (также можно предустановить в переменных окружения):
--warnings <batch|off|false> "batch" не ожидает нажатия клавиш, "off" или "false" пропускает предупреждения о соединения
--openssl-timeout <секунды> полезно для недопущения зависаний. <секунд> ждать перед завершением openssl подключения
--quiet не выводить банер. Делая это помните, что условия использования обычно появляются в банере
--wide расширить вывод для тестов вроде RC4, BEAST. PFS добавив hexcode, kx, силу, RFC имя
--show-each для расширенных выводов: отображать все протестированные шифры — а не только успешные
--mapping <openssl| openssl: использовать имена набора шифров OpenSSL для первичных имён шифров (по умолчанию)
rfc| rfc: использовать имена набора шифров шифров RFC для первичных имён шифров
no-openssl| no-openssl: не отображать набор имён шифров OpenSSL, отображать только имена RFC
no-rfc> no-rfc: не отображать имена набора шифров RFC, отображать только OpenSSL имена
--color <0|1|2> 0: без экранирования и других кодов, 1: чёрно-белые коды экранирования, 2: цвет (по умолчанию)
--colorblind поменять местами зелёный и голубой в выводе
--debug <0-6> 1: нормальный экранный вывод, но сохранять отладочный вывод в /tmp/. 2-6: смотрите "grep -A 5 '^DEBUG=' testssl.sh"
опции вывода в файл (также можно предустановить через переменные окружения):
--log, --logging записывать стандартный вывод в <NODE-YYYYMMDD-HHMM.log> в текущей рабочей директории
--logfile <logfile> записывать стандартный вывод в <file/NODE-YYYYMMDD-HHMM.log> если file является директорией или указанным файлом журнала
--json дополнительный вывод находок в файл JSON <NODE-YYYYMMDD-HHMM.json> в текущей рабочей директории
--jsonfile <jsonfile> дополнительный вывод в указанный файл JSON
--json-pretty дополнительный красиво оформленный вывод находок в файл JSON <NODE-YYYYMMDD-HHMM.json> в текущей рабочей директории
--jsonfile-pretty <jsonfile> дополнительный красиво оформленный вывод как JSON в указанный файл
--csv дополнительный вывод находок в файл CSV <NODE-YYYYMMDD-HHMM.csv> в текущей рабочей директории
--csvfile <csvfile> дополнительный вывод как CSV в указанный файл
--hints дополнительные подсказки к находкам
--severity <severity> степень тяжести с более низким уровнем будет отфильтрована CSV+JSON, возможные значения <LOW|MEDIUM|HIGH|CRITICAL>
--append если существуют <csvfile> или <jsonfile> дописать их а не перезаписать
Опции, требующие значений, также можно вызвать с '=' например,
testssl.sh -t=smtp --wide --openssl=/usr/bin/openssl <URI>
URI всегда должен быть последним параметром.
Нужен HTML вывод? Просто передайте вывод по трубе в программу примерно так:
testssl.sh <options> <URI> | aha >output.html
или используйте -log* и конвертируйте позднее.
Информация о программе aha: «Как цветной вывод консоли конвертировать в HTML код».
Руководство по testssl.sh
Страница man присутствует, но не добавляет ничего нового к справке.
Примеры запуска testssl.sh
Протестировать TLS/SSL для сайта suip.biz:
testssl suip.biz
Установка testssl.sh
Установка в Kali Linux
sudo apt-get install testssl.sh
Установка в BlackArch
Программа предустановлена в BlackArch.
Информация об установке в другие операционные системы будет добавлена позже.
Скриншоты testssl.sh
Решение проблемы No cipher mapping file found и No TLS data file found в testssl.sh
В ходе использования последних версий testssl.sh при каждом сканировании стали выводиться следующие сообщения:
ATTENTION: No cipher mapping file found! Please note from 2.9dev on testssl needs files in "$TESTSSL_INSTALL_DIR/etc/" to function correctly. Type "yes" to ignore this warning and proceed at your own risk --> yes ATTENTION: No TLS data file found -- needed for socket based handshakes Please note from 2.9dev on testssl needs files in "$TESTSSL_INSTALL_DIR/etc/" to function correctly. Type "yes" to ignore this warning and proceed at your own risk --> yes
Они требуют, чтобы вы ввели yes, иначе сканирование не продолжиться.
Суть этих предупреждений заключается в том, что testssl.sh не может найти необходимые файлы.
Чтобы решить эту проблему достаточно выполнить следующие команды:
git clone https://github.com/drwetter/testssl.sh sudo mv testssl.sh/etc/ /usr/bin/ rm -rf testssl.sh/
Этими командами вы скачаете и установите файлы, которые требуются для нормальной работы testssl.sh.
Данный метод успешно протестирован на Kali Linux и BlackArch.
Инструкции по testssl.sh
- Онлайн сервис testssl «Бесплатная онлайн проверка TLS/SSL сервера и сайта».





Comments are Closed