You are here: Home » Сбор информации » SSLyze

SSLyze

Описание SSLyze

Быстрая и мощная библиотека для Python 2.7 для сканирования SSL/TLS на сервере.

SSLyze — это библиотека на Python и инструмент командной строки, который может анализировать SSL настройку сервера подключаясь к нему. Он предназначен быть быстрым и всеобъемлющим и должен помочь организациям и тестерам выявить неправильные настройки влияющие на SSL/TLS серверов.

Ключевые функции включают:

  • Python API, чтобы запустить сканирование и обрабатывать результаты напрямую из.
  • Сканирования автоматически распределяются среди нескольких процессов, делая их очень быстрыми.
  • Тестирования производительности: поддержка возобновления сеанса и TLS tickets.
  • Тестирование безопасности: наборы слабых шифров, небезопасные перезаключения, CRIME, Heartbleed и другое.
  • Проверка сертификата сервера и проверка отзыва через OCSP stapling.
  • https://en.wikipedia.org/wiki/OCSP_stapling
  • SПоддержка StartTLS рукопожатий на SMTP, XMPP, LDAP, POP, IMAP, RDP, PostGres и FTP.
  • Поддержка клиентских сертификатов при проверке серверов, выполняющих взаимную аутентификацию.
  • Результаты сканирования могут быть записаны в файл XML или JSON для дальнейшей обработки.
  • И многое другое!

Домашняя страница: https://github.com/nabla-c0d3/sslyze/

Автор: iSECPartners

Лицензия: GPLv2

Справка по SSLyze

Использование: 

sslyze [опции] target1.com target2.com:443 target3.com:443{ip} ит.д....
Опции:
  --version             показать версию программы и выйти
  -h, --help            показать справку и выйти
  --xml_out=XML_ФАЙЛ    Записывает результаты сканирования как XML документ
                        в файл XML_ФАЙЛ. Если XML_ФАЙЛ установлен на "-", то вместо
                         этого вывод XML будет показан в stdout (стандартном выводе).
  --json_out=JSON_ФАЙЛ  Записывает результаты сканирования как JSON документ
                        в файл JSON_ФАЙЛ. Если JSON_ФАЙЛ установлен на "-", то вместо 
                        этого вывод JSON будет показан в stdout (стандартном выводе).
  --targets_in=TARGETS_IN
                        Считывает из файла TARGETS_IN список целей.
                        Он должен содержать построчно хост:порт.
  --timeout=TIMEOUT     Устанавливает значения таймаута в секунда используемых
                        с каждым делаемым на сервер(а) сокетным соединением.
                        По умолчанию это 5s.
  --nb_retries=NB_RETRIES
                        Устанавливает число повторных попыток для всех сетевых
                        соединений, инициированных при сканировании. Увеличьте
                        это значение если вы получаете множество ошибок
                        таймаута/соединения при сканировании конкретного
                        сервера. Уменьшите это значение для увеличения скорости
                        сканирований; результатом, тем не менее, могут стать возвращаемые
                        ошибки. По умолчанию это 3 попытки соединения.
  --https_tunnel=HTTPS_TUNNEL
                        Туннелировать весь трафик до целевого сервера(ов) через 
                        HTTP CONNECT прокси. HTTP_TUNNEL должен быть URL
                        прокси: 'http://USER:PW@HOST:PORT/'. Для прокси,
                        требующих аутентификацию, поддерживается только
                        Basic Authentication.
  --starttls=STARTTLS   Выполняет StartTLS хендшейки при при соединении
                        с целевым сервером(ами). STARTTLS должен быть одним из: smtp ,
                        xmpp , xmpp_server , pop3 , ftp , imap , ldap , rdp ,
                        postgres , auto. Опция 'auto' заставит SSLyze
                        вывести протокол (ftp, imap, ит.д.) из
                        предоставленного номера порта для каждого целевого сервера.
  --xmpp_to=XMPP_TO     Необязательная настройка для STARTTLS XMPP. XMPP_TO должна быть
                        должна быть именем хоста для размещения в атребуте 'to'
                        XMPP потока. По умолчанию это имя хоста сервера.
  --sni=SNI             Использовать Server Name Indication для указания имени хоста
                        для соединения. Затронет только TLS 1.0+ соединения.
  --quiet               Ничего не выводить в stdout; полезно при использовании
                        --xml_out или --json_out.
  --regular             Обычное HTTPS сканирование; сокращение для --sslv2 --sslv3
                        --tlsv1 --tlsv1_1 --tlsv1_2 --reneg --resum
                        --certinfo_basic --http_get --hide_rejected_ciphers
                        --compression --heartbleed --openssl_ccs --fallback

  Поддержка клиентских сертификатов:
    --cert=CERT         Имя файла цепочки сертификатов клиента. Сертификаты
                        должны быть в формате PEM и должны быть отсортированы,
                        начиная с клиентского сертификата субъекта, а затем, если это
                        применимо, с промежуточными сертификатами CA.
    --key=KEY           Имя файла приватного ключа клиента.
    --keyform=KEYFORM   Формат приватного ключа клиента. DER или PEM (по умолчанию).
    --pass=KEYPASS      Парольная фраза приватного ключа клиента.

  HstsPlugin:
    --hsts              Проверка поддержки HTTP Strict Transport Security
                        (HSTS) путём сбора любых присутствующих полей
                        Strict-Transport-Security в HTTP ответе, отправляемых
                        назад сервером(ами).

  HeartbleedPlugin:
    --heartbleed        Тестирует сервер(ы) на OpenSSL Heartbleed
                        уязвимость (экспериментальный).

  SessionResumptionPlugin:
    Анализирует возможности возобновления сеанса SSL на целевом сервере.

    --resum             Тестирует сервер(ы) на поддержку возобновления сеанса,
                        используя идентификаторы и билеты TLS сеансов (RFC 5077).
    --resum_rate        Выполняет 100 возобновлений сеанса с сервером(ами),
                        чтобы оценить скорость возобновления сеанса.

  FallbackScsvPlugin:
    --fallback          Проверяет поддержку набора шифров TLS_FALLBACK_SCSV 
                        для предотвращения атак с понижением.

  CompressionPlugin:
    --compression       Тестирует сервер(ы) на поддержку Zlib компрессии.

  SessionRenegotiationPlugin:
    --reneg             Тестирует сервер(ы) на инициируемые клиентом перезаключения
                        и поддержку безопасного перезаключения.

  OpenSslCcsInjectionPlugin:
    --openssl_ccs       Проверяет сервер(ы) на уязвимость внедрения 
                         OpenSSL CCS (эксперементальная).

  OpenSslCipherSuitesPlugin:
    Сканирует сервер(ы) на поддерживаемые наборы OpenSSL шифров.

    --sslv2             Выводит список SSL 2.0 OpenSSL шифров, поддерживаемых 
                        сервером(ами).
    --sslv3             Выводит список SSL 3.0 OpenSSL шифров, поддерживаемых 
                        сервером(ами).
    --tlsv1             Выводит список TLS 1.0 OpenSSL шифров, поддерживаемых 
                        сервером(ами).
    --tlsv1_1           Выводит список TLS 1.1 OpenSSL шифров, поддерживаемых 
                        сервером(ами).
    --tlsv1_2           Выводит список TLS 1.2 OpenSSL шифров, поддерживаемых 
                        сервером(ами).
    --http_get          Опция - Для каждого набора шифров отправляет HTTP GET
                        запрос после завершения SSL рукопожатия и возврата
                        HTTP кода статуса.
    --hide_rejected_ciphers
                        Опция - Прячет (обычно длинный) список шифров
                        которые были отклонены сервером(ами).

  CertificateInfoPlugin:
    --certinfo_basic    Проверяет достоверность сертификата(ов) сервера(ов) в  
                        различных хранилищах доверия, проверяет наличие
                        поддержки сшивки OCSP и печатает 
                        соответствующие поля сертификата.
    --certinfo_full     Как и --certinfo_basic, но также печатает полный
                        сертификат сервера.
    --ca_file=CA_FILE   Файл Локального Центра сертификации (в формате
                         PEM) для проверки действительности сертификата(ов)
                         сервера(ов).

Руководство по SSLyze

Страница man отсутствует.

Примеры запуска SSLyze

Запуск обычного сканирования (--regular) в отношении целевого хоста (suip.biz):

sslyze --regular suip.biz

Установка SSLyze

Программа предустановлена в Kali Linux.

Установка в BlackArch

Программа предустановлена в BlackArch.

Установка в Windows

Скомпилированные исполнимые файлы для Windows вы найдёте по этой ссылке. Пакет также можно сгенерировать запуском следующей команды:

python.exe setup_py2exe.py py2exe

Установка в Linux (Debian, Ubuntu, Linux Mint):

SSLyze можно установить напрямую через pip:

pip install sslyze
sslyze --regular www.yahoo.com:443 www.google.com "[2607:f8b0:400a:807::2004]:443"

Также просто можно напрямую клонировать репозиторий и установить зависимости:

git clone https://github.com/nabla-c0d3/sslyze.git
cd sslyze
pip install -r requirements.txt --target ./lib
python -m sslyze --regular www.yahoo.com:443 www.google.com "[2607:f8b0:400a:807::2004]:443"

На Linux, чтобы могло быть скомпилировано расширение nassl C, нужно сначала установить пакет python-dev:

sudo apt-get install python-dev

SSLyze протестирован на следующих платформах: Windows 7 (32 и 64 бит), Debian 7 (32 и 64 бит), macOS Sierra

Информация об установке в другие операционные системы будет добавлена позже.

Скриншоты SSLyze

  

Инструкции по SSLyze

Ссылки на инструкции будут добавлены позже.

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

Рекомендуемые статьи: