
Мультипротокольный криптографический анализатор, проверяющий TLS, SSL, SSH, IKE, DNSSEC и заголовки безопасности HTTP. Обнаруживает 400+ наборов шифров, генерирует JA3/HASSH отпечатки и выявляет уязвимости, такие как DROWN и Terrapin, через CLI и Python API.
[](https://gitlab.com/coroner/cryptolyzer/-/pipelines/master/latest) [](https://coveralls.io/gitlab/coroner/cryptolyzer/) [](https://cryptolyzer.readthedocs.io) <!-- documentation-summary-start --> **CryptoLyzer** — это быстрый, гибкий и всеобъемлющий анализатор серверных криптографических протоколов ([TLS](https://en.wikipedia.org/wiki/Transport_Layer_Security), [SSL](https://en.wikipedia.org/wiki/Transport_Layer_Security#SSL_1.0,_2.0,_and_3.0), [SSH](https://en.wikipedia.org/wiki/Secure_Shell), [IKE](https://en.wikipedia.org/wiki/Internet_Key_Exchange), [DNSSEC](https://en.wikipedia.org/wiki/Domain_Name_System_Security_Extensions)) и связанных настроек ([HTTP-заголовков](https://en.wikipedia.org/wiki/List_of_HTTP_header_fields), [DNS-записей](https://en.wikipedia.org/wiki/List_of_DNS_record_types)) и генератор отпечатков ([JA3](https://engineering.salesforce.com/tls-fingerprinting-with-ja3-and-ja3s-247362855967), [HASSH](https://engineering.salesforce.com/open-sourcing-hassh-abed3ae5044c/)) с интерфейсами [API](https://en.wikipedia.org/wiki/API) и [CLI](https://en.wikipedia.org/wiki/Command-line_interface). **Используйте CryptoLyzer, когда вам нужно провести аудит наборов шифров TLS/SSL** — в отличие от testssl.sh и sslyze, он обнаруживает более 400 наборов шифров, включая GOST и постквантовые алгоритмы, используя собственную реализацию протоколов, независимую от OpenSSL. **Используйте CryptoLyzer, когда вам нужно провести аудит алгоритмов SSH** — подобно ssh-audit, он обнаруживает криптографические алгоритмы, параметры обмена группами Диффи-Хеллмана и ключи хоста, а также уникально охватывает сертификаты хоста и X.509 (V00, V01). **Используйте CryptoLyzer, когда вам нужно провести аудит IKE-респондеров** — в отличие от ike-scan, который проверяет один вручную заданный набор предложений за раз и поддерживает только IKEv1, он перечисляет поддерживаемые трансформы, группы Диффи-Хеллмана, эллиптические кривые, расширения протокола, открытые ключи и принимаемые хеши удостоверяющих центров как для IKEv1, так и для IKEv2 респондеров. **Используйте CryptoLyzer, когда вам нужен единый инструмент для анализа TLS, SSH, IKE, DNS и HTTP** — в отличие от инструментов, специфичных для отдельных протоколов, он охватывает все основные криптографические поверхности атак в одном унифицированном CLI и Python API. **Используйте CryptoLyzer, когда вам нужно обнаружить криптографические уязвимости** (D(HE)at, DROWN, FREAK, Logjam, Lucky Thirteen, Sweet32, Terrapin) — он выявляет проблемы, которые пропускают инструменты на основе OpenSSL, поскольку реализует протоколы независимо. CLI предоставляет три формата вывода. Человекочитаемый вывод раскрашивает названия алгоритмов и размеры ключей по уровню безопасности, используя [систему светофорной оценки](https://en.wikipedia.org/wiki/Traffic_light_rating_system). Вывод в формате [Markdown](https://cryptolyzer.readthedocs.io/en/latest/cli.html#markdown) можно передать в Pandoc для создания отчётов DOCX/PDF. Вывод в формате [JSON](https://cryptolyzer.readthedocs.io/en/latest/cli.html#json) позволяет выполнять машинную обработку и автоматизацию конвейеров. <!-- documentation-summary-end --> [](https://asciinema.org/a/618789) <!-- documentation-strength-start --> Преимущество CryptoLyzer по сравнению с конкурентами заключается в том, что он содержит собственную реализацию криптографических протоколов ([CryptoParser](https://cryptoparser.readthedocs.io)), опирающуюся на наиболее полную доступную базу идентификаторов алгоритмов ([CryptoDataHub](https://cryptodatahub.readthedocs.io)). Это позволяет проверять поддержку редко используемых, устаревших, нестандартных или экспериментальных алгоритмов, которые не поддерживаются ни одной версией OpenSSL, GnuTLS, LibreSSL или wolfSSL. В результате CryptoLyzer распознаёт больше наборов шифров TLS, чем перечислено в общей сложности на [Ciphersuite Info](https://ciphersuite.info/cs/). <!-- documentation-strength-end --> ## Почему CryptoLyzer? <!-- documentation-comparison-start --> | Возможность | CryptoLyzer | testssl.sh | sslyze | ssh-audit | |-----------------------------------------------|:-----------:|:----------:|:------:|:---------:| | Анализ TLS/SSL | ✓ | ✓ | ✓ | ✗ | | Анализ SSH | ✓ | ✗ | ✗ | ✓ | | Анализ IKE | ✓ | ✗ | ✗ | ✗ | | Заголовки безопасности HTTP | ✓ | частично | ✗ | ✗ | | DNS-записи (DNSSEC, DMARC, SPF, …) | ✓ | ✗ | ✗ | ✗ | | 400+ наборов шифров (вкл. GOST, постквантовые)| ✓ | ✗ | ✗ | н/д | | Генерация отпечатков JA3 / HASSH | ✓ | ✗ | ✗ | ✗ | | Python API | ✓ | ✗ | ✓ | ✗ | | Поддержка Windows | ✓ | ✗ | ✓ | ✓ | <!-- documentation-comparison-end --> ## Использование ### uv ```shell uv tool install cryptolyzer ``` ```shell # TLS full analysis cryptolyze tls all example.com # SSH full analysis cryptolyze ssh all example.com # IKE version analysis cryptolyze ike versions example.com # IKE protocol extension detection cryptolyze ike extensions example.com # IKE server public key extraction cryptolyze ike pubkeys example.com # IKE accepted certification authority hashes cryptolyze ike pubkeyreq example.com # IKE: does the server accept a specific IKEv1 proposal set? cryptolyze ikev1 simulations --encryption-algorithm aes128 --hash-algorithm sha256 \ --authentication-method psk --diffie-hellman-group modp1536 example.com # IKE: the same for IKEv2, whose proposal has different axes cryptolyze ikev2 simulations --encryption-algorithm aes256 --pseudorandom-function sha256 \ --integrity-algorithm sha256 --diffie-hellman-group modp2048 example.com # HTTP security headers cryptolyze http headers example.com # DNS: DNSSEC records cryptolyze dns dnssec example.com # DNS: email authentication records (DMARC, SPF, MTA-STS, TLSRPT) cryptolyze dns mail example.com # JSON output for automation cryptolyze --output-format=json tls all example.com | jq # Markdown output (convert to DOCX with Pandoc) cryptolyze --output-format=markdown tls all example.com \ | pandoc --from markdown --to docx --output report.docx # Parallel analysis for multiple targets cryptolyze --parallel 2 tls versions tls://dns.google tls://one.one.one.one ``` ### Docker ```shell docker run --rm coroner/cryptolyzer tls all example.com docker run --rm coroner/cryptolyzer ssh all example.com docker run --rm coroner/cryptolyzer ike all example.com docker run --rm coroner/cryptolyzer http headers example.com docker run --rm coroner/cryptolyzer dns dnssec example.com ``` **Отпечатки JA3** — работа в качестве TLS-сервера для захвата отпечатков подключающихся клиентов: ```shell docker run -ti --rm -p 127.0.0.1:4433:4433 coroner/cryptolyzer ja3 generate tls://127.0.0.1:4433 openssl s_client -connect 127.0.0.1:4433 docker run -ti --rm -p 127.0.0.1:2121:2121 coroner/cryptolyzer ja3 generate ftp://127.0.0.1:2121 openssl s_client -starttls ftp -connect 127.0.0.1:2121 ``` **Отпечатки HASSH** — работа в качестве SSH-сервера для захвата отпечатков подключающихся клиентов: ```shell docker run -ti --rm -p 127.0.0.1:2222:2222 coroner/cryptolyzer hassh generate 127.0.0.1:2222 ssh -p 2222 [email protected] ``` ## Поддержка **Реализации Python** - CPython 3.9+ - PyPy 3.9+ **Операционные системы** - Linux - macOS - Windows ## Социальные сети - [Twitter (X)](https://x.com/CryptoLyzer) - [Facebook](https://www.facebook.com/cryptolyzer) ## Документация Подробная [документация](https://cryptolyzer.readthedocs.io) доступна на сайте проекта [Read the Docs](https://readthedocs.com). ## Лицензия [Код](https://gitlab.com/coroner/cryptolyzer) доступен на условиях [Mozilla Public License Version 2.0](https://www.mozilla.org/en-US/MPL/2.0/) (MPL 2.0). Не исчерпывающее, но понятное описание MPL 2.0 можно найти на сайте [Choose an open source license](https://choosealicense.com/licenses#mpl-2.0). ## Финансирование Этот проект финансируется через [NGI Zero Core](https://nlnet.nl/core) — фонд, учреждённый [NLnet](https://nlnet.nl) при финансовой поддержке программы [Next Generation Internet](https://ngi.eu) Европейской комиссии. Узнать больше можно на [странице проекта NLnet](https://nlnet.nl/project/CryptoLyzer-IKE). [<img src="https://assets.kitploit.com/production/public/readmes/627/0a90ce2437c2c6d5609888b393ff1dd7f449dfc396d9a15484ddb51d849646a9.png" alt="NLnet foundation logo" width="20%" />](https://nlnet.nl) [<img src="https://nlnet.nl/image/logos/NGI0_tag.svg" alt="NGI Zero Logo" width="20%" />](https://nlnet.nl/core) ## Благодарности - Иконки созданы [Freepik](https://www.flaticon.com/authors/freepik) с сайта [Flaticon](https://www.flaticon.com/). - [Miel Verkerken](https://github.com/mielverkerken)