All Projects → tlsfuzzer → Tlsfuzzer

tlsfuzzer / Tlsfuzzer

Licence: gpl-2.0
SSL and TLS protocol test suite and fuzzer

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Tlsfuzzer

Fuzzapi
Fuzzapi is a tool used for REST API pentesting and uses API_Fuzzer gem
Stars: ✭ 521 (+55.52%)
Mutual labels:  automation, security-vulnerability, fuzzer
dheater
D(HE)ater is a proof of concept implementation of the D(HE)at attack (CVE-2002-20001) through which denial-of-service can be performed by enforcing the Diffie-Hellman key exchange.
Stars: ✭ 142 (-57.61%)
Mutual labels:  tls, ssl, tls13
Earlgrey
🍵 iOS UI Automation Test Framework
Stars: ✭ 5,353 (+1497.91%)
Mutual labels:  automation, testing-tools, test-framework
Testssl.sh
Testing TLS/SSL encryption anywhere on any port
Stars: ✭ 5,676 (+1594.33%)
Mutual labels:  robot, ssl, tls
IO-TESTER
A functional test framework
Stars: ✭ 32 (-90.45%)
Mutual labels:  test-automation, test-framework, testing-tools
Acme Client
Let's Encrypt / ACME client written in PHP for the CLI.
Stars: ✭ 337 (+0.6%)
Mutual labels:  automation, ssl, tls
Poco
A cross-engine test automation framework based on UI inspection
Stars: ✭ 1,177 (+251.34%)
Mutual labels:  automation, test-automation, test-framework
Tlslite Ng
TLS implementation in pure python, focused on interoperability testing
Stars: ✭ 119 (-64.48%)
Mutual labels:  ssl, tls, tls13
Telegraf-Test
Telegraf Test - Simple Test ToolKit of Telegram Bots
Stars: ✭ 22 (-93.43%)
Mutual labels:  test-automation, test-framework, testing-tools
wolfssl-py
Python wrapper for wolfSSL embedded SSL/TLS library.
Stars: ✭ 30 (-91.04%)
Mutual labels:  tls, ssl, tls13
Sslyze
Fast and powerful SSL/TLS scanning library.
Stars: ✭ 2,623 (+682.99%)
Mutual labels:  ssl, tls, tls13
Nut.js
Native UI testing / controlling with node
Stars: ✭ 309 (-7.76%)
Mutual labels:  automation, testing-tools, test-automation
Yawast
YAWAST ...where a pentest starts. Security Toolkit for Web-based Applications
Stars: ✭ 181 (-45.97%)
Mutual labels:  ssl, tls, security-audit
Airtest
UI Automation Framework for Games and Apps
Stars: ✭ 5,733 (+1611.34%)
Mutual labels:  automation, test-automation, test-framework
Atls
A light TLS implementation used for learning: TLS 1.0 TLS 1.1 TLS 1.2 TLS 1.3 GMSSL 1.1(国密SSL) based on libcrypto.so.
Stars: ✭ 134 (-60%)
Mutual labels:  ssl, tls, tls13
Gocertcenter
CertCenter API Go Implementation
Stars: ✭ 21 (-93.73%)
Mutual labels:  automation, ssl, tls
Wolfssl
wolfSSL (formerly CyaSSL) is a small, fast, portable implementation of TLS/SSL for embedded devices to the cloud. wolfSSL supports up to TLS 1.3!
Stars: ✭ 1,098 (+227.76%)
Mutual labels:  ssl, tls, tls13
Ssl Checker
Python script that collects SSL/TLS information from hosts
Stars: ✭ 94 (-71.94%)
Mutual labels:  ssl, tls, security-vulnerability
eat
Json based scenario testing tool(which can have test for functional and non-functional)
Stars: ✭ 41 (-87.76%)
Mutual labels:  test-automation, test-framework, testing-tools
Wasmite
Now WebAssembly has proper testing, unit-testing and debugging 🤗
Stars: ✭ 20 (-94.03%)
Mutual labels:  test-automation, test-framework, testing-tools

Build Status Read the Docs Coverage Status Code Climate Code Quality: Python Total Alerts

tlsfuzzer

tlsfuzzer is a test suite for SSLv2, SSLv3, TLS 1.0, TLS 1.1, TLS 1.2, and TLS 1.3 implementations. It's in early stages of development, so there are no API stability guarantees. While it uses fuzzing techniques for testing (randomisation of passed in inputs), the scripts are generally written in a way that verifies correct error handling: unlike typical fuzzers it doesn't check only that the system under test didn't crash, it checks that it returned correct error messages.

You can find ready-to-use scripts testing for many vulnerabilities ( ROBOT, DROWN, etc.) and general standards conformity (RFC 5246, RFC 7627, RFC 7905, etc.) in the scripts/ directory.

Dependencies

You'll need:

  • Python 2.6 or later or Python 3.3 or later
  • tlslite-ng 0.8.0-alpha40 or later (note that tlslite will not work and they conflict with each other)
  • ecdsa python module (dependency of tlslite-ng, should get installed automatically with it), use at least version 0.15 for optimal performance

Optionally, to make cryptographic calculations significantly faster, you may want to install the following libraries (see tlslite-ng and python-ecdsa README files for details):

  • m2crypto
  • gmpy

To get pip (if your python installation doesn't already have it) download get-pip.py and run (or see USAGE.md for alternative configuration that does not require installation of packages):

python get-pip.py

Then install tlslite-ng:

pip install --pre tlslite-ng

(Use --upgrade --pre if you did install it before)

Download the tlsfuzzer:

git clone https://github.com/tlsfuzzer/tlsfuzzer.git

Usage

After all dependencies are installed, make sure:

  • you're in the directory of the project (after git clone just cd tlsfuzzer)
  • the server you want to test is running on the same computer (localhost)
  • the server is listening on port 4433
  • and the server will answer with data to HTTP queries (answer with valid HTTP responses is optional)

Then you can run one of the tests in scripts directory, like so:

PYTHONPATH=. python scripts/test-invalid-compression-methods.py

If test has additional requirements, it will output them to console. No errors printed means that all expecations were met (so for tests with bad data the server rejected our messages).

All scripts also accept --help to print the help message (specification of all the options given script supports), -h to specify the hostname or IP address of the server-to-be-tested and -p to specify the port of the service to be tested.

See USAGE.md for more info and how to interpret errors and failures reported by scripts.

You can find mode detailed documentation for the project at tlsfuzzer.readthedocs.io.

Using tlsfuzzer to test for timing side-channel attacks (Lucky13, padding oracle attacks and timing-based Bleichenbacher oracle) is described in the TIMING.md document.

Server under test configuration

In general, the server under test requires just a RSA certificate, you can create it using the following OpenSSL command:

openssl req -x509 -newkey rsa -keyout localhost.key -out localhost.crt -subj \
/CN=localhost -nodes -batch

Note: tlsfuzzer verifies only TLS level behaviour, it does not perform any checks on the certificate (like hostname validation, CA signatures or key usage). It does however verify if the signatures made on TLS message by the server (like in Server Key Exchange or Certificiate Verify message) match the certificate sent by the server.

More detailed instructions, including how to build the different frameworks from source, are available in the Server setup wiki page.

Example server configurations:

OpenSSL

To test OpenSSL, it's sufficient to pass an extra -www option to a typical s_server command line:

openssl s_server -key localhost.key -cert localhost.crt -www

GnuTLS

To test GnuTLS server, you need to tell it to behave as an HTTP server and additionally, to not ask for client certificates:

gnutls-serv --http -p 4433 --x509keyfile localhost.key --x509certfile \
localhost.crt --disable-client-cert

NSS

To test the Mozilla NSS library server, you first need to create a database with server certificate:

mkdir nssdb
certutil -N -d sql:nssdb --empty-password
openssl pkcs12 -export -passout pass: -out localhost.p12 -inkey localhost.key \
-in localhost.crt -name localhost
pk12util -i localhost.p12 -d sql:nssdb -W ''

Finally, start the server with support for TLSv1.0 and later protocols, DHE ciphers and with the above certificate:

selfserv -d sql:./nssdb -p 4433 -V tls1.0: -H 1 -n localhost

Advanced configuration

More advanced and complex configurations as well as description how to compile the above servers from source is available on the wiki page Server setup.

Contributing

See the CONTRIBUTING.md document for description how to set up your development environment, sanity check the changes and requirements the changes need to follow.

You may also want to read the VISION.md to learn more about the planned scope of the project.

Contributors are expected to follow the project's CODE OF CONDUCT when interacting with other members of the community.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].