testssl.sh-masscan
testssl.sh-masscan copied to clipboard
Make TLS/SSL security mass scans with testssl.sh and import results into ElasticSearch
Mass Scan Tools for testssl.sh
Script collection for generating testssl.sh command lines that can be executed sequentially or in parallel with tools like GNU Parallel and importing the results into a structured document in ElasticSearch for further analysis.
This is how the scan result of a service appears in Kibana:
Create vulnerability lists:
Visualize vulnerability distribution:
...or create vulnerability expiration graphs:
Dependencies
- testssl.sh 2.9dev branch or later version
- Python 3 with following modules:
- elasticsearch_dsl
- tzlocal
Usage
- Install dependencies (see above)
- Create input file with one
host:port
pair per line. - Run
generate_scan_file.py inputfile > cmdfile
to generate file with testssl.sh command lines. - Run
parallel < cmdfile
to perform testssl.sh scans. - Run
import_testssl.sh_csv_to_ES.py *.csv
to import scan results into ElasticSearch. - View/Analyze data with Kibana or the tool of your choice.
- Fix your TLS configurations :)
Useful Command Lines
List all vulnerabilities in "host;port;vulnerabilities" CSV format:
curl -qsk 'localhost:9200/testssl-*/_search?q=_exists_:vulnerabilities&size=10000' | jq -r '.hits.hits[]._source | [ .ip, ( .port | tostring ), ( .vulnerabilities | join(", ") ) ] | join(";")'
...and add ciphertests field:
curl -qsk 'localhost:9200/testssl-*/_search?q=_exists_:(vulnerabilities+ciphertests)&size=10000' | jq -r '.hits.hits[]._source | [ .ip, ( .port | tostring ), ( .vulnerabilities | if . == null then "" else (. | join(", ") ) end ), ( .ciphertests | if . == null then "" else (. | join(", ") ) end ) ] | join(";")