# Features

## SSH

### Differentiators

- checks supported Diffie-Hellman (group exchange) key sizes

- checks supported host certificates, X.509 certificates and chains

- analyzes server protocol version string to identify application server vendor and version

### Versions

- SSH 2.0

### Analyzers

Supported analyzers by cryptographic protocol versions

Analyzers | SSH 2.0
--- | ---
Cipher Suites (`ciphers`) | ✓
Diffie-Hellman parameters (`dhparams`) | ✓
Host Keys, Host/X.509 Certificates and Chains (`pubkeys`) | ✓
Vulnerabilities (`vulns`) | ✓

### Vulnerabilities

- D(HE)at attack

- Terrapin attack

- Logjam attack

- FREAK attack

- RC4 ciphers

- Sweet32 attack

- anonymous Diffie-Hellman ciphers

- early SSH versions

- non-forward-secret ciphers

- null encryption ciphers

## SSL/TLS

### Differentiators

- checks 10+ application layer protocols with opportunistic TLS capability

- checks 400+ cipher suites, more than discussed on ciphersuite.info, or supported by GnuTls, LibreSSL, OpenSSL, or wolfSSL

- checks GOST (national standards of the Russian Federation and CIS countries) cipher suites

- checks post-quantum elliptic curves (Kyber)

- checks TLS 1.3 draft versions, not just final version

- checks whether Diffie-Hellman

  - public parameter is a safe prime

  - public parameter is defined in an RFC (e.g., FFDHE, MODP) or used by an application server as a builtin parameter

  - key exchange supports RFC 7919 (FFDHE)

  - key is reused

### Analyzers

Supported analyzers by cryptographic protocol versions

Analyzers | SSL | TLS
--- | --- | ---
| 2.0 | 3.0 | 1.0 | 1.1 | 1.2 | 1.3
Cipher Suites (`ciphers`) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓
X.509 Public Keys (`pubkeys`) | ✓ | ✓ | ✓ | ✓ | ✓ | ✗
X.509 Public Keys Request (`pubkeyreq`) | n/a | ✓ | ✓ | ✓ | ✓ | ✗
Diffie-Hellman parameters (`dhparams`) | n/a | ✓ | ✓ | ✓ | ✓ | ✓
Elliptic-Curves (`curves`) | n/a | n/a | ✓ | ✓ | ✓ | ✓
Signature Algorithms (`sigalgos`) | n/a | n/a | n/a | ✓ | ✓ | ✓
Extensions (`extensions`) | n/a | n/a | n/a | n/a | ✓ | ✓
Vulnerabilities (`vulns`) | n/a | n/a | n/a | n/a | n/a | n/a
Simulations (`simulations`) | n/a | n/a | n/a | n/a | n/a | n/a

Opportunistic TLS or STARTTLS) which is an extension of an application layer protocol – offering a way to upgrade a plain text connection to an encrypted one without using a separate port - is supported in the case of the following application layer protocols.

> - FTP

> - IMAP

> - LDAP

> - LMTP

> - MySQL

> - NNTP

> - OpenVPN

> - POP3

> - PostgreSQL

> - RDP

> - Sieve

> - SMTP

> - XMPP (Jabber)

### Versions

- Transport Layer

  - Secure Socket Layer (SSL)

    - SSL 2.0

    - SSL 3.0

  - Transport Layer Security (TLS)

    - TLS 1.0

    - TLS 1.1

    - TLS 1.2

    - TLS 1.3

### Curves

- check post-quantum (PQC) algorithms

  `KYBER_512_R3`, `KYBER_768_R3`, `KYBER_1024_R3`,
  `SECP256R1_KYBER_512_R3`, `SECP256R1_KYBER_768_R3`,
  `SECP384R1_KYBER_768_R3`, `SECP521R1_KYBER_1024_R3`,
  `SECP256R1_ML_KEM_768`,
  `X25519_KYBER_512_R3`, `X25519_KYBER_768_R3`,
  `X25519_KYBER_512_R3_CLOUDFLARE`,
  `X25519_KYBER_768_R3_CLOUDFLARE`,
  `X25519_ML_KEM_768`

### Extensions

- application-layer protocol negotiation

- encrypt-then-MAC

- extended master secret

- next protocols negotiation

- renegotiation indication

- session ticket

- internal clock accuracy

### Public Keys

- validation against notable trusted root CA certificates stores

  - Apple

  - Google

  - Microsoft

  - Mozilla

- revocation check

  - certificate Revocation List (CRL)

  - certificate status (OCSP, OCSP stapling)

- extensions

  - TLS feature (e.g. OCSP must staple)

  - extended validation

- certificate transparency (CT)

  - timestamp information

  - transparency log information

### Vulnerabilities

- D(HE)at attack

- DROWN attack

- FREAK attack

- Logjam attack

- Lucky Thirteen attack

- RC4 ciphers

- Sweet32 attack

- anonymous Diffie-Hellman ciphers

- inappropriate version fallback

- early TLS versions

- insecure SSL versions

- export grade ciphers

- non-forward-secret ciphers

- null encryption ciphers

### Simulated Clients

- TLS

  - Chromium

  - Firefox

  - Opera

### Fingerprinting

1. generates JA3 tag of any connecting TLS client independently from its type (graphical/cli, browser/email client/…)

   - FTP

   - IMAP

   - LDAP

   - LMTP

   - MySQL

   - NNTP

   - OpenVPN

   - POP3

   - PostgreSQL

   - RDP

   - Sieve

   - SMTP

   - XMPP (Jabber)

2. decodes existing JA3 tags by showing human-readable format of the TLS parameters represented by the tag

3. generates HASSH tag) of SSH clients

## Hypertext Transfer Protocol (HTTP)

### Analyzers

### Headers

- generic headers

  - Content-Type

  - NEL (Network Error Logging)

  - Server

  - Set-Cookie

- caching headers

  - Age

  - Cache-Control

  - Date

  - ETag

  - Expires

  - Last-Modified

  - Pragma

- security headers

  - Content Security Policy (CSP)

  - Content-Security-Policy-Report-Only

  - Expect-CT

  - Expect-Staple

  - HTTP Public Key Pinning (HPKP)

  - Referrer-Policy

  - Strict-Transport-Security

  - X-Content-Type-Options

  - X-Frame-Options

  - X-XSS-Protection

- content security

  - subresource integrity

  - mixed content

## Internet Key Exchange (IKE)

### Versions

- IKEv1

- IKEv2

### Analyzers

Supported analyzers by cryptographic protocol versions

Analyzers | IKEv1 | IKEv2
--- | --- | ---
Diffie-Hellman parameters (`dhparams`) | ✓ | ✓
Elliptic-Curves (`curves`) | ✓ | ✓

## DNS

### Differentiators

- extract (public key) and analyze (key type, size) DNSSEC signing keys

### Analyzers

- e-mail authentication, reporting related records

  - Domain-based Message Authentication, Reporting, and Conformance (DMARC)

  - Sender Policy Framework (SPF)

  - SMTP MTA Strict Transport Security (MTA-STS)

  - SMTP TLS Reporting (TLSRPT)

- DNSSEC records

  - DNSKEY

  - DS

  - RRSIG