
Быстрый и настраиваемый TLS-граббер, предназначенный для сбора данных на основе TLS.
Возможности • Установка • Использование • Запуск tlsx • Присоединиться к Discord
Быстрый и настраиваемый сборщик TLS, ориентированный на сбор и анализ данных на основе TLS.

tlsx требует Go 1.24 для успешной установки. Для установки просто выполните команду ниже или загрузите готовый бинарный файл со страницы релизов.```console go install github.com/projectdiscovery/tlsx/cmd/tlsx@latest
## Использование```console
tlsx -h
Это покажет справку для инструмента. Вот все переключатели, которые он поддерживает.```console TLSX is a tls data gathering and analysis toolkit.
Usage: tlsx [flags]
Flags: INPUT: -u, -host string[] target host to scan (-u INPUT1,INPUT2) -l, -list string target list to scan (-l INPUT_FILE) -p, -port string[] target port to connect (default 443)
SCAN-MODE: -sm, -scan-mode string tls connection mode to use (ctls, ztls, openssl, auto) (default "auto") -ps, -pre-handshake enable pre-handshake tls connection (early termination) using ztls -sa, -scan-all-ips scan all ips for a host (default false) -iv, -ip-version string[] ip version to use (4, 6) (default 4)
PROBES: -san display subject alternative names -cn display subject common names -so display subject organization name -tv, -tls-version display used tls version -cipher display used cipher -hash string display certificate fingerprint hashes (md5,sha1,sha256) -jarm display jarm fingerprint hash -ja3 display ja3 fingerprint hash (using ztls) -wc, -wildcard-cert display host with wildcard ssl certificate -tps, -probe-status display tls probe status -ve, -version-enum enumerate and display supported tls versions -ce, -cipher-enum enumerate and display supported cipher -ct, -cipher-type value ciphers types to enumerate. possible values: all/secure/insecure/weak (comma-separated) (default all) -ch, -client-hello include client hello in json output (ztls mode only) -sh, -server-hello include server hello in json output (ztls mode only) -se, -serial display certificate serial number
MISCONFIGURATIONS: -ex, -expired display host with host expired certificate -ss, -self-signed display host with self-signed certificate -mm, -mismatched display host with mismatched certificate -re, -revoked display host with revoked certificate -un, -untrusted display host with untrusted certificate
CONFIGURATIONS: -config string path to the tlsx configuration file -r, -resolvers string[] list of resolvers to use -cc, -cacert string client certificate authority file -ci, -cipher-input string[] ciphers to use with tls connection -sni string[] tls sni hostname to use -rs, -random-sni use random sni when empty -rps, -rev-ptr-sni perform reverse PTR to retrieve SNI from IP -min-version string minimum tls version to accept (ssl30,tls10,tls11,tls12,tls13) -max-version string maximum tls version to accept (ssl30,tls10,tls11,tls12,tls13) -cert, -certificate include certificates in json output (PEM format) -tc, -tls-chain include certificates chain in json output -vc, -verify-cert enable verification of server certificate -ob, -openssl-binary string OpenSSL Binary Path -hf, -hardfail strategy to use if encountered errors while checking revocation status -proxy string socks5 proxy to use for tlsx
OPTIMIZATIONS: -c, -concurrency int number of concurrent threads to process (default 300) -cec, -cipher-concurrency int cipher enum concurrency for each target (default 10) -timeout int tls connection timeout in seconds (default 5) -retry int number of retries to perform for failures (default 3) -delay string duration to wait between each connection per thread (eg: 200ms, 1s)
UPDATE: -up, -update update tlsx to latest version -duc, -disable-update-check disable automatic tlsx update check
OUTPUT: -o, -output string file to write output to -j, -json display output in jsonline format -dns display unique hostname from SSL certificate response -ro, -resp-only display tls response only -silent display silent output -nc, -no-color disable colors in cli output -v, -verbose display verbose output -version display project version
PDCP: -pd, -dashboard upload or view output in the PDCP UI dashboard -pdu, -dashboard-upload string upload tlsx output file (JSONL format) to the PDCP UI dashboard -auth string PDCP API key for authentication -tid, -team-id string upload asset results to a specified team ID -aid, -asset-id string upload new assets to an existing asset ID -aname, -asset-name string asset group name
DEBUG: -health-check, -hc run diagnostic check up
## Using tlsx as library
Examples of using tlsx as library are provided in the [examples](https://github.com/projectdiscovery/tlsx/blob/HEAD/examples/) folder.
## Running tlsx
### Input for tlsx
**tlsx** requires **ip** to make TLS connection and accept multiple format as listed below:```bash
AS1449 # ASN input
173.0.84.0/24 # CIDR input
93.184.216.34 # IP input
example.com # DNS input
example.com:443 # DNS input with port
https://example.com:443 # URL input port
Входной хост можно указать с помощью флага -host / -u, несколько значений можно указать через запятую, аналогично поддерживается ввод из файла с помощью флага -list / -l.
Пример ввода хостов через запятую:```console $ tlsx -u 93.184.216.34,example.com,example.com:443,https://example.com:443 -silent
Пример ввода хостов на основе файла:```console
$ tlsx -list host_list.txt
Port Input:
tlsx по умолчанию подключается к порту 443, который можно изменить с помощью флага -port / -p. Можно указать один или несколько портов, используя ввод через запятую или файл с разделителями строк, содержащий список портов для подключения.
Пример ввода портов через запятую:``` $ tlsx -u hackerone.com -p 443,8443
Пример ввода портов из файла:```
$ tlsx -u hackerone.com -p port_list.txt
Примечание:
Когда входной хост содержит порт, например,
8.8.8.8:443илиhackerone.com:8443, порт, указанный вместе с хостом, будет использоваться для TLS-подключения вместо порта по умолчанию или указанного с помощью флага-port / -p.
Это запустит инструмент против заданного диапазона CIDR и вернет хосты, которые принимают TLS-подключение на порту 443.```console $ echo 173.0.84.0/24 | tlsx
|_ | | / \ / / | | | |_ > < || ||/_/_\ v0.0.1
projectdiscovery.io
[WRN] Use with caution. You are responsible for your actions. [WRN] Developers assume no liability and are not responsible for any misuse or damage.
173.0.84.69:443 173.0.84.67:443 173.0.84.68:443 173.0.84.66:443 173.0.84.76:443 173.0.84.70:443 173.0.84.72:443
### Проверка SAN/CN
TLS-сертификат содержит DNS-имена в полях **subject alternative name** и **common name**, которые можно извлечь с помощью флагов `-san`, `-cn`.```console
$ echo 173.0.84.0/24 | tlsx -san -cn -silent
173.0.84.104:443 [uptycspay.paypal.com]
173.0.84.104:443 [api-3t.paypal.com]
173.0.84.104:443 [api-m.paypal.com]
173.0.84.104:443 [payflowpro.paypal.com]
173.0.84.104:443 [pointofsale-s.paypal.com]
173.0.84.104:443 [svcs.paypal.com]
173.0.84.104:443 [uptycsven.paypal.com]
173.0.84.104:443 [api-aa.paypal.com]
173.0.84.104:443 [pilot-payflowpro.paypal.com]
173.0.84.104:443 [pointofsale.paypal.com]
173.0.84.104:443 [uptycshon.paypal.com]
173.0.84.104:443 [api.paypal.com]
173.0.84.104:443 [adjvendor.paypal.com]
173.0.84.104:443 [zootapi.paypal.com]
173.0.84.104:443 [api-aa-3t.paypal.com]
173.0.84.104:443 [uptycsize.paypal.com]
Для удобства автоматизации опционально можно использовать флаг -resp-only, чтобы выводить в CLI только DNS-имена.```console
$ echo 173.0.84.0/24 | tlsx -san -cn -silent -resp-only
api-aa-3t.paypal.com pilot-payflowpro.paypal.com pointofsale-s.paypal.com uptycshon.paypal.com a.paypal.com adjvendor.paypal.com zootapi.paypal.com api-aa.paypal.com payflowpro.paypal.com pointofsale.paypal.com uptycspay.paypal.com api-3t.paypal.com uptycsize.paypal.com api.paypal.com api-m.paypal.com svcs.paypal.com uptycsven.paypal.com uptycsven.paypal.com a.paypal.com api.paypal.com pointofsale-s.paypal.com pilot-payflowpro.paypal.com
**субдомены**, полученные из TLS-сертификатов, могут быть переданы по конвейеру в другие инструменты PD для дальнейшего исследования; вот пример передачи TLS-субдоменов в **[dnsx](https://github.com/projectdiscovery/dnsx)** для фильтрации пассивных субдоменов и их передачи в **[httpx](https://github.com/projectdiscovery/httpx)** для получения списка хостов с активными веб-сервисами.```console
$ echo 173.0.84.0/24 | tlsx -san -cn -silent -resp-only | dnsx -silent | httpx
__ __ __ _ __
/ /_ / /_/ /_____ | |/ /
/ __ \/ __/ __/ __ \| /
/ / / / /_/ /_/ /_/ / |
/_/ /_/\__/\__/ .___/_/|_|
/_/ v1.2.2
projectdiscovery.io
Use with caution. You are responsible for your actions.
Developers assume no liability and are not responsible for any misuse or damage.
https://api-m.paypal.com
https://uptycsize.paypal.com
https://api.paypal.com
https://uptycspay.paypal.com
https://svcs.paypal.com
https://adjvendor.paypal.com
https://uptycshap.paypal.com
https://uptycshon.paypal.com
https://pilot-payflowpro.paypal.com
https://slc-a-origin-pointofsale.paypal.com
https://uptycsven.paypal.com
https://api-aa.paypal.com
https://api-aa-3t.paypal.com
https://uptycsbrt.paypal.com
https://payflowpro.paypal.com
http://pointofsale-s.paypal.com
http://slc-b-origin-pointofsale.paypal.com
http://api-3t.paypal.com
http://zootapi.paypal.com
http://pointofsale.paypal.com
$ subfinder -d hackerone.com | tlsx -tls-version -cipher
mta-sts.hackerone.com:443 [TLS1.3] [TLS_AES_128_GCM_SHA256] hackerone.com:443 [TLS1.3] [TLS_AES_128_GCM_SHA256] api.hackerone.com:443 [TLS1.3] [TLS_AES_128_GCM_SHA256] mta-sts.managed.hackerone.com:443 [TLS1.3] [TLS_AES_128_GCM_SHA256] mta-sts.forwarding.hackerone.com:443 [TLS1.3] [TLS_AES_128_GCM_SHA256] www.hackerone.com:443 [TLS1.3] [TLS_AES_128_GCM_SHA256] support.hackerone.com:443 [TLS1.2] [TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256]
# Неправильная конфигурация TLS
### Просроченный / самоподписанный / несоответствующий / отозванный / недоверенный сертификат
В tlsx можно передать список хостов для обнаружения **просроченных / самоподписанных / несоответствующих / отозванных / недоверенных** сертификатов.```console
$ tlsx -l hosts.txt -expired -self-signed -mismatched -revoked -untrusted
_____ _ _____ __
|_ _| | / __\ \/ /
| | | |__\__ \> <
|_| |____|___/_/\_\ v0.0.1
projectdiscovery.io
[WRN] Use with caution. You are responsible for your actions.
[WRN] Developers assume no liability and are not responsible for any misuse or damage.
wrong.host.badssl.com:443 [mismatched]
self-signed.badssl.com:443 [self-signed]
expired.badssl.com:443 [expired]
revoked.badssl.com:443 [revoked]
untrusted-root.badssl.com:443 [untrusted]
$ echo hackerone.com | tlsx -jarm -silent
hackerone.com:443 [29d3dd00029d29d00042d43d00041d5de67cc9954cc85372523050f20b5007]
### [JA3](https://github.com/salesforce/ja3) TLS-отпечаток```console
$ echo hackerone.com | tlsx -ja3 -silent
hackerone.com:443 [20c9baf81bfe96ff89722899e75d0190]
tlsx поддерживает несколько флагов проб для запроса конкретных данных, но вся информация всегда доступна в формате JSON; для автоматизации и постобработки использование вывода -json — наиболее удобный вариант.```console
echo example.com | tlsx -json -silent | jq .
...they are extracted). This is the end of a sentence and then a new paragraph begins.
When all modules are loaded, the [`start_ui()`](https://github.com/projectdiscovery/tlsx/blob/HEAD/src/pysion/ui.py) method is called which launches the graphical user interface.```json
{
"timestamp": "2022-08-22T21:22:59.799053+05:30",
"host": "example.com",
"ip": "93.184.216.34",
"port": "443",
"probe_status": true,
"tls_version": "tls13",
"cipher": "TLS_AES_256_GCM_SHA384",
"not_before": "2022-03-14T00:00:00Z",
"not_after": "2023-03-14T23:59:59Z",
"subject_dn": "CN=www.example.org, O=Internet Corporation for Assigned Names and Numbers, L=Los Angeles, ST=California, C=US",
"subject_cn": "www.example.org",
"subject_org": [
"Internet Corporation for Assigned Names and Numbers"
],
"subject_an": [
"www.example.org",
"example.net",
"example.edu",
"example.com",
"example.org",
"www.example.com",
"www.example.edu",
"www.example.net"
],
"issuer_dn": "CN=DigiCert TLS RSA SHA256 2020 CA1, O=DigiCert Inc, C=US",
"issuer_cn": "DigiCert TLS RSA SHA256 2020 CA1",
"issuer_org": [
"DigiCert Inc"
],
"fingerprint_hash": {
"md5": "c5208a47259d540a6e3404dddb85af91",
"sha1": "df81dfa6b61eafdffffe1a250240db5d2e6cee25",
"sha256": "7f2fe8d6b18e9a47839256cd97938daa70e8515750298ddba2f3f4b8440113fc"
},
"tls_connection": "ctls",
"sni": "example.com"
}
tlsx поддерживает загрузку результатов сканирования на панель ProjectDiscovery Cloud Platform (PDCP) для визуализации и анализа.
Включите загрузку на панель, чтобы результаты автоматически загружались по мере их обнаружения:```console $ tlsx -u example.com -pd -json
Результаты будут автоматически загружены в PDCP, и вы получите URL-адрес панели мониторинга для их просмотра.
#### Загрузка существующего файла
Загрузите ранее сохранённый выходной файл JSONL в PDCP:```console
$ tlsx -pdu results.jsonl -tid your-team-id -aname "My Scan"
-pd, --dashboard: Включить загрузку в реальном времени на дашборд PDCP-pdu, --dashboard-upload <file>: Загрузить конкретный файл JSONL в PDCP-auth <key>: API-ключ PDCP (также можно задать через переменные окружения или обработчик учётных данных)-tid, --team-id <id>: Указать ID команды для загрузок-aid, --asset-id <id>: Загрузить в существующий ID актива-aname, --asset-name <name>: Задать собственное имя для группы активовПример со всеми параметрами:```console $ tlsx -u example.com -pd -json -tid team123 -aname "Production Scan"
## Конфигурация
### Режим сканирования
tlsx предоставляет несколько режимов для установления TLS-соединения -
- `auto` (автоматический переход на другие режимы при сбое) - **по умолчанию**
- `ctls` (**[crypto/tls](https://github.com/golang/go/blob/master/src/crypto/tls/tls.go)**)
- `ztls` (**[zcrypto/tls](https://github.com/zmap/zcrypto)**)
- `openssl` (**[openssl](https://github.com/openssl/openssl)**)
Некоторые указания по конкретному режиму / библиотеке приведены в [связанных обсуждениях](https://github.com/projectdiscovery/tlsx/discussions/2), режим `auto` поддерживается для обеспечения максимального охвата и сканирования хостов, работающих на более старой версии TLS, путем повторной попытки подключения с использованием режимов `ztls` и `openssl` при любой ошибке подключения.
Пример использования режима `ztls` для сканирования веб-сайта, использующего старую / устаревшую версию TLS.```console
$ echo tls-v1-0.badssl.com | tlsx -port 1010 -sm ztls
_____ _ _____ __
|_ _| | / __\ \/ /
| | | |__\__ \> <
|_| |____|___/_/\_\ v0.0.1
projectdiscovery.io
[WRN] Use with caution. You are responsible for your actions.
[WRN] Developers assume no liability and are not responsible for any misuse or damage.
tls-v1-0.badssl.com:1010
Для использования режима подключения через openssl вам потребуется установить openssl в вашей системе. Большинство современных систем поставляются с предустановленным openssl, но если он отсутствует в вашей системе, вы можете установить его вручную. Проверить, установлен ли openssl, можно выполнив команду openssl version. Если openssl установлен, эта команда отобразит номер версии.
Pre-Handshake (Досрочное завершение)tlsx поддерживает преждевременное завершение SSL-соединения, что обеспечивает более быстрое сканирование и меньшее количество запросов на подключение (отключение после получения Для получения дополнительной информации обратитесь к Hunting-Certificates-And-Servers от @erbbysam Пример использования режима |_ | | / \ / / | | | |_ > < || ||/_/_\ v0.0.1 [WRN] Use with caution. You are responsible for your actions. [WRN] Developers assume no liability and are not responsible for any misuse or damage. example.com:443 Пользовательский шифрПользовательский шифр можно задать с помощью флага БлагодарностиЭта программа опционально использует:
tlsx создан с ❤️ командой projectdiscovery и распространяется под лицензией MIT. Потоковая передача журналов Certificate Transparency (CT)
Включите режим журналов CT с помощью флага По умолчанию дубликаты отсеиваются с помощью большого инверсного фильтра Блума. Передайте |