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