
Автоматизированный сканер конфигураций TLS-серверов и клиентов для пентестеров и исследователей. Оценивает наборы шифров, версии протоколов и рекомендации по безопасности с настраиваемой глубиной сканирования и машинно-читаемым выводом.
TLS-Scanner — это инструмент, помогающий пентестерам и исследователям безопасности в оценке конфигураций TLS-серверов и клиентов.
Обратите внимание: TLS-Scanner — это исследовательский инструмент, предназначенный для разработчиков TLS, пентестеров, администраторов и исследователей. Графический интерфейс отсутствует. Это первая версия, и она может содержать некоторые ошибки.
Чтобы скомпилировать и использовать TLS-Scanner, необходимо выполнить:
$ cd TLS-Scanner
$ git submodule update --init --recursive
$ mvn clean package
Либо, если вы торопитесь, можно пропустить тесты, используя:
$ mvn clean package -DskipTests=true
Если вы хотите использовать TLS-Scanner как библиотеку, необходимо установить её следующей командой:
$ mvn clean install
Чтобы запустить TLS-Scanner, необходимо запустить один из jar-файлов в папке apps/. Их можно получить, скомпилировав приложение самостоятельно или скачав выпущенные jar-файлы с GitHub.
$ java -jar apps/TLS-Server-Scanner.jar -connect localhost:4433
TLS-Scanner проанализирует указанный сервер (здесь localhost на порту 4433) и в конце выведет отчёт.
В отчёте используются цвета для передачи серьёзности обнаруженных проблем:
Необходимо указать хост, который вы хотите просканировать, с помощью параметра -connect.
Если вы хотите улучшить производительность сканирования, можно использовать параметр -threads, чтобы увеличить количество используемых потоков.
Ещё один важный параметр по причинам производительности — -scanDetail, который можно использовать для настройки детализации сканирования. Возможные значения от быстрого до очень детального: QUICK, NORMAL, DETAILED, ALL.
Детализацию вывода можно настроить с помощью параметра -reportDetail. Чтобы увидеть больше деталей о Guidelines, используйте -reportDetail ALL.
По умолчанию результаты выводятся только в консоль. Если вам нужен машиночитаемый вывод, можно использовать -outputFile output.json, чтобы автоматически записать результаты в JSON-файл.
Наиболее важные параметры для изменения — -scanDetail и -reportDetail. Ниже мы объясним некоторые сценарии использования этих параметров.
В большинстве случаев наших настроек параметров по умолчанию достаточно. Это выполняет сканирование с обоими уровнями детализации, установленными в NORMAL.
Если вы хотите выполнить быстрое сканирование и получить быстрый обзор вашей системы, мы рекомендуем установить оба уровня детализации в QUICK. Это ограничивает объём некоторых выполняемых проверок для снижения времени выполнения и ограничивает детализацию отчёта, исключая очень подробную и техническую информацию.
Если вы хотите полностью оценить вашу систему и выполнить всё, что у нас есть, мы рекомендуем установить оба уровня детализации в ALL. Это выполняет все существующие проверки полностью и выводит очень подробную информацию для дальнейшего анализа и оценки.
Вместо (или в дополнение к) индивидуальной настройке таких параметров, как -scanDetail, вы можете объединить
выбор проверок для запуска и используемых параметров в переиспользуемый JSON-профиль сканирования с
помощью параметра -profile <path/to/profile.json>. Он доступен как в TlsServerScanner, так и в
TlsClientScanner.
Профиль — это JSON-файл со следующими полями:
inheritedFromProfiles: пути к другим профилям, из которых объединяются проверки, разрешаемые относительно
директории файла профиля, в котором они объявлены (абсолютный путь используется как есть).probes: проверки для запуска в виде отображения из полного имени класса перечисления ProbeType
в список имён его констант для запуска. Это группирует проверки по типу вместо повторения
типа для каждой отдельной проверки, при этом один профиль всё ещё может свободно комбинировать проверки из
разных реализаций ProbeType, например TlsProbeType и QuicProbeType. Каждый список для типа
также принимает "*" (все константы этого типа) и "!CONSTANT_NAME" (удалить константу, ранее добавленную по имени или через "*"), обрабатываемые по порядку — см. Everything.json и
demo.json в scan-profiles/ для примеров.settings (необязательно): переопределения для таких параметров, как -scanDetail, -reportDetail,
-postAnalysisDetail, -noColor, -outputFile, -probeTimeout, -parallelProbes и
-threads. Любое пропущенное поле сохраняет своё обычное значение по умолчанию (или то, что было передано в командной
строке). В отличие от probes, settings не наследуются — применяются только настройки, объявленные непосредственно в
профиле, на который вы указываете -profile, даже если он наследует проверки из других профилей.Выполняются только проверки, разрешённые из активного профиля (и всего, что он наследует); всё остальное пропускается.
Пример, объединяющий проверки базового профиля с вашими собственными и настраивающий детализацию сканирования:
base.json:
{
"probes": {
"de.rub.nds.tlsscanner.core.constants.TlsProbeType": ["PROTOCOL_VERSION", "CIPHER_SUITE"]
}
}
quic.json (в той же директории, что и base.json):
{
"inheritedFromProfiles": ["base.json"],
"settings": {
"scanDetail": "QUICK"
},
"probes": {
"de.rub.nds.tlsscanner.core.constants.QuicProbeType": ["SUPPORTED_VERSIONS"]
}
}
$ java -jar apps/TLS-Server-Scanner.jar -connect localhost:4433 -profile quic.json
Это запускает PROTOCOL_VERSION, CIPHER_SUITE и SUPPORTED_VERSIONS с -scanDetail QUICK.
Чтобы увидеть все проверки, доступные для сканера (без подключения к цели), используйте -listProbes.
Он выводит их, сгруппированными по классу ProbeType, в точном синтаксисе JSON, который ожидает поле probes
профиля, так что вы можете скопировать и вставить его прямо в профиль:
$ java -jar apps/TLS-Server-Scanner.jar -listProbes
{
"de.rub.nds.tlsscanner.core.constants.TlsProbeType" : [ "ALPN", "ESNI", "CERTIFICATE", ... ],
"de.rub.nds.tlsscanner.core.constants.QuicProbeType" : [ "SUPPORTED_VERSIONS", ... ]
}
Чтобы получить подробную информацию обо всех возможных параметрах, используйте параметр -help или запустите jar без каких-либо заданных параметров.
Мы предоставляем готовые docker-образы для удобного использования TLS-Server-Scanner.
$ docker run -it --network host ghcr.io/tls-attacker/tlsscanner -connect localhost:4433