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


Близкие программы:

  • hsecscan (75.8%)
  • RAWR (62.2%)
  • Sn1per (58.6%)
  • YAWAST (55.8%)
  • Nikto (55.8%)
  • dirsearch (RANDOM - 42.7%)
  • Рекомендуется Вам:

    Comments are Closed